Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 0 additions & 2 deletions contracts/vault/src/benji_strategy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,6 @@ impl StrategyTrait for BenjiStrategy {
// once the Franklin Templeton BENJI contract address is confirmed on Stellar mainnet.
// The 1:1 assumption holds as long as BENJI NAV ≈ 1 USD; update total_value for
// non-unity NAV by querying an oracle for the BENJI/USDC exchange rate.
let benji_client = token::Client::new(&env, &benji_addr);
benji_client.mint(&env.current_contract_address(), &amount);
}

fn withdraw(env: Env, amount: i128) {
Expand Down
9 changes: 5 additions & 4 deletions contracts/vault/src/emergency.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ pub fn require_distinct_approvers(primary: &Address, secondary: &Address) {
/// `EmergencyUnwindResult` with simulated outcomes
pub fn simulate_emergency_unwind(
total_assets: i128,
strategy_count: u32,
_strategy_count: u32,
estimated_slippage_bps: i128,
estimated_fee_bps: i128,
) -> EmergencyUnwindResult {
Expand Down Expand Up @@ -149,20 +149,21 @@ pub fn simulate_emergency_unwind(
#[cfg(test)]
mod tests {
use super::*;
use soroban_sdk::testutils::Address as TestAddress;

#[test]
fn test_distinct_approvers_required() {
let env = Env::default();
let a = Address::generate(&env);
let b = Address::generate(&env);
let a = <soroban_sdk::Address as TestAddress>::generate(&env);
let b = <soroban_sdk::Address as TestAddress>::generate(&env);
require_distinct_approvers(&a, &b);
}

#[test]
#[should_panic(expected = "approvers must be distinct")]
fn test_same_approver_rejected() {
let env = Env::default();
let a = Address::generate(&env);
let a = <soroban_sdk::Address as TestAddress>::generate(&env);
require_distinct_approvers(&a, &a);
}

Expand Down
13 changes: 5 additions & 8 deletions contracts/vault/src/feature_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,7 @@ fn test_dual_approval_emergency_pause() {
env.ledger().set_timestamp(env.ledger().timestamp() + 3_601);

vault
.confirm_emergency_action(&secondary, &proposal_id)
.unwrap();
.confirm_emergency_action(&secondary, &proposal_id);

assert!(vault.is_paused());
assert_eq!(vault.pause_reason(), Some(PauseReason::SecurityIncident));
Expand Down Expand Up @@ -180,8 +179,7 @@ fn test_confirm_allowed_after_dispute_window() {

env.ledger().set_timestamp(env.ledger().timestamp() + 3_601);
vault
.confirm_emergency_action(&secondary, &proposal_id)
.unwrap();
.confirm_emergency_action(&secondary, &proposal_id);
assert!(vault.is_paused());
}

Expand All @@ -203,7 +201,7 @@ fn test_admin_can_cancel_during_dispute_window() {
&None,
);

vault.cancel_emergency_action(&proposal_id).unwrap();
vault.cancel_emergency_action(&proposal_id);

let proposal = vault.emergency_proposal(&proposal_id).unwrap();
assert!(proposal.cancelled);
Expand All @@ -228,7 +226,7 @@ fn test_cancelled_proposal_cannot_be_confirmed() {
&None,
);

vault.cancel_emergency_action(&proposal_id).unwrap();
vault.cancel_emergency_action(&proposal_id);

// Even after the window passes, a cancelled proposal must be rejected.
env.ledger().set_timestamp(env.ledger().timestamp() + 3_601);
Expand Down Expand Up @@ -305,7 +303,6 @@ fn test_custom_dispute_window_respected() {
// Allowed after 10 minutes.
env.ledger().set_timestamp(env.ledger().timestamp() + 61);
vault
.confirm_emergency_action(&secondary, &proposal_id)
.unwrap();
.confirm_emergency_action(&secondary, &proposal_id);
assert!(vault.is_paused());
}
Loading