Skip to content

Commit

Permalink
Merge pull request #62 from argentlabs/consistent-check-for-claimed-o…
Browse files Browse the repository at this point in the history
…r-cancelled

Consistent check for claimed or cancelled
  • Loading branch information
sgc-code authored Jul 9, 2024
2 parents 20e0348 + 86142ed commit b2d62fb
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 24 deletions.
2 changes: 1 addition & 1 deletion src/contracts/escrow_library.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ mod EscrowLibrary {
let contract_address = get_contract_address();
assert(get_caller_address() == gift.sender, 'escr-lib/wrong-sender');
let gift_balance = balance_of(gift.gift_token, contract_address);
assert(gift_balance > 0, 'escr-lib/already-claimed');
assert(gift_balance >= gift.gift_amount, 'escr-lib/claimed-or-cancel');
if gift.gift_token == gift.fee_token {
// Sender also gets the dust
transfer_from_account(gift.gift_token, gift.sender, gift_balance);
Expand Down
28 changes: 5 additions & 23 deletions tests-integration/cancel.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,33 +75,15 @@ describe("Cancel Gift", function () {
);
});

it(`owner reclaim dust (gift_token == fee_token)`, async function () {
it(`already claimed (gift_token == fee_token)`, async function () {
const { factory } = await setupGiftProtocol();
const { gift, giftPrivateKey } = await defaultDepositTestSetup({ factory });
const receiver = randomReceiver();

const { transaction_hash: transaction_hash_claim } = await claimInternal({
gift,
receiver,
giftPrivateKey,
});
const txFeeCancelGift = BigInt((await manager.getTransactionReceipt(transaction_hash_claim)).actual_fee.amount);

const escrowAddress = calculateEscrowAddress(gift);

const balanceSenderBefore = await manager.tokens.tokenBalance(deployer.address, gift.gift_token);
const { transaction_hash } = await cancelGift({ gift });

const txFeeCancel = BigInt((await manager.getTransactionReceipt(transaction_hash)).actual_fee.amount);
// Check balance of the sender is correct
await manager.tokens
.tokenBalance(deployer.address, gift.gift_token)
.should.eventually.equal(balanceSenderBefore + gift.fee_amount - txFeeCancel - txFeeCancelGift);
// Check balance gift address address == 0
await manager.tokens.tokenBalance(escrowAddress, gift.gift_token).should.eventually.equal(0n);
await claimInternal({ gift, receiver, giftPrivateKey });
await expectRevertWithErrorMessage("escr-lib/claimed-or-cancel", () => cancelGift({ gift }));
});

it(`escr-lib/already-claimed (gift_token != fee_token)`, async function () {
it(`already claimed (gift_token != fee_token)`, async function () {
const mockERC20 = await deployMockERC20();
const { factory } = await setupGiftProtocol();
const { gift, giftPrivateKey } = await defaultDepositTestSetup({
Expand All @@ -111,6 +93,6 @@ describe("Cancel Gift", function () {
const receiver = randomReceiver();

await claimInternal({ gift, receiver, giftPrivateKey });
await expectRevertWithErrorMessage("escr-lib/already-claimed", () => cancelGift({ gift }));
await expectRevertWithErrorMessage("escr-lib/claimed-or-cancel", () => cancelGift({ gift }));
});
});

0 comments on commit b2d62fb

Please sign in to comment.