59 lines
2.3 KiB
TypeScript
59 lines
2.3 KiB
TypeScript
import { blockchainTests, constants, expect, randomAddress } from '@0x/contracts-test-utils';
|
|
import { ZeroExRevertErrors } from '@0x/utils';
|
|
import * as _ from 'lodash';
|
|
|
|
import { artifacts } from '../artifacts';
|
|
import { TestDelegateCallerContract, TestTransformerBaseContract } from '../wrappers';
|
|
|
|
blockchainTests.resets('Transformer (base)', env => {
|
|
let deployer: string;
|
|
let delegateCaller: TestDelegateCallerContract;
|
|
let transformer: TestTransformerBaseContract;
|
|
|
|
before(async () => {
|
|
[deployer] = await env.getAccountAddressesAsync();
|
|
delegateCaller = await TestDelegateCallerContract.deployFrom0xArtifactAsync(
|
|
artifacts.TestDelegateCaller,
|
|
env.provider,
|
|
env.txDefaults,
|
|
artifacts,
|
|
);
|
|
transformer = await TestTransformerBaseContract.deployFrom0xArtifactAsync(
|
|
artifacts.TestTransformerBase,
|
|
env.provider,
|
|
{
|
|
...env.txDefaults,
|
|
from: deployer,
|
|
},
|
|
artifacts,
|
|
);
|
|
});
|
|
|
|
describe('die()', () => {
|
|
it('cannot be called by non-deployer', async () => {
|
|
const notDeployer = randomAddress();
|
|
const tx = transformer.die(randomAddress()).callAsync({ from: notDeployer });
|
|
return expect(tx).to.revertWith(
|
|
new ZeroExRevertErrors.TransformERC20.OnlyCallableByDeployerError(notDeployer, deployer),
|
|
);
|
|
});
|
|
|
|
it('cannot be called outside of its own context', async () => {
|
|
const callData = transformer.die(randomAddress()).getABIEncodedTransactionData();
|
|
const tx = delegateCaller.executeDelegateCall(transformer.address, callData).callAsync({ from: deployer });
|
|
return expect(tx).to.revertWith(
|
|
new ZeroExRevertErrors.TransformERC20.InvalidExecutionContextError(
|
|
delegateCaller.address,
|
|
transformer.address,
|
|
),
|
|
);
|
|
});
|
|
|
|
it('destroys the transformer', async () => {
|
|
await transformer.die(randomAddress()).awaitTransactionSuccessAsync({ from: deployer });
|
|
const code = await env.web3Wrapper.getContractCodeAsync(transformer.address);
|
|
return expect(code).to.eq(constants.NULL_BYTES);
|
|
});
|
|
});
|
|
});
|