Use an enum for contract name

This commit is contained in:
Leonid Logvinov 2018-01-26 11:39:31 +01:00
parent 6f13d107c4
commit 9d62e5fb6f
No known key found for this signature in database
GPG Key ID: 0DD294BFDE8C95D4
13 changed files with 60 additions and 47 deletions

View File

@ -5,6 +5,7 @@ import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as chai from 'chai'; import * as chai from 'chai';
import { constants } from '../util/constants'; import { constants } from '../util/constants';
import { ContractName } from '../util/types';
import { chaiSetup } from './utils/chai_setup'; import { chaiSetup } from './utils/chai_setup';
import { deployer } from './utils/deployer'; import { deployer } from './utils/deployer';
@ -24,7 +25,7 @@ describe('EtherToken', () => {
const accounts = await web3Wrapper.getAvailableAddressesAsync(); const accounts = await web3Wrapper.getAvailableAddressesAsync();
account = accounts[0]; account = accounts[0];
const etherToken = await deployer.deployAsync('WETH9'); const etherToken = await deployer.deployAsync(ContractName.EtherToken);
etherTokenAddress = etherToken.address; etherTokenAddress = etherToken.address;
zeroEx = new ZeroEx(web3.currentProvider, { zeroEx = new ZeroEx(web3.currentProvider, {
gasPrice, gasPrice,

View File

@ -19,7 +19,7 @@ import { crypto } from '../../util/crypto';
import { ExchangeWrapper } from '../../util/exchange_wrapper'; import { ExchangeWrapper } from '../../util/exchange_wrapper';
import { Order } from '../../util/order'; import { Order } from '../../util/order';
import { OrderFactory } from '../../util/order_factory'; import { OrderFactory } from '../../util/order_factory';
import { BalancesByOwner, ExchangeContractErrs } from '../../util/types'; import { BalancesByOwner, ContractName, ExchangeContractErrs } from '../../util/types';
import { chaiSetup } from '../utils/chai_setup'; import { chaiSetup } from '../utils/chai_setup';
import { deployer } from '../utils/deployer'; import { deployer } from '../utils/deployer';
@ -58,12 +58,12 @@ describe('Exchange', () => {
taker = accounts[1] || accounts[accounts.length - 1]; taker = accounts[1] || accounts[accounts.length - 1];
feeRecipient = accounts[2] || accounts[accounts.length - 1]; feeRecipient = accounts[2] || accounts[accounts.length - 1];
[rep, dgd, zrx] = await Promise.all([ [rep, dgd, zrx] = await Promise.all([
deployer.deployAsync('DummyToken'), deployer.deployAsync(ContractName.DummyToken),
deployer.deployAsync('DummyToken'), deployer.deployAsync(ContractName.DummyToken),
deployer.deployAsync('DummyToken'), deployer.deployAsync(ContractName.DummyToken),
]); ]);
tokenTransferProxy = await deployer.deployAsync('TokenTransferProxy'); tokenTransferProxy = await deployer.deployAsync(ContractName.TokenTransferProxy);
exchange = await deployer.deployAsync('Exchange', [zrx.address, tokenTransferProxy.address]); exchange = await deployer.deployAsync(ContractName.Exchange, [zrx.address, tokenTransferProxy.address]);
await tokenTransferProxy.addAuthorizedAddress(exchange.address, { from: accounts[0] }); await tokenTransferProxy.addAuthorizedAddress(exchange.address, { from: accounts[0] });
zeroEx = new ZeroEx(web3.currentProvider, { zeroEx = new ZeroEx(web3.currentProvider, {
exchangeContractAddress: exchange.address, exchangeContractAddress: exchange.address,
@ -669,7 +669,7 @@ describe('Exchange', () => {
it('should throw if getBalance or getAllowance attempts to change state and \ it('should throw if getBalance or getAllowance attempts to change state and \
shouldThrowOnInsufficientBalanceOrAllowance = false', async () => { shouldThrowOnInsufficientBalanceOrAllowance = false', async () => {
const maliciousToken = await deployer.deployAsync('MaliciousToken'); const maliciousToken = await deployer.deployAsync(ContractName.MaliciousToken);
await maliciousToken.approve(tokenTransferProxy.address, INITIAL_ALLOWANCE, { from: taker }); await maliciousToken.approve(tokenTransferProxy.address, INITIAL_ALLOWANCE, { from: taker });
order = await orderFactory.newSignedOrderAsync({ order = await orderFactory.newSignedOrderAsync({

View File

@ -9,6 +9,7 @@ import { constants } from '../../util/constants';
import { ExchangeWrapper } from '../../util/exchange_wrapper'; import { ExchangeWrapper } from '../../util/exchange_wrapper';
import { Order } from '../../util/order'; import { Order } from '../../util/order';
import { OrderFactory } from '../../util/order_factory'; import { OrderFactory } from '../../util/order_factory';
import { ContractName } from '../../util/types';
import { chaiSetup } from '../utils/chai_setup'; import { chaiSetup } from '../utils/chai_setup';
import { deployer } from '../utils/deployer'; import { deployer } from '../utils/deployer';
@ -31,14 +32,14 @@ describe('Exchange', () => {
const accounts = await web3Wrapper.getAvailableAddressesAsync(); const accounts = await web3Wrapper.getAvailableAddressesAsync();
maker = accounts[0]; maker = accounts[0];
feeRecipient = accounts[1] || accounts[accounts.length - 1]; feeRecipient = accounts[1] || accounts[accounts.length - 1];
const tokenRegistry = await deployer.deployAsync('TokenRegistry'); const tokenRegistry = await deployer.deployAsync(ContractName.TokenRegistry);
const tokenTransferProxy = await deployer.deployAsync('TokenTransferProxy'); const tokenTransferProxy = await deployer.deployAsync(ContractName.TokenTransferProxy);
const [rep, dgd, zrx] = await Promise.all([ const [rep, dgd, zrx] = await Promise.all([
deployer.deployAsync('DummyToken'), deployer.deployAsync(ContractName.DummyToken),
deployer.deployAsync('DummyToken'), deployer.deployAsync(ContractName.DummyToken),
deployer.deployAsync('DummyToken'), deployer.deployAsync(ContractName.DummyToken),
]); ]);
const exchange = await deployer.deployAsync('Exchange', [zrx.address, tokenTransferProxy.address]); const exchange = await deployer.deployAsync(ContractName.Exchange, [zrx.address, tokenTransferProxy.address]);
await tokenTransferProxy.addAuthorizedAddress(exchange.address, { from: accounts[0] }); await tokenTransferProxy.addAuthorizedAddress(exchange.address, { from: accounts[0] });
const zeroEx = new ZeroEx(web3.currentProvider, { networkId: constants.TESTRPC_NETWORK_ID }); const zeroEx = new ZeroEx(web3.currentProvider, { networkId: constants.TESTRPC_NETWORK_ID });
exchangeWrapper = new ExchangeWrapper(exchange, zeroEx); exchangeWrapper = new ExchangeWrapper(exchange, zeroEx);

View File

@ -11,7 +11,7 @@ import { constants } from '../../util/constants';
import { ExchangeWrapper } from '../../util/exchange_wrapper'; import { ExchangeWrapper } from '../../util/exchange_wrapper';
import { Order } from '../../util/order'; import { Order } from '../../util/order';
import { OrderFactory } from '../../util/order_factory'; import { OrderFactory } from '../../util/order_factory';
import { BalancesByOwner } from '../../util/types'; import { BalancesByOwner, ContractName } from '../../util/types';
import { chaiSetup } from '../utils/chai_setup'; import { chaiSetup } from '../utils/chai_setup';
import { deployer } from '../utils/deployer'; import { deployer } from '../utils/deployer';
@ -49,13 +49,13 @@ describe('Exchange', () => {
taker = accounts[1] || accounts[accounts.length - 1]; taker = accounts[1] || accounts[accounts.length - 1];
feeRecipient = accounts[2] || accounts[accounts.length - 1]; feeRecipient = accounts[2] || accounts[accounts.length - 1];
[rep, dgd, zrx] = await Promise.all([ [rep, dgd, zrx] = await Promise.all([
deployer.deployAsync('DummyToken'), deployer.deployAsync(ContractName.DummyToken),
deployer.deployAsync('DummyToken'), deployer.deployAsync(ContractName.DummyToken),
deployer.deployAsync('DummyToken'), deployer.deployAsync(ContractName.DummyToken),
]); ]);
tokenRegistry = await deployer.deployAsync('TokenRegistry'); tokenRegistry = await deployer.deployAsync(ContractName.TokenRegistry);
tokenTransferProxy = await deployer.deployAsync('TokenTransferProxy'); tokenTransferProxy = await deployer.deployAsync(ContractName.TokenTransferProxy);
exchange = await deployer.deployAsync('Exchange', [zrx.address, tokenTransferProxy.address]); exchange = await deployer.deployAsync(ContractName.Exchange, [zrx.address, tokenTransferProxy.address]);
await tokenTransferProxy.addAuthorizedAddress(exchange.address, { from: accounts[0] }); await tokenTransferProxy.addAuthorizedAddress(exchange.address, { from: accounts[0] });
const zeroEx = new ZeroEx(web3.currentProvider, { networkId: constants.TESTRPC_NETWORK_ID }); const zeroEx = new ZeroEx(web3.currentProvider, { networkId: constants.TESTRPC_NETWORK_ID });
exWrapper = new ExchangeWrapper(exchange, zeroEx); exWrapper = new ExchangeWrapper(exchange, zeroEx);

View File

@ -9,7 +9,7 @@ import * as multiSigWalletJSON from '../../build/contracts/MultiSigWalletWithTim
import { artifacts } from '../util/artifacts'; import { artifacts } from '../util/artifacts';
import { constants } from '../util/constants'; import { constants } from '../util/constants';
import { MultiSigWrapper } from '../util/multi_sig_wrapper'; import { MultiSigWrapper } from '../util/multi_sig_wrapper';
import { SubmissionContractEventArgs } from '../util/types'; import { ContractName, SubmissionContractEventArgs } from '../util/types';
import { chaiSetup } from './utils/chai_setup'; import { chaiSetup } from './utils/chai_setup';
import { deployer } from './utils/deployer'; import { deployer } from './utils/deployer';
@ -52,7 +52,11 @@ describe('MultiSigWalletWithTimeLock', () => {
describe('changeTimeLock', () => { describe('changeTimeLock', () => {
describe('initially non-time-locked', async () => { describe('initially non-time-locked', async () => {
before('deploy a walet', async () => { before('deploy a walet', async () => {
multiSig = await deployer.deployAsync('MultiSigWalletWithTimeLock', [owners, SIGNATURES_REQUIRED, 0]); multiSig = await deployer.deployAsync(ContractName.MultiSigWalletWithTimeLock, [
owners,
SIGNATURES_REQUIRED,
0,
]);
multiSigWrapper = new MultiSigWrapper(multiSig); multiSigWrapper = new MultiSigWrapper(multiSig);
const secondsTimeLocked = await multiSig.secondsTimeLocked(); const secondsTimeLocked = await multiSig.secondsTimeLocked();
@ -140,7 +144,7 @@ describe('MultiSigWalletWithTimeLock', () => {
}); });
describe('initially time-locked', async () => { describe('initially time-locked', async () => {
before('deploy a walet', async () => { before('deploy a walet', async () => {
multiSig = await deployer.deployAsync('MultiSigWalletWithTimeLock', [ multiSig = await deployer.deployAsync(ContractName.MultiSigWalletWithTimeLock, [
owners, owners,
SIGNATURES_REQUIRED, SIGNATURES_REQUIRED,
SECONDS_TIME_LOCKED, SECONDS_TIME_LOCKED,

View File

@ -9,7 +9,7 @@ import { artifacts } from '../util/artifacts';
import { constants } from '../util/constants'; import { constants } from '../util/constants';
import { crypto } from '../util/crypto'; import { crypto } from '../util/crypto';
import { MultiSigWrapper } from '../util/multi_sig_wrapper'; import { MultiSigWrapper } from '../util/multi_sig_wrapper';
import { SubmissionContractEventArgs, TransactionDataParams } from '../util/types'; import { ContractName, SubmissionContractEventArgs, TransactionDataParams } from '../util/types';
import { chaiSetup } from './utils/chai_setup'; import { chaiSetup } from './utils/chai_setup';
import { deployer } from './utils/deployer'; import { deployer } from './utils/deployer';
@ -52,11 +52,11 @@ describe('MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress', () => {
.slice(0, 20) .slice(0, 20)
.toString('hex')}`; .toString('hex')}`;
const initialOwner = accounts[0]; const initialOwner = accounts[0];
tokenTransferProxy = await deployer.deployAsync('TokenTransferProxy'); tokenTransferProxy = await deployer.deployAsync(ContractName.TokenTransferProxy);
await tokenTransferProxy.addAuthorizedAddress(authorizedAddress, { await tokenTransferProxy.addAuthorizedAddress(authorizedAddress, {
from: initialOwner, from: initialOwner,
}); });
multiSig = await deployer.deployAsync('MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress', [ multiSig = await deployer.deployAsync(ContractName.MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress, [
owners, owners,
requiredApprovals, requiredApprovals,
SECONDS_TIME_LOCKED, SECONDS_TIME_LOCKED,
@ -106,7 +106,7 @@ describe('MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress', () => {
}); });
it('should throw if tx destination is not the tokenTransferProxy', async () => { it('should throw if tx destination is not the tokenTransferProxy', async () => {
const invalidTokenTransferProxy = await deployer.deployAsync('TokenTransferProxy'); const invalidTokenTransferProxy = await deployer.deployAsync(ContractName.TokenTransferProxy);
const invalidDestination = invalidTokenTransferProxy.address; const invalidDestination = invalidTokenTransferProxy.address;
const dataParams: TransactionDataParams = { const dataParams: TransactionDataParams = {
name: 'removeAuthorizedAddress', name: 'removeAuthorizedAddress',

View File

@ -8,6 +8,7 @@ import * as Web3 from 'web3';
import { constants } from '../util/constants'; import { constants } from '../util/constants';
import { TokenRegWrapper } from '../util/token_registry_wrapper'; import { TokenRegWrapper } from '../util/token_registry_wrapper';
import { ContractName } from '../util/types';
import { chaiSetup } from './utils/chai_setup'; import { chaiSetup } from './utils/chai_setup';
import { deployer } from './utils/deployer'; import { deployer } from './utils/deployer';
@ -27,7 +28,7 @@ describe('TokenRegistry', () => {
const accounts = await web3Wrapper.getAvailableAddressesAsync(); const accounts = await web3Wrapper.getAvailableAddressesAsync();
owner = accounts[0]; owner = accounts[0];
notOwner = accounts[1]; notOwner = accounts[1];
tokenReg = await deployer.deployAsync('TokenRegistry'); tokenReg = await deployer.deployAsync(ContractName.TokenRegistry);
tokenRegWrapper = new TokenRegWrapper(tokenReg); tokenRegWrapper = new TokenRegWrapper(tokenReg);
}); });
beforeEach(async () => { beforeEach(async () => {

View File

@ -4,6 +4,7 @@ import * as chai from 'chai';
import * as Web3 from 'web3'; import * as Web3 from 'web3';
import { constants } from '../../util/constants'; import { constants } from '../../util/constants';
import { ContractName } from '../../util/types';
import { chaiSetup } from '../utils/chai_setup'; import { chaiSetup } from '../utils/chai_setup';
import { deployer } from '../utils/deployer'; import { deployer } from '../utils/deployer';
@ -22,7 +23,7 @@ describe('TokenTransferProxy', () => {
const accounts = await web3Wrapper.getAvailableAddressesAsync(); const accounts = await web3Wrapper.getAvailableAddressesAsync();
owner = address = accounts[0]; owner = address = accounts[0];
notOwner = accounts[1]; notOwner = accounts[1];
tokenTransferProxy = await deployer.deployAsync('TokenTransferProxy'); tokenTransferProxy = await deployer.deployAsync(ContractName.TokenTransferProxy);
}); });
beforeEach(async () => { beforeEach(async () => {
await blockchainLifecycle.startAsync(); await blockchainLifecycle.startAsync();

View File

@ -5,6 +5,7 @@ import * as Web3 from 'web3';
import { Balances } from '../../util/balances'; import { Balances } from '../../util/balances';
import { constants } from '../../util/constants'; import { constants } from '../../util/constants';
import { ContractName } from '../../util/types';
import { chaiSetup } from '../utils/chai_setup'; import { chaiSetup } from '../utils/chai_setup';
import { deployer } from '../utils/deployer'; import { deployer } from '../utils/deployer';
@ -28,8 +29,8 @@ describe('TokenTransferProxy', () => {
before(async () => { before(async () => {
accounts = await web3Wrapper.getAvailableAddressesAsync(); accounts = await web3Wrapper.getAvailableAddressesAsync();
owner = notAuthorized = accounts[0]; owner = notAuthorized = accounts[0];
tokenTransferProxy = await deployer.deployAsync('TokenTransferProxy'); tokenTransferProxy = await deployer.deployAsync(ContractName.TokenTransferProxy);
rep = await deployer.deployAsync('DummyToken'); rep = await deployer.deployAsync(ContractName.DummyToken);
dmyBalances = new Balances([rep], [accounts[0], accounts[1]]); dmyBalances = new Balances([rep], [accounts[0], accounts[1]]);
await Promise.all([ await Promise.all([

View File

@ -6,6 +6,7 @@ import * as chai from 'chai';
import * as Web3 from 'web3'; import * as Web3 from 'web3';
import { constants } from '../util/constants'; import { constants } from '../util/constants';
import { ContractName } from '../util/types';
import { chaiSetup } from './utils/chai_setup'; import { chaiSetup } from './utils/chai_setup';
import { deployer } from './utils/deployer'; import { deployer } from './utils/deployer';
@ -32,7 +33,7 @@ describe('UnlimitedAllowanceToken', () => {
const accounts = await web3Wrapper.getAvailableAddressesAsync(); const accounts = await web3Wrapper.getAvailableAddressesAsync();
owner = accounts[0]; owner = accounts[0];
spender = accounts[1]; spender = accounts[1];
token = await deployer.deployAsync('DummyToken'); token = await deployer.deployAsync(ContractName.DummyToken);
await token.mint(MAX_MINT_VALUE, { from: owner }); await token.mint(MAX_MINT_VALUE, { from: owner });
tokenAddress = token.address; tokenAddress = token.address;
}); });

View File

@ -6,6 +6,7 @@ import * as chai from 'chai';
import * as Web3 from 'web3'; import * as Web3 from 'web3';
import { constants } from '../util/constants'; import { constants } from '../util/constants';
import { ContractName } from '../util/types';
import { chaiSetup } from './utils/chai_setup'; import { chaiSetup } from './utils/chai_setup';
import { deployer } from './utils/deployer'; import { deployer } from './utils/deployer';
@ -32,7 +33,7 @@ describe('UnlimitedAllowanceTokenV2', () => {
const accounts = await web3Wrapper.getAvailableAddressesAsync(); const accounts = await web3Wrapper.getAvailableAddressesAsync();
owner = accounts[0]; owner = accounts[0];
spender = accounts[1]; spender = accounts[1];
token = await deployer.deployAsync('DummyToken_v2'); token = await deployer.deployAsync(ContractName.DummyToken_v2);
await token.mint(MAX_MINT_VALUE, { from: owner }); await token.mint(MAX_MINT_VALUE, { from: owner });
tokenAddress = token.address; tokenAddress = token.address;
}); });

View File

@ -6,6 +6,7 @@ import * as chai from 'chai';
import * as Web3 from 'web3'; import * as Web3 from 'web3';
import { constants } from '../util/constants'; import { constants } from '../util/constants';
import { ContractName } from '../util/types';
import { chaiSetup } from './utils/chai_setup'; import { chaiSetup } from './utils/chai_setup';
import { deployer } from './utils/deployer'; import { deployer } from './utils/deployer';
@ -33,7 +34,7 @@ describe('ZRXToken', () => {
zeroEx = new ZeroEx(web3.currentProvider, { zeroEx = new ZeroEx(web3.currentProvider, {
networkId: constants.TESTRPC_NETWORK_ID, networkId: constants.TESTRPC_NETWORK_ID,
}); });
zrx = await deployer.deployAsync('ZRXToken'); zrx = await deployer.deployAsync(ContractName.ZRXToken);
zrxAddress = zrx.address; zrxAddress = zrx.address;
MAX_UINT = zeroEx.token.UNLIMITED_ALLOWANCE_IN_BASE_UNITS; MAX_UINT = zeroEx.token.UNLIMITED_ALLOWANCE_IN_BASE_UNITS;
}); });

View File

@ -119,20 +119,21 @@ export enum ExchangeContractErrs {
ERROR_INSUFFICIENT_BALANCE_OR_ALLOWANCE, ERROR_INSUFFICIENT_BALANCE_OR_ALLOWANCE,
} }
export type ArtifactContractName = export enum ContractName {
| 'TokenTransferProxy' TokenTransferProxy = 'TokenTransferProxy',
| 'TokenRegistry' TokenRegistry = 'TokenRegistry',
| 'MultiSigWalletWithTimeLock' MultiSigWalletWithTimeLock = 'MultiSigWalletWithTimeLock',
| 'Exchange' Exchange = 'Exchange',
| 'ZRXToken' ZRXToken = 'ZRXToken',
| 'DummyToken' DummyToken = 'DummyToken',
| 'DummyToken_v2' DummyToken_v2 = 'DummyToken_v2',
| 'WETH9' EtherToken = 'WETH9',
| 'MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress' MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress = 'MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress',
| 'MaliciousToken'; MaliciousToken = 'MaliciousToken',
}
export interface Artifact { export interface Artifact {
contract_name: ArtifactContractName; contract_name: ContractName;
networks: { networks: {
[networkId: number]: { [networkId: number]: {
abi: Web3.ContractAbi; abi: Web3.ContractAbi;