UNPKG

@unilogin/sdk

Version:

SDK is a JS library, that communicates with relayer. SDK allows managing contract, by creating basic contract-calling messages.

100 lines (94 loc) 2.88 kB
import {expect} from 'chai'; import {utils} from 'ethers'; import {ETHER_NATIVE_TOKEN, TEST_GAS_PRICE, TEST_GAS_LIMIT, TEST_ACCOUNT_ADDRESS, TEST_CONTRACT_ADDRESS, TEST_TOKEN_ADDRESS} from '@unilogin/commons'; import {encodeTransferToMessage} from '../../../src/core/utils/encodeTransferToMessage'; import {IERC20Interface} from '@unilogin/contracts'; describe('UNIT: encodeTransferToMessage', () => { const from = TEST_CONTRACT_ADDRESS; const to = TEST_ACCOUNT_ADDRESS; const gasPrice = utils.bigNumberify(TEST_GAS_PRICE); const gasLimit = utils.bigNumberify(TEST_GAS_LIMIT); const amount = '1'; const basicMessage = { from, to, value: utils.parseEther(amount), gasLimit, }; it('ether transfer and ether refund', () => { const gasParameters = {gasToken: ETHER_NATIVE_TOKEN.address, gasPrice}; const transfer = { from, to, amount, transferToken: ETHER_NATIVE_TOKEN.address, gasLimit, gasParameters, }; const expectedMessage = { ...basicMessage, data: '0x', gasPrice, gasToken: gasParameters.gasToken, }; expect(encodeTransferToMessage(transfer)).to.deep.eq(expectedMessage); }); it('ether transfer and token refund', () => { const gasParameters = {gasToken: TEST_TOKEN_ADDRESS, gasPrice}; const transfer = { from, to, amount, gasLimit, transferToken: ETHER_NATIVE_TOKEN.address, gasParameters, }; const expectedMessage = { ...basicMessage, data: '0x', gasPrice, gasToken: gasParameters.gasToken, }; expect(encodeTransferToMessage(transfer)).to.deep.eq(expectedMessage); }); it('token transfer and ether refund', () => { const gasParameters = {gasToken: ETHER_NATIVE_TOKEN.address, gasPrice}; const transfer = { from, to, amount, gasLimit, transferToken: TEST_TOKEN_ADDRESS, gasParameters, }; const expectedMessage = { ...basicMessage, data: IERC20Interface.functions.transfer.encode([to, utils.parseEther(amount)]), value: 0, to: TEST_TOKEN_ADDRESS, gasPrice, gasToken: gasParameters.gasToken, }; expect(encodeTransferToMessage(transfer)).to.deep.eq(expectedMessage); }); it('token transfer and token refund', () => { const gasParameters = {gasToken: TEST_TOKEN_ADDRESS, gasPrice}; const transfer = { from, to, amount, gasLimit, transferToken: TEST_TOKEN_ADDRESS, gasParameters, }; const expectedMessage = { ...basicMessage, value: 0, to: TEST_TOKEN_ADDRESS, data: IERC20Interface.functions.transfer.encode([to, utils.parseEther(amount)]), gasPrice, gasToken: gasParameters.gasToken, }; expect(encodeTransferToMessage(transfer)).to.deep.eq(expectedMessage); }); });