59 lines
1.9 KiB
JavaScript
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");
|
|
});
|
|
}); |