Address comments
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { blockchainTests, constants, expect, getRandomInteger } from '@0x/contracts-test-utils';
|
||||
import { AbiEncoder } from '@0x/utils';
|
||||
import { artifacts as assetProxyArtifacts, StaticCallProxyContract } from '@0x/contracts-asset-proxy';
|
||||
import { blockchainTests, constants, expect, getRandomInteger, randomAddress } from '@0x/contracts-test-utils';
|
||||
|
||||
import {
|
||||
decodeMaxGasPriceStaticCallData,
|
||||
@@ -12,7 +12,9 @@ import { MaximumGasPriceContract } from './wrappers';
|
||||
|
||||
blockchainTests.resets('MaximumGasPrice unit tests', env => {
|
||||
let maxGasPriceContract: MaximumGasPriceContract;
|
||||
const maxGasPriceEncoder = AbiEncoder.create([{ name: 'maxGasPrice', type: 'uint256' }]);
|
||||
let staticCallProxy: StaticCallProxyContract;
|
||||
|
||||
let defaultMaxAssetData: string;
|
||||
|
||||
before(async () => {
|
||||
maxGasPriceContract = await MaximumGasPriceContract.deployFrom0xArtifactAsync(
|
||||
@@ -21,51 +23,67 @@ blockchainTests.resets('MaximumGasPrice unit tests', env => {
|
||||
env.txDefaults,
|
||||
artifacts,
|
||||
);
|
||||
});
|
||||
staticCallProxy = await StaticCallProxyContract.deployFrom0xArtifactAsync(
|
||||
assetProxyArtifacts.StaticCallProxy,
|
||||
env.provider,
|
||||
env.txDefaults,
|
||||
assetProxyArtifacts,
|
||||
);
|
||||
|
||||
describe('Contract functionality', () => {
|
||||
it('does not revert if tx.gasprice < default maximum', async () => {
|
||||
await maxGasPriceContract.checkGasPrice1().callAsync({ gasPrice: TWENTY_GWEI.minus(1) });
|
||||
});
|
||||
it('does not revert if tx.gasprice = default maximum', async () => {
|
||||
await maxGasPriceContract.checkGasPrice1().callAsync({ gasPrice: TWENTY_GWEI });
|
||||
});
|
||||
it('reverts if tx.gasPrice > default maximum', async () => {
|
||||
const tx = maxGasPriceContract.checkGasPrice1().callAsync({ gasPrice: TWENTY_GWEI.plus(1) });
|
||||
return expect(tx).to.revertWith('MaximumGasPrice/GAS_PRICE_EXCEEDS_20_GWEI');
|
||||
});
|
||||
it('does not revert if tx.gasprice < custom maximum', async () => {
|
||||
const maxGasPrice = getRandomInteger(0, TWENTY_GWEI.times(2));
|
||||
await maxGasPriceContract
|
||||
.checkGasPrice2(maxGasPriceEncoder.encode({ maxGasPrice }))
|
||||
.callAsync({ gasPrice: maxGasPrice.minus(1) });
|
||||
});
|
||||
it('does not revert if tx.gasprice = default maximum', async () => {
|
||||
const maxGasPrice = getRandomInteger(0, TWENTY_GWEI.times(2));
|
||||
await maxGasPriceContract
|
||||
.checkGasPrice2(maxGasPriceEncoder.encode({ maxGasPrice }))
|
||||
.callAsync({ gasPrice: maxGasPrice });
|
||||
});
|
||||
it('reverts if tx.gasPrice > default maximum', async () => {
|
||||
const maxGasPrice = getRandomInteger(0, TWENTY_GWEI.times(2));
|
||||
const tx = maxGasPriceContract
|
||||
.checkGasPrice2(maxGasPriceEncoder.encode({ maxGasPrice }))
|
||||
.callAsync({ gasPrice: maxGasPrice.plus(1) });
|
||||
return expect(tx).to.revertWith('MaximumGasPrice/GAS_PRICE_EXCEEDS_MAXIMUM');
|
||||
});
|
||||
defaultMaxAssetData = encodeMaxGasPriceStaticCallData(maxGasPriceContract.address);
|
||||
});
|
||||
|
||||
describe('Data encoding/decoding tools', () => {
|
||||
it('correctly decodes default maximum gas price', async () => {
|
||||
const encoded = encodeMaxGasPriceStaticCallData(maxGasPriceContract.address);
|
||||
const decoded = decodeMaxGasPriceStaticCallData(encoded);
|
||||
const decoded = decodeMaxGasPriceStaticCallData(defaultMaxAssetData);
|
||||
expect(decoded).to.bignumber.equal(TWENTY_GWEI);
|
||||
});
|
||||
it('correctly decodes custom maximum gas price', async () => {
|
||||
const maxGasPrice = getRandomInteger(0, constants.MAX_UINT256);
|
||||
const encoded = encodeMaxGasPriceStaticCallData(maxGasPriceContract.address, maxGasPrice);
|
||||
const decoded = decodeMaxGasPriceStaticCallData(encoded);
|
||||
expect(decoded).to.bignumber.equal(maxGasPrice);
|
||||
const customMaxGasPrice = getRandomInteger(0, constants.MAX_UINT256);
|
||||
const customMaxAssetData = encodeMaxGasPriceStaticCallData(maxGasPriceContract.address, customMaxGasPrice);
|
||||
const decoded = decodeMaxGasPriceStaticCallData(customMaxAssetData);
|
||||
expect(decoded).to.bignumber.equal(customMaxGasPrice);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Contract functionality', () => {
|
||||
it('does not revert if tx.gasprice < default maximum', async () => {
|
||||
await staticCallProxy
|
||||
.transferFrom(defaultMaxAssetData, randomAddress(), randomAddress(), constants.ZERO_AMOUNT)
|
||||
.callAsync({ gasPrice: TWENTY_GWEI.minus(1) });
|
||||
});
|
||||
it('does not revert if tx.gasprice = default maximum', async () => {
|
||||
await staticCallProxy
|
||||
.transferFrom(defaultMaxAssetData, randomAddress(), randomAddress(), constants.ZERO_AMOUNT)
|
||||
.callAsync({ gasPrice: TWENTY_GWEI });
|
||||
});
|
||||
it('reverts if tx.gasPrice > default maximum', async () => {
|
||||
const tx = staticCallProxy
|
||||
.transferFrom(defaultMaxAssetData, randomAddress(), randomAddress(), constants.ZERO_AMOUNT)
|
||||
.callAsync({ gasPrice: TWENTY_GWEI.plus(1) });
|
||||
return expect(tx).to.revertWith('MaximumGasPrice/GAS_PRICE_EXCEEDS_20_GWEI');
|
||||
});
|
||||
it('does not revert if tx.gasprice < custom maximum', async () => {
|
||||
const maxGasPrice = getRandomInteger(0, TWENTY_GWEI.times(2));
|
||||
const customMaxAssetData = encodeMaxGasPriceStaticCallData(maxGasPriceContract.address, maxGasPrice);
|
||||
await staticCallProxy
|
||||
.transferFrom(customMaxAssetData, randomAddress(), randomAddress(), constants.ZERO_AMOUNT)
|
||||
.callAsync({ gasPrice: maxGasPrice.minus(1) });
|
||||
});
|
||||
it('does not revert if tx.gasprice = custom maximum', async () => {
|
||||
const maxGasPrice = getRandomInteger(0, TWENTY_GWEI.times(2));
|
||||
const customMaxAssetData = encodeMaxGasPriceStaticCallData(maxGasPriceContract.address, maxGasPrice);
|
||||
await staticCallProxy
|
||||
.transferFrom(customMaxAssetData, randomAddress(), randomAddress(), constants.ZERO_AMOUNT)
|
||||
.callAsync({ gasPrice: maxGasPrice });
|
||||
});
|
||||
it('reverts if tx.gasPrice > custom maximum', async () => {
|
||||
const maxGasPrice = getRandomInteger(0, TWENTY_GWEI.times(2));
|
||||
const customMaxAssetData = encodeMaxGasPriceStaticCallData(maxGasPriceContract.address, maxGasPrice);
|
||||
const tx = staticCallProxy
|
||||
.transferFrom(customMaxAssetData, randomAddress(), randomAddress(), constants.ZERO_AMOUNT)
|
||||
.callAsync({ gasPrice: maxGasPrice.plus(1) });
|
||||
return expect(tx).to.revertWith('MaximumGasPrice/GAS_PRICE_EXCEEDS_MAXIMUM');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user