@0x/contracts-zero-ex: Flip TransformERC20.createTransformWallet() to onlyOwner.

This commit is contained in:
Lawrence Forman
2020-06-16 18:07:03 -04:00
parent f14b6f2ba2
commit 09b8d7cfc9
3 changed files with 12 additions and 5 deletions

View File

@@ -65,7 +65,7 @@ interface ITransformERC20 {
/// @dev Deploy a new flash wallet instance and replace the current one with it.
/// Useful if we somehow break the current wallet instance.
/// Anyone can call this.
/// Only callable by the owner.
/// @return wallet The new wallet instance.
function createTransformWallet()
external

View File

@@ -56,7 +56,7 @@ contract TransformERC20 is
/// @dev Name of this feature.
string public constant override FEATURE_NAME = "TransformERC20";
/// @dev Version of this feature.
uint256 public immutable override FEATURE_VERSION = _encodeVersion(1, 0, 0);
uint256 public immutable override FEATURE_VERSION = _encodeVersion(1, 1, 0);
/// @dev The implementation address of this feature.
address private immutable _implementation;
// solhint-enable
@@ -85,7 +85,7 @@ contract TransformERC20 is
.extend(this.transformERC20.selector, _implementation);
ISimpleFunctionRegistry(address(this))
.extend(this._transformERC20.selector, _implementation);
createTransformWallet();
this.createTransformWallet();
LibTransformERC20Storage.getStorage().transformerDeployer = transformerDeployer;
return LibMigrate.MIGRATE_SUCCESS;
}
@@ -115,11 +115,12 @@ contract TransformERC20 is
/// @dev Deploy a new wallet instance and replace the current one with it.
/// Useful if we somehow break the current wallet instance.
/// Anyone can call this.
/// Only callable by the owner.
/// @return wallet The new wallet instance.
function createTransformWallet()
public
override
onlyOwner
returns (IFlashWallet wallet)
{
wallet = new FlashWallet();

View File

@@ -61,11 +61,17 @@ blockchainTests.resets('TransformERC20 feature', env => {
describe('wallets', () => {
it('createTransformWallet() replaces the current wallet', async () => {
const newWalletAddress = await feature.createTransformWallet().callAsync();
const newWalletAddress = await feature.createTransformWallet().callAsync({ from: owner });
expect(newWalletAddress).to.not.eq(wallet.address);
await feature.createTransformWallet().awaitTransactionSuccessAsync();
return expect(feature.getTransformWallet().callAsync()).to.eventually.eq(newWalletAddress);
});
it('createTransformWallet() cannot be called by non-owner', async () => {
const notOwner = randomAddress();
const tx = feature.createTransformWallet().callAsync({ from: notOwner });
return expect(tx).to.revertWith(new OwnableRevertErrors.OnlyOwnerError(notOwner, owner));
});
});
describe('transformer deployer', () => {