Skip to content

Commit

Permalink
A few more ICRC-2 tests
Browse files Browse the repository at this point in the history
  • Loading branch information
yanliu38 committed Jan 31, 2025
1 parent bac41ff commit 8937c55
Show file tree
Hide file tree
Showing 2 changed files with 390 additions and 2 deletions.
19 changes: 17 additions & 2 deletions ic-canister/src/canister_backend/icrc2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use candid::Nat;
use dcc_common::{
account_balance_get, approval_get, approval_update, get_timestamp_ns, ledger_funds_transfer,
nat_to_balance, FundsTransfer, FundsTransferApproval, IcrcCompatibleAccount, TokenAmountE9s,
MEMO_BYTES_MAX,
};
use ic_cdk::caller;
use icrc_ledger_types::icrc1::account::Account;
Expand Down Expand Up @@ -31,6 +32,16 @@ pub fn _icrc2_approve(args: ApproveArgs) -> Result<Nat, ApproveError> {
});
}

// Check the size of the memo
if let Some(memo) = &args.memo {
if memo.0.len() > MEMO_BYTES_MAX {
return Err(ApproveError::GenericError {
error_code: 2u32.into(),
message: "Memo too large".to_string(),
});
}
}

// Check if caller has sufficient balance for fee
let balance = account_balance_get(&from);
if balance < DC_TOKEN_TRANSFER_FEE_E9S {
Expand Down Expand Up @@ -92,7 +103,11 @@ pub fn _icrc2_approve(args: ApproveArgs) -> Result<Nat, ApproveError> {
args.amount
.min(TokenAmountE9s::MAX.into())
.0
.to_u64_digits()[0],
.to_u64_digits()
.iter()
.next()
.cloned()
.unwrap_or_default(),
args.expires_at,
DC_TOKEN_TRANSFER_FEE_E9S,
args.memo.map(|m| m.0.to_vec()).unwrap_or_default(),
Expand Down Expand Up @@ -120,7 +135,7 @@ pub fn _icrc2_transfer_from(args: TransferFromArgs) -> Result<Nat, TransferFromE
let from: IcrcCompatibleAccount = args.from.into();
let to: IcrcCompatibleAccount = args.to.into();
let amount = nat_to_balance(&args.amount);
let fee = nat_to_balance(&args.fee.unwrap_or_default());
let fee = nat_to_balance(&args.fee.unwrap_or(DC_TOKEN_TRANSFER_FEE_E9S.into()));

// Check allowance
let approval = approval_get(from.clone().into(), spender);
Expand Down
Loading

0 comments on commit 8937c55

Please sign in to comment.