becrypto/test/claimtoken.test.js
2024-01-12 15:07:18 +08:00

59 lines
1.9 KiB
JavaScript

const ClaimToken = artifacts.require("ClaimToken");
const FT = artifacts.require("FT");
const {
BN,
constants,
expectEvent,
expectRevert,
} = require("@openzeppelin/test-helpers");
contract("ClaimToken", (accounts) => {
let tokenClaimer;
let usdt;
const owner = accounts[0];
const user = accounts[1];
const executor = accounts[2];
beforeEach(async () => {
usdt = await FT.new("USDT", "USDT", 0);
tokenClaimer = await ClaimToken.new();
await tokenClaimer.updateTokenSupport(usdt.address, true);
await tokenClaimer.updateVerifier(executor);
await tokenClaimer.updatePaymentAddress(owner);
});
it("should cliam token", async () => {
await usdt.mint(owner, web3.utils.toWei("1000"));
await usdt.approve(tokenClaimer.address, web3.utils.toWei("1000"), { from: owner });
const balanceOfOwner = await usdt.balanceOf(owner);
console.log('balanceOfOwner: ', balanceOfOwner.toString())
const allowance = await usdt.allowance(owner, tokenClaimer.address);
console.log('allowance: ', allowance.toString())
const token = usdt.address;
const amount = web3.utils.toWei("100");
console.log(amount)
const chainId = await web3.eth.getChainId();
console.log(chainId)
const address = tokenClaimer.address;
const startTime = Date.now() / 1000 | 0;
const saltNonce = (Math.random() * 1000) | 0;
let signStr = web3.utils.soliditySha3.apply(this,
[user, token, address, chainId, amount, startTime, saltNonce]);
let signature = await web3.eth.sign(signStr, executor);
signature = signature.replace(/00$/, "1b").replace(/01$/, "1c");
const receipt = await tokenClaimer.claim(
token,
amount,
startTime,
saltNonce,
signature,
{ from: user }
);
const balanceOfUser = await usdt.balanceOf(user);
assert.equal(balanceOfUser, amount, "Incorrect user balance");
});
});