fixed linting and EP transfering less than the total amount of ETH in the wallet
This commit is contained in:
parent
c9097f6e8b
commit
5d265360c4
@ -1,19 +1,15 @@
|
|||||||
import { artifacts as erc20Artifacts, DummyERC20TokenContract } from '@0x/contracts-erc20';
|
import { artifacts as erc20Artifacts, DummyERC20TokenContract } from '@0x/contracts-erc20';
|
||||||
import {
|
import { blockchainTests, constants, expect, randomAddress } from '@0x/contracts-test-utils';
|
||||||
blockchainTests,
|
|
||||||
constants,
|
|
||||||
expect,
|
|
||||||
randomAddress,
|
|
||||||
} from '@0x/contracts-test-utils';
|
|
||||||
import { BigNumber, OwnableRevertErrors } from '@0x/utils';
|
import { BigNumber, OwnableRevertErrors } from '@0x/utils';
|
||||||
import { Web3Wrapper } from '@0x/web3-wrapper';
|
import { Web3Wrapper } from '@0x/web3-wrapper';
|
||||||
|
|
||||||
|
import { IOwnableFeatureContract, IZeroExContract} from '../../src/wrappers';
|
||||||
import { artifacts } from '../artifacts';
|
import { artifacts } from '../artifacts';
|
||||||
import { FundRecoveryFeatureContract } from '../generated-wrappers/fund_recovery_feature';
|
import { FundRecoveryFeatureContract } from '../generated-wrappers/fund_recovery_feature';
|
||||||
import { abis } from '../utils/abis';
|
import { abis } from '../utils/abis';
|
||||||
import { fullMigrateAsync } from '../utils/migration';
|
import { fullMigrateAsync } from '../utils/migration';
|
||||||
import { IOwnableFeatureContract, IZeroExContract } from '../../src/wrappers';
|
|
||||||
|
|
||||||
blockchainTests('FundRecovery', async env => {
|
blockchainTests.only('FundRecovery', async env => {
|
||||||
let owner: string;
|
let owner: string;
|
||||||
let zeroEx: IZeroExContract;
|
let zeroEx: IZeroExContract;
|
||||||
let token: DummyERC20TokenContract;
|
let token: DummyERC20TokenContract;
|
||||||
@ -39,55 +35,67 @@ blockchainTests('FundRecovery', async env => {
|
|||||||
artifacts,
|
artifacts,
|
||||||
);
|
);
|
||||||
await new IOwnableFeatureContract(zeroEx.address, env.provider, env.txDefaults, abis)
|
await new IOwnableFeatureContract(zeroEx.address, env.provider, env.txDefaults, abis)
|
||||||
.migrate(featureImpl.address, featureImpl.migrate().getABIEncodedTransactionData(), owner)
|
.migrate(featureImpl.address, featureImpl.migrate().getABIEncodedTransactionData(), owner)
|
||||||
.awaitTransactionSuccessAsync({from: owner});
|
.awaitTransactionSuccessAsync({ from: owner });
|
||||||
});
|
});
|
||||||
blockchainTests.resets('Should delegatecall `transferTrappedTokensTo` from the exchange proxy', () => {
|
blockchainTests.resets('Should delegatecall `transferTrappedTokensTo` from the exchange proxy', () => {
|
||||||
const ETH_TOKEN_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
|
const ETH_TOKEN_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
|
||||||
const recipientAddress = randomAddress();
|
const recipientAddress = randomAddress();
|
||||||
it('Tranfers an arbitrary ERC-20 Token', async () => {
|
it('Tranfers an arbitrary ERC-20 Token', async () => {
|
||||||
const amountOut = Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 18);
|
const amountOut = Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 18);
|
||||||
await zeroEx.transferTrappedTokensTo(token.address, amountOut, recipientAddress).awaitTransactionSuccessAsync({ from: owner });
|
await zeroEx
|
||||||
|
.transferTrappedTokensTo(token.address, amountOut, recipientAddress)
|
||||||
|
.awaitTransactionSuccessAsync({ from: owner });
|
||||||
const recipientAddressBalanceAferTransfer = await token.balanceOf(recipientAddress).callAsync();
|
const recipientAddressBalanceAferTransfer = await token.balanceOf(recipientAddress).callAsync();
|
||||||
return expect(recipientAddressBalanceAferTransfer).to.bignumber.equal(amountOut);
|
return expect(recipientAddressBalanceAferTransfer).to.bignumber.equal(amountOut);
|
||||||
});
|
});
|
||||||
it('Amount -1 transfers entire balance of ERC-20', async () => {
|
it('Amount -1 transfers entire balance of ERC-20', async () => {
|
||||||
const balanceOwner = await token.balanceOf(zeroEx.address).callAsync();
|
const balanceOwner = await token.balanceOf(zeroEx.address).callAsync();
|
||||||
await zeroEx.transferTrappedTokensTo(token.address, constants.MAX_UINT256 , recipientAddress).awaitTransactionSuccessAsync({ from: owner });
|
await zeroEx
|
||||||
|
.transferTrappedTokensTo(token.address, constants.MAX_UINT256, recipientAddress)
|
||||||
|
.awaitTransactionSuccessAsync({ from: owner });
|
||||||
const recipientAddressBalanceAferTransfer = await token.balanceOf(recipientAddress).callAsync();
|
const recipientAddressBalanceAferTransfer = await token.balanceOf(recipientAddress).callAsync();
|
||||||
return expect(recipientAddressBalanceAferTransfer).to.bignumber.equal(balanceOwner);
|
return expect(recipientAddressBalanceAferTransfer).to.bignumber.equal(balanceOwner);
|
||||||
});
|
});
|
||||||
it('Amount -1 transfers entire balance of ETH', async () => {
|
it('Amount -1 transfers entire balance of ETH', async () => {
|
||||||
const amountOut = new BigNumber(20);
|
const amountOut = new BigNumber(20);
|
||||||
await env.web3Wrapper.awaitTransactionMinedAsync(
|
await env.web3Wrapper.awaitTransactionMinedAsync(
|
||||||
await env.web3Wrapper.sendTransactionAsync(
|
await env.web3Wrapper.sendTransactionAsync({
|
||||||
{
|
from: owner,
|
||||||
from: owner,
|
to: zeroEx.address,
|
||||||
to: zeroEx.address,
|
value: amountOut,
|
||||||
value: amountOut,
|
}),
|
||||||
}));
|
);
|
||||||
const balanceOwner = await env.web3Wrapper.getBalanceInWeiAsync(zeroEx.address);
|
const balanceOwner = await env.web3Wrapper.getBalanceInWeiAsync(zeroEx.address);
|
||||||
await zeroEx.transferTrappedTokensTo(ETH_TOKEN_ADDRESS, constants.MAX_UINT256 , recipientAddress).awaitTransactionSuccessAsync({ from: owner });
|
await zeroEx
|
||||||
|
.transferTrappedTokensTo(ETH_TOKEN_ADDRESS, constants.MAX_UINT256, recipientAddress)
|
||||||
|
.awaitTransactionSuccessAsync({ from: owner });
|
||||||
const recipientAddressBalanceAferTransfer = await env.web3Wrapper.getBalanceInWeiAsync(recipientAddress);
|
const recipientAddressBalanceAferTransfer = await env.web3Wrapper.getBalanceInWeiAsync(recipientAddress);
|
||||||
return expect(recipientAddressBalanceAferTransfer).to.bignumber.equal(balanceOwner);
|
return expect(recipientAddressBalanceAferTransfer).to.bignumber.equal(balanceOwner);
|
||||||
});
|
});
|
||||||
it('Transfers ETH ', async () => {
|
it('Transfers ETH ', async () => {
|
||||||
const amountOut = new BigNumber(20);
|
const amountOut = new BigNumber(20);
|
||||||
await env.web3Wrapper.awaitTransactionMinedAsync(
|
await env.web3Wrapper.awaitTransactionMinedAsync(
|
||||||
await env.web3Wrapper.sendTransactionAsync(
|
await env.web3Wrapper.sendTransactionAsync({
|
||||||
{
|
from: owner,
|
||||||
from: owner,
|
to: zeroEx.address,
|
||||||
to: zeroEx.address,
|
value: amountOut,
|
||||||
value: amountOut,
|
}),
|
||||||
}));
|
);
|
||||||
const bal = await env.web3Wrapper.getBalanceInWeiAsync(recipientAddress);
|
const bal = await env.web3Wrapper.getBalanceInWeiAsync(recipientAddress);
|
||||||
await zeroEx.transferTrappedTokensTo(ETH_TOKEN_ADDRESS, amountOut , recipientAddress).awaitTransactionSuccessAsync({ from: owner });
|
await zeroEx
|
||||||
|
.transferTrappedTokensTo(ETH_TOKEN_ADDRESS, amountOut.minus(1), recipientAddress)
|
||||||
|
.awaitTransactionSuccessAsync({ from: owner });
|
||||||
const recipientAddressBalance = await env.web3Wrapper.getBalanceInWeiAsync(recipientAddress);
|
const recipientAddressBalance = await env.web3Wrapper.getBalanceInWeiAsync(recipientAddress);
|
||||||
return expect(recipientAddressBalance).to.bignumber.be.equal(bal.plus(amountOut));
|
return expect(recipientAddressBalance).to.bignumber.be.equal(amountOut.minus(1));
|
||||||
});
|
});
|
||||||
it('Feature `transferTrappedTokensTo` can only be called by owner', async () => {
|
it('Feature `transferTrappedTokensTo` can only be called by owner', async () => {
|
||||||
const notOwner = randomAddress();
|
const notOwner = randomAddress();
|
||||||
return expect(zeroEx.transferTrappedTokensTo(ETH_TOKEN_ADDRESS, constants.MAX_UINT256 , recipientAddress).awaitTransactionSuccessAsync({ from: notOwner })).to.revertWith(new OwnableRevertErrors.OnlyOwnerError(notOwner, owner));
|
return expect(
|
||||||
|
zeroEx
|
||||||
|
.transferTrappedTokensTo(ETH_TOKEN_ADDRESS, constants.MAX_UINT256, recipientAddress)
|
||||||
|
.awaitTransactionSuccessAsync({ from: notOwner }),
|
||||||
|
).to.revertWith(new OwnableRevertErrors.OnlyOwnerError(notOwner, owner));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user