Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/tokenized_bond.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -496,13 +496,13 @@ pub mod TokenizedBond {
}

fn is_inter_transfer_after_expiry(
self: @ContractState, token_id: u256, receiever: ContractAddress,
self: @ContractState, token_id: u256, receiver: ContractAddress,
) -> bool {
if !self.tokens.entry(token_id).read().token_itr_expiry_paused {
return true;
}
if self.tokens.entry(token_id).read().expiration_date > get_block_timestamp()
|| self.tokens.entry(token_id).read().minter == receiever {
|| self.tokens.entry(token_id).read().minter == receiver {
return true;
}
return false;
Expand Down
64 changes: 64 additions & 0 deletions tests/lib.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,7 @@ fn test_pause_itr_after_expiry() {
spy.assert_emitted(@array![(tokenized_bond.contract_address, expected_tokenized_bond_event)]);
}

#[test]
fn test_freeze_token_success() {
let mut tokenized_bond = ITokenizedBondDispatcher { contract_address: setup() };
let minter = setup_receiver();
Expand Down Expand Up @@ -956,3 +957,66 @@ fn test_upgrade_not_owner() {
let (tokenized_bond, _minter) = setup_contract_with_minter();
tokenized_bond.upgrade(class_hash_const::<'UPGRADE'>());
}

#[test]
fn test_make_transfer_with_inter_transfer_not_paused() {
let (tokenized_bond, minter) = setup_contract_with_minter();
let receiver = setup_receiver();
let transfer = setup_transfer(from: minter, to: receiver, amount: AMOUNT_TRANSFERRED());

start_cheat_caller_address(tokenized_bond.contract_address, minter);
tokenized_bond.make_transfer(transfer);
}

#[test]
fn test_make_transfer_when_paused_sender_is_minter() {
let (tokenized_bond, minter) = setup_contract_with_minter();
let receiver = setup_receiver();
let transfer = setup_transfer(from: minter, to: receiver, amount: AMOUNT_TRANSFERRED());

start_cheat_caller_address(tokenized_bond.contract_address, OWNER());
tokenized_bond.pause_inter_transfer(TOKEN_ID());

start_cheat_caller_address(tokenized_bond.contract_address, minter);
tokenized_bond.make_transfer(transfer);
}

#[test]
fn test_make_transfer_when_paused_receiver_is_minter() {
let (tokenized_bond, minter) = setup_contract_with_minter();
let from = address_with_tokens(tokenized_bond, minter);
let transfer = setup_transfer(from: from, to: minter, amount: AMOUNT_TRANSFERRED());

start_cheat_caller_address(tokenized_bond.contract_address, OWNER());
tokenized_bond.pause_inter_transfer(TOKEN_ID());

start_cheat_caller_address(tokenized_bond.contract_address, from);
tokenized_bond.make_transfer(transfer);
}

#[test]
fn test_make_transfer_before_expiry_when_expiry_paused() {
let (tokenized_bond, minter) = setup_contract_with_minter();
let receiver = setup_receiver();
let transfer = setup_transfer(from: minter, to: receiver, amount: AMOUNT_TRANSFERRED());

start_cheat_caller_address(tokenized_bond.contract_address, OWNER());
tokenized_bond.pause_itr_after_expiry(TOKEN_ID());

start_cheat_caller_address(tokenized_bond.contract_address, minter);
tokenized_bond.make_transfer(transfer);
}

#[test]
fn test_make_transfer_after_expiry_when_paused_to_minter() {
let (tokenized_bond, minter) = setup_contract_with_minter();
let from = address_with_tokens(tokenized_bond, minter);
let transfer = setup_transfer(from: from, to: minter, amount: AMOUNT_TRANSFERRED());

start_cheat_caller_address(tokenized_bond.contract_address, OWNER());
tokenized_bond.pause_itr_after_expiry(TOKEN_ID());

start_cheat_block_timestamp_global(TIME_IN_THE_FUTURE() + 1);
start_cheat_caller_address(tokenized_bond.contract_address, from);
tokenized_bond.make_transfer(transfer);
}