Skip to content

Commit

Permalink
Tests: added auction underflow panic test
Browse files Browse the repository at this point in the history
  • Loading branch information
markuspluna committed Dec 21, 2023
1 parent 685cd26 commit f9e1b9b
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ debug-assertions = true

[profile.release]
opt-level = "z"
overflow-checks = true
overflow-checks = true # DEV: Do not remove this check - doing so will create vulnerabilities
debug = 0
strip = "symbols"
debug-assertions = false
Expand Down
69 changes: 69 additions & 0 deletions test-suites/tests/test_liquidation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1121,3 +1121,72 @@ fn test_user_restore_position_and_delete_liquidation() {
);
assert!(pool_fixture.pool.try_get_auction(&0, &samwise).is_err());
}

#[test]
#[should_panic]
fn test_auction_underflow_panics() {
let fixture = create_fixture_with_data(true);
let frodo = fixture.users.get(0).unwrap();
let pool_fixture = &fixture.pools[0];

// Create a user
let samwise = Address::generate(&fixture.env); //sam will be supplying XLM and borrowing STABLE

// Mint users tokens
fixture.tokens[TokenIndex::XLM].mint(&samwise, &(500_000 * SCALAR_7));

// Supply and borrow sam tokens
let sam_requests: Vec<Request> = vec![
&fixture.env,
Request {
request_type: 2,
address: fixture.tokens[TokenIndex::XLM].address.clone(),
amount: 6_000 * SCALAR_7,
},
Request {
request_type: 4,
address: fixture.tokens[TokenIndex::STABLE].address.clone(),
amount: 200 * 10i128.pow(6),
},
];
pool_fixture
.pool
.submit(&samwise, &samwise, &samwise, &sam_requests);

//tank xlm price
fixture.oracle.set_price_stable(&vec![
&fixture.env,
1000_0000000, // eth
1_0000000, // usdc
0_0000100, // xlm
1_0000000, // stable
]);

//fully liquidate user
let liq_pct = 100;
let auction_data_2 = pool_fixture
.pool
.new_liquidation_auction(&samwise, &liq_pct);

let usdc_bid_amount = auction_data_2
.bid
.get_unchecked(fixture.tokens[TokenIndex::STABLE].address.clone());

//fill user liquidation
let fill_requests = vec![
&fixture.env,
Request {
request_type: 6,
address: samwise.clone(),
amount: 100,
},
Request {
request_type: 5,
address: fixture.tokens[TokenIndex::STABLE].address.clone(),
amount: usdc_bid_amount,
},
];
pool_fixture
.pool
.submit(&frodo, &frodo, &frodo, &fill_requests);
}

0 comments on commit f9e1b9b

Please sign in to comment.