Skip to content

Commit

Permalink
update existing tests
Browse files Browse the repository at this point in the history
  • Loading branch information
NotJeremyLiu committed Jan 4, 2024
1 parent 6abdc31 commit b4a5115
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 134 deletions.
65 changes: 17 additions & 48 deletions contracts/adapters/swap/astroport/tests/test_execute_receive.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
use astroport::{
asset::AssetInfo,
router::{ExecuteMsg as RouterExecuteMsg, SwapOperation as AstroportSwapOperation},
};
use core::panic;
use cosmwasm_std::{
testing::{mock_dependencies, mock_env, mock_info},
to_json_binary, Addr, Coin, ContractResult as SystemContractResult, Decimal, QuerierResult,
to_json_binary, Addr, Coin, ContractResult as SystemContractResult, QuerierResult,
ReplyOn::Never,
SubMsg, SystemResult, Uint128, WasmMsg, WasmQuery,
};
use cw20::{BalanceResponse, Cw20Coin, Cw20ExecuteMsg, Cw20ReceiveMsg};
use cw20::{BalanceResponse, Cw20Coin, Cw20ReceiveMsg};
use cw_utils::PaymentError::NonPayable;
use skip::{
asset::Asset,
Expand All @@ -18,7 +14,7 @@ use skip::{
};
use skip_api_swap_adapter_astroport::{
error::{ContractError, ContractResult},
state::{ENTRY_POINT_CONTRACT_ADDRESS, ROUTER_CONTRACT_ADDRESS},
state::ENTRY_POINT_CONTRACT_ADDRESS,
};
use test_case::test_case;

Expand Down Expand Up @@ -64,25 +60,13 @@ struct Params {
SubMsg {
id: 0,
msg: WasmMsg::Execute {
contract_addr: "neutron123".to_string(),
msg: to_json_binary(&Cw20ExecuteMsg::Send {
contract: "router_contract".to_string(),
amount: Uint128::from(100u128),
msg: to_json_binary(&RouterExecuteMsg::ExecuteSwapOperations {
operations: vec![
AstroportSwapOperation::AstroSwap {
offer_asset_info: AssetInfo::Token {
contract_addr: Addr::unchecked("neutron123"),
},
ask_asset_info: AssetInfo::NativeToken {
denom: "ua".to_string(),
},
}
],
minimum_receive: None,
to: None,
max_spread: Some(Decimal::percent(50)),
})?,
contract_addr: "swap_contract_address".to_string(),
msg: to_json_binary(&ExecuteMsg::AstroportPoolSwap {
operation: SwapOperation {
pool: "pool_1".to_string(),
denom_in: "neutron123".to_string(),
denom_out: "ua".to_string(),
}
})?,
funds: vec![],
}.into(),
Expand Down Expand Up @@ -126,25 +110,13 @@ struct Params {
SubMsg {
id: 0,
msg: WasmMsg::Execute {
contract_addr: "neutron123".to_string(),
msg: to_json_binary(&Cw20ExecuteMsg::Send {
contract: "router_contract".to_string(),
amount: Uint128::from(100u128),
msg: to_json_binary(&RouterExecuteMsg::ExecuteSwapOperations {
operations: vec![
AstroportSwapOperation::AstroSwap {
offer_asset_info: AssetInfo::Token {
contract_addr: Addr::unchecked("neutron123"),
},
ask_asset_info: AssetInfo::Token {
contract_addr: Addr::unchecked("neutron987"),
},
}
],
minimum_receive: None,
to: None,
max_spread: Some(Decimal::percent(50)),
})?,
contract_addr: "swap_contract_address".to_string(),
msg: to_json_binary(&ExecuteMsg::AstroportPoolSwap {
operation: SwapOperation {
pool: "pool_1".to_string(),
denom_in: "neutron123".to_string(),
denom_out: "neutron987".to_string(),
}
})?,
funds: vec![],
}.into(),
Expand Down Expand Up @@ -223,9 +195,6 @@ fn test_execute_swap(params: Params) -> ContractResult<()> {
// Store the entry point contract address
ENTRY_POINT_CONTRACT_ADDRESS.save(deps.as_mut().storage, &Addr::unchecked("entry_point"))?;

// Store the router contract address
ROUTER_CONTRACT_ADDRESS.save(deps.as_mut().storage, &Addr::unchecked("router_contract"))?;

// Call execute_swap with the given test parameters
let res = skip_api_swap_adapter_astroport::contract::execute(
deps.as_mut(),
Expand Down
124 changes: 38 additions & 86 deletions contracts/adapters/swap/astroport/tests/test_execute_swap.rs
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
use astroport::{
asset::AssetInfo,
router::{ExecuteMsg as RouterExecuteMsg, SwapOperation as AstroportSwapOperation},
};
use cosmwasm_std::{
testing::{mock_dependencies, mock_env, mock_info},
to_json_binary, Addr, Coin, Decimal,
to_json_binary, Addr, Coin,
ReplyOn::Never,
SubMsg, WasmMsg,
};
use skip::swap::{ExecuteMsg, SwapOperation};
use skip_api_swap_adapter_astroport::{
error::{ContractError, ContractResult},
state::{ENTRY_POINT_CONTRACT_ADDRESS, ROUTER_CONTRACT_ADDRESS},
state::ENTRY_POINT_CONTRACT_ADDRESS,
};
use test_case::test_case;

Expand All @@ -21,7 +17,7 @@ Test Cases:
Expect Success
- One Swap Operation
- Multiple Swap Operations
- No Swap Operations (This is prevented in the entry point contract; and will fail on Astroport router if attempted)
- No Swap Operations (This is prevented in the entry point contract; and will not add any swap messages to the response)
Expect Error
- Unauthorized Caller (Only the stored entry point contract can call this function)
Expand Down Expand Up @@ -55,25 +51,16 @@ struct Params {
SubMsg {
id: 0,
msg: WasmMsg::Execute {
contract_addr: "router_contract".to_string(),
msg: to_json_binary(&RouterExecuteMsg::ExecuteSwapOperations {
operations: vec![
AstroportSwapOperation::AstroSwap {
offer_asset_info: AssetInfo::NativeToken {
denom: "os".to_string(),
},
ask_asset_info: AssetInfo::NativeToken {
denom: "ua".to_string(),
},
}
],
minimum_receive: None,
to: None,
max_spread: Some(Decimal::percent(50)),
contract_addr: "swap_contract_address".to_string(),
msg: to_json_binary(&ExecuteMsg::AstroportPoolSwap {
operation: SwapOperation {
pool: "pool_1".to_string(),
denom_in: "os".to_string(),
denom_out: "ua".to_string(),
}
})?,
funds: vec![Coin::new(100, "os")],
}
.into(),
funds: vec![],
}.into(),
gas_limit: None,
reply_on: Never,
},
Expand Down Expand Up @@ -112,76 +99,35 @@ struct Params {
}
],
expected_messages: vec![
SubMsg {
id: 0,
msg: WasmMsg::Execute {
contract_addr: "router_contract".to_string(),
msg: to_json_binary(&RouterExecuteMsg::ExecuteSwapOperations {
operations: vec![
AstroportSwapOperation::AstroSwap {
offer_asset_info: AssetInfo::NativeToken {
denom: "os".to_string(),
},
ask_asset_info: AssetInfo::NativeToken {
denom: "ua".to_string(),
},
},
AstroportSwapOperation::AstroSwap {
offer_asset_info: AssetInfo::NativeToken {
denom: "ua".to_string(),
},
ask_asset_info: AssetInfo::NativeToken {
denom: "un".to_string(),
},
}
],
minimum_receive: None,
to: None,
max_spread: Some(Decimal::percent(50)),
})?,
funds: vec![Coin::new(100, "os")],
}
.into(),
gas_limit: None,
reply_on: Never,
},
SubMsg {
id: 0,
msg: WasmMsg::Execute {
contract_addr: "swap_contract_address".to_string(),
msg: to_json_binary(&ExecuteMsg::TransferFundsBack {
return_denom: "un".to_string(),
swapper: Addr::unchecked("entry_point"),
msg: to_json_binary(&ExecuteMsg::AstroportPoolSwap {
operation: SwapOperation {
pool: "pool_1".to_string(),
denom_in: "os".to_string(),
denom_out: "ua".to_string(),
}
})?,
funds: vec![],
}
.into(),
}.into(),
gas_limit: None,
reply_on: Never,
},
],
expected_error: None,
};
"Multiple Swap Operations")]
#[test_case(
Params {
caller: "entry_point".to_string(),
info_funds: vec![Coin::new(100, "os")],
swap_operations: vec![],
expected_messages: vec![
SubMsg {
id: 0,
msg: WasmMsg::Execute {
contract_addr: "router_contract".to_string(),
msg: to_json_binary(&RouterExecuteMsg::ExecuteSwapOperations {
operations: vec![],
minimum_receive: None,
to: None,
max_spread: Some(Decimal::percent(50)),
contract_addr: "swap_contract_address".to_string(),
msg: to_json_binary(&ExecuteMsg::AstroportPoolSwap {
operation: SwapOperation {
pool: "pool_2".to_string(),
denom_in: "ua".to_string(),
denom_out: "un".to_string(),
}
})?,
funds: vec![Coin::new(100, "os")],
}
.into(),
funds: vec![],
}.into(),
gas_limit: None,
reply_on: Never,
},
Expand All @@ -190,7 +136,7 @@ struct Params {
msg: WasmMsg::Execute {
contract_addr: "swap_contract_address".to_string(),
msg: to_json_binary(&ExecuteMsg::TransferFundsBack {
return_denom: "ua".to_string(),
return_denom: "un".to_string(),
swapper: Addr::unchecked("entry_point"),
})?,
funds: vec![],
Expand All @@ -200,6 +146,15 @@ struct Params {
reply_on: Never,
},
],
expected_error: None,
};
"Multiple Swap Operations")]
#[test_case(
Params {
caller: "entry_point".to_string(),
info_funds: vec![Coin::new(100, "os")],
swap_operations: vec![],
expected_messages: vec![],
expected_error: Some(ContractError::SwapOperationsEmpty),
};
"No Swap Operations")]
Expand Down Expand Up @@ -252,9 +207,6 @@ fn test_execute_swap(params: Params) -> ContractResult<()> {
// Store the entry point contract address
ENTRY_POINT_CONTRACT_ADDRESS.save(deps.as_mut().storage, &Addr::unchecked("entry_point"))?;

// Store the router contract address
ROUTER_CONTRACT_ADDRESS.save(deps.as_mut().storage, &Addr::unchecked("router_contract"))?;

// Call execute_swap with the given test parameters
let res = skip_api_swap_adapter_astroport::contract::execute(
deps.as_mut(),
Expand Down

0 comments on commit b4a5115

Please sign in to comment.