Skip to content

Commit bf0160a

Browse files
committed
Merge branch 'main' into luca_joss/demo-cli-send-packet-to-ics20
2 parents fd1976a + 01ffff4 commit bf0160a

File tree

22 files changed

+418
-300
lines changed

22 files changed

+418
-300
lines changed

cairo-contracts/packages/apps/src/tests/transfer.cairo

+33-21
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use TokenTransferComponent::TransferValidationTrait;
22
use openzeppelin_testing::events::EventSpyExt;
33
use snforge_std::cheatcodes::events::EventSpy;
4-
use snforge_std::spy_events;
4+
use snforge_std::{spy_events, start_cheat_caller_address};
55
use starknet::class_hash::class_hash_const;
66
use starknet_ibc_apps::transfer::ERC20Contract;
77
use starknet_ibc_apps::transfer::TokenTransferComponent::{
@@ -12,7 +12,8 @@ use starknet_ibc_core::router::{AppContract, AppContractTrait};
1212
use starknet_ibc_testkit::configs::{TransferAppConfigTrait, TransferAppConfig};
1313
use starknet_ibc_testkit::dummies::CLASS_HASH;
1414
use starknet_ibc_testkit::dummies::{
15-
AMOUNT, SUPPLY, OWNER, NAME, SYMBOL, COSMOS, STARKNET, HOSTED_DENOM, EMPTY_MEMO
15+
AMOUNT, SUPPLY, OWNER, SN_USER, CS_USER, NAME, SYMBOL, COSMOS, STARKNET, HOSTED_DENOM,
16+
EMPTY_MEMO
1617
};
1718
use starknet_ibc_testkit::event_spy::TransferEventSpyExt;
1819
use starknet_ibc_testkit::handles::{ERC20Handle, AppHandle};
@@ -79,21 +80,23 @@ fn test_missing_ibc_token_address() {
7980
fn test_escrow_ok() {
8081
let (ics20, mut erc20, cfg, mut spy) = setup();
8182

82-
// Owner approves the amount of allowance for the `TransferApp` contract.
83-
erc20.approve(OWNER(), ics20.address, cfg.amount);
83+
start_cheat_caller_address(ics20.address, SN_USER());
8484

85-
let msg_transfer = cfg.dummy_msg_transfer(cfg.native_denom.clone(), STARKNET(), COSMOS());
85+
// User approves the amount of allowance for the `TransferApp` contract.
86+
erc20.approve(SN_USER(), ics20.address, cfg.amount);
87+
88+
let msg_transfer = cfg.dummy_msg_transfer(cfg.native_denom.clone(), CS_USER());
8689

8790
call_contract(ics20.address, selector!("send_transfer_internal"), @msg_transfer);
8891

8992
// Assert the `SendEvent` emitted.
9093
spy
9194
.assert_send_event(
92-
ics20.address, STARKNET(), COSMOS(), cfg.native_denom.clone(), cfg.amount
95+
ics20.address, SN_USER(), CS_USER(), cfg.native_denom.clone(), cfg.amount
9396
);
9497

9598
// Check the balance of the sender.
96-
erc20.assert_balance(OWNER(), SUPPLY - cfg.amount);
99+
erc20.assert_balance(SN_USER(), SUPPLY - cfg.amount);
97100

98101
// Check the balance of the transfer contract.
99102
erc20.assert_balance(ics20.address, cfg.amount);
@@ -103,15 +106,19 @@ fn test_escrow_ok() {
103106
fn test_unescrow_ok() {
104107
let (ics20, mut erc20, cfg, mut spy) = setup();
105108

106-
// Owner approves the amount of allowance for the `TransferApp` contract.
107-
erc20.approve(OWNER(), ics20.address, cfg.amount);
109+
start_cheat_caller_address(ics20.address, SN_USER());
110+
111+
// User approves the amount of allowance for the `TransferApp` contract.
112+
erc20.approve(SN_USER(), ics20.address, cfg.amount);
108113

109-
let msg_transfer = cfg.dummy_msg_transfer(cfg.native_denom.clone(), STARKNET(), COSMOS());
114+
let msg_transfer = cfg.dummy_msg_transfer(cfg.native_denom.clone(), CS_USER());
110115

111116
call_contract(ics20.address, selector!("send_transfer_internal"), @msg_transfer);
112117

113118
spy.drop_all_events();
114119

120+
start_cheat_caller_address(ics20.address, OWNER());
121+
115122
let prefixed_denom = cfg.prefix_native_denom();
116123

117124
let recv_packet = cfg.dummy_packet(prefixed_denom.clone(), COSMOS(), STARKNET());
@@ -120,12 +127,12 @@ fn test_unescrow_ok() {
120127
ics20.on_recv_packet(recv_packet);
121128

122129
// Assert the `RecvEvent` emitted.
123-
spy.assert_recv_event(ics20.address, COSMOS(), STARKNET(), prefixed_denom, cfg.amount, true);
130+
spy.assert_recv_event(ics20.address, CS_USER(), SN_USER(), prefixed_denom, cfg.amount, true);
124131

125132
erc20.assert_balance(ics20.address, 0);
126133

127134
// Check the balance of the recipient.
128-
erc20.assert_balance(OWNER(), SUPPLY);
135+
erc20.assert_balance(SN_USER(), SUPPLY);
129136
}
130137

131138
#[test]
@@ -147,7 +154,7 @@ fn test_mint_ok() {
147154
// Assert the `RecvEvent` emitted.
148155
spy
149156
.assert_recv_event(
150-
ics20.address, COSMOS(), STARKNET(), prefixed_denom.clone(), cfg.amount, true
157+
ics20.address, CS_USER(), SN_USER(), prefixed_denom.clone(), cfg.amount, true
151158
);
152159

153160
spy.drop_all_events();
@@ -158,13 +165,13 @@ fn test_mint_ok() {
158165
// Assert the `RecvEvent` emitted.
159166
spy
160167
.assert_recv_event(
161-
ics20.address, COSMOS(), STARKNET(), prefixed_denom.clone(), cfg.amount, true
168+
ics20.address, CS_USER(), SN_USER(), prefixed_denom.clone(), cfg.amount, true
162169
);
163170

164171
let erc20: ERC20Contract = token_address.into();
165172

166173
// Check the balance of the receiver.
167-
erc20.assert_balance(OWNER(), cfg.amount * 2);
174+
erc20.assert_balance(SN_USER(), cfg.amount * 2);
168175

169176
// Check the total supply of the ERC20 contract.
170177
erc20.assert_total_supply(cfg.amount * 2);
@@ -183,30 +190,35 @@ fn test_burn_ok() {
183190

184191
let token_address = ics20.ibc_token_address(prefixed_denom.key());
185192

186-
let erc20: ERC20Contract = token_address.into();
193+
let mut erc20: ERC20Contract = token_address.into();
187194

188195
spy.drop_all_events();
189196

190-
let msg_transfer = cfg.dummy_msg_transfer(prefixed_denom.clone(), STARKNET(), COSMOS());
197+
start_cheat_caller_address(ics20.address, SN_USER());
198+
199+
// User approves the amount of allowance for the `TransferApp` contract.
200+
erc20.approve(SN_USER(), ics20.address, cfg.amount);
201+
202+
let msg_transfer = cfg.dummy_msg_transfer(prefixed_denom.clone(), CS_USER());
191203

192204
call_contract(ics20.address, selector!("send_transfer_internal"), @msg_transfer);
193205

194206
// Assert the `SendEvent` emitted.
195-
spy.assert_send_event(ics20.address, STARKNET(), COSMOS(), prefixed_denom, cfg.amount);
207+
spy.assert_send_event(ics20.address, SN_USER(), CS_USER(), prefixed_denom, cfg.amount);
196208

197209
// Check the balance of the sender.
198-
erc20.assert_balance(OWNER(), 0);
210+
erc20.assert_balance(SN_USER(), 0);
199211

200212
// Check the balance of the `TransferApp` contract.
201213
erc20.assert_balance(ics20.address, 0);
202214

203-
// Chekck the total supply of the ERC20 contract.
215+
// Check the total supply of the ERC20 contract.
204216
erc20.assert_total_supply(0);
205217
}
206218

207219
#[test]
208220
#[should_panic(expected: 'ICS20: missing token address')]
209221
fn test_burn_non_existence_ibc_token() {
210222
let state = setup_component();
211-
state.burn_validate(OWNER(), HOSTED_DENOM(), AMOUNT, EMPTY_MEMO());
223+
state.burn_validate(SN_USER(), HOSTED_DENOM(), AMOUNT, EMPTY_MEMO());
212224
}

0 commit comments

Comments
 (0)