From 4f4b210284bbfe641b19be66b363719b1f4a8543 Mon Sep 17 00:00:00 2001 From: Tadej Vengust Date: Thu, 12 Apr 2018 09:03:38 +0200 Subject: [PATCH 1/2] Rename exchange to protocol and added ERC165 to Swapper, Minter, Trader --- contracts/{exchange => protocol}/Minter.sol | 23 ++++++- .../NFTokenTransferProxy.sol | 0 contracts/{exchange => protocol}/Swapper.sol | 23 ++++++- .../TokenTransferProxy.sol | 0 contracts/{exchange => protocol}/Trader.sol | 23 ++++++- .../{exchange => protocol}/XcertMintProxy.sol | 0 contracts/utils/Selector.sol | 64 +++++++++++++++---- test/mocks/XcertMock.sol | 17 +++++ test/{exchange => protocol}/Minter.test.js | 0 test/{exchange => protocol}/Swapper.test.js | 0 test/{exchange => protocol}/Trader.test.js | 0 test/utils/Selector.test.js | 24 +++++++ 12 files changed, 157 insertions(+), 17 deletions(-) rename contracts/{exchange => protocol}/Minter.sol (96%) rename contracts/{exchange => protocol}/NFTokenTransferProxy.sol (100%) rename contracts/{exchange => protocol}/Swapper.sol (96%) rename contracts/{exchange => protocol}/TokenTransferProxy.sol (100%) rename contracts/{exchange => protocol}/Trader.sol (96%) rename contracts/{exchange => protocol}/XcertMintProxy.sol (100%) create mode 100644 test/mocks/XcertMock.sol rename test/{exchange => protocol}/Minter.test.js (100%) rename test/{exchange => protocol}/Swapper.test.js (100%) rename test/{exchange => protocol}/Trader.test.js (100%) diff --git a/contracts/exchange/Minter.sol b/contracts/protocol/Minter.sol similarity index 96% rename from contracts/exchange/Minter.sol rename to contracts/protocol/Minter.sol index eaa1e82..f990d39 100644 --- a/contracts/exchange/Minter.sol +++ b/contracts/protocol/Minter.sol @@ -6,11 +6,12 @@ import "../tokens/Xcert.sol"; import "../tokens/ERC20.sol"; import "./TokenTransferProxy.sol"; import "./XcertMintProxy.sol"; +import "../tokens/ERC165.sol"; /* * @dev based on: https://github.com/0xProject/contracts/blob/master/contracts/Exchange.sol */ -contract Minter{ +contract Minter is ERC165 { using SafeMath for uint256; @@ -46,6 +47,12 @@ contract Minter{ */ mapping(bytes32 => bool) public mintPerformed; + /* + * @dev Mapping of supported intefraces. + * You must not set element 0xffffffff to true. + */ + mapping(bytes4 => bool) internal supportedInterfaces; + /* * @dev This event emmits when xcert gets mint directly to the taker. */ @@ -107,6 +114,8 @@ contract Minter{ XCT_TOKEN_CONTRACT = _xctToken; TOKEN_TRANSFER_PROXY_CONTRACT = _tokenTransferProxy; XCERT_MINT_PROXY_CONTRACT = _xcertMintProxy; + supportedInterfaces[0x01ffc9a7] = true; // ERC165 + supportedInterfaces[0xca4a3079] = true; // Minter } @@ -354,6 +363,18 @@ contract Minter{ ); } + /* + * @dev Function to check which interfaces are suported by this contract. + * @param interfaceID If of the interface. + */ + function supportsInterface(bytes4 interfaceID) + external + view + returns (bool) + { + return supportedInterfaces[interfaceID]; + } + /* * @dev Transfers XCT tokens via TokenTransferProxy using transferFrom function. * @param _token Address of token to transferFrom. diff --git a/contracts/exchange/NFTokenTransferProxy.sol b/contracts/protocol/NFTokenTransferProxy.sol similarity index 100% rename from contracts/exchange/NFTokenTransferProxy.sol rename to contracts/protocol/NFTokenTransferProxy.sol diff --git a/contracts/exchange/Swapper.sol b/contracts/protocol/Swapper.sol similarity index 96% rename from contracts/exchange/Swapper.sol rename to contracts/protocol/Swapper.sol index 5badc2a..3686b4f 100644 --- a/contracts/exchange/Swapper.sol +++ b/contracts/protocol/Swapper.sol @@ -6,11 +6,12 @@ import "../tokens/ERC20.sol"; import "../tokens/ERC721.sol"; import "./TokenTransferProxy.sol"; import "./NFTokenTransferProxy.sol"; +import "../tokens/ERC165.sol"; /* * @dev based on: https://github.com/0xProject/contracts/blob/master/contracts/Exchange.sol */ -contract Swapper { +contract Swapper is ERC165 { using SafeMath for uint256; @@ -46,6 +47,12 @@ contract Swapper { */ mapping(bytes32 => bool) public swapPerformed; + /* + * @dev Mapping of supported intefraces. + * You must not set element 0xffffffff to true. + */ + mapping(bytes4 => bool) internal supportedInterfaces; + /* * @dev This event emmits when NFToken changes ownership. */ @@ -111,6 +118,8 @@ contract Swapper { TOKEN_CONTRACT = _xctToken; TOKEN_TRANSFER_PROXY_CONTRACT = _tokenTransferProxy; NFTOKEN_TRANSFER_PROXY_CONTRACT = _nfTokenTransferProxy; + supportedInterfaces[0x01ffc9a7] = true; // ERC165 + supportedInterfaces[0xe20524dd] = true; // Swapper } /* @@ -353,6 +362,18 @@ contract Swapper { ); } + /* + * @dev Function to check which interfaces are suported by this contract. + * @param interfaceID If of the interface. + */ + function supportsInterface(bytes4 interfaceID) + external + view + returns (bool) + { + return supportedInterfaces[interfaceID]; + } + /* * @dev Check is payer can pay the feeAmounts. * @param _to Address of the payer. diff --git a/contracts/exchange/TokenTransferProxy.sol b/contracts/protocol/TokenTransferProxy.sol similarity index 100% rename from contracts/exchange/TokenTransferProxy.sol rename to contracts/protocol/TokenTransferProxy.sol diff --git a/contracts/exchange/Trader.sol b/contracts/protocol/Trader.sol similarity index 96% rename from contracts/exchange/Trader.sol rename to contracts/protocol/Trader.sol index aa0b351..b2fe5ff 100644 --- a/contracts/exchange/Trader.sol +++ b/contracts/protocol/Trader.sol @@ -6,11 +6,12 @@ import "../tokens/ERC20.sol"; import "../tokens/ERC721.sol"; import "./TokenTransferProxy.sol"; import "./NFTokenTransferProxy.sol"; +import "../tokens/ERC165.sol"; /* * @dev based on: https://github.com/0xProject/contracts/blob/master/contracts/Exchange.sol */ -contract Trader { +contract Trader is ERC165 { using SafeMath for uint256; @@ -46,6 +47,12 @@ contract Trader { */ mapping(bytes32 => bool) public transferPerformed; + /* + * @dev Mapping of supported intefraces. + * You must not set element 0xffffffff to true. + */ + mapping(bytes4 => bool) internal supportedInterfaces; + /* * @dev This event emmits when NFToken changes ownership. */ @@ -104,6 +111,8 @@ contract Trader { TOKEN_CONTRACT = _xctToken; TOKEN_TRANSFER_PROXY_CONTRACT = _tokenTransferProxy; NFTOKEN_TRANSFER_PROXY_CONTRACT = _nfTokenTransferProxy; + supportedInterfaces[0x01ffc9a7] = true; // ERC165 + supportedInterfaces[0x6b28faee] = true; // Trader } /* @@ -326,6 +335,18 @@ contract Trader { ); } + /* + * @dev Function to check which interfaces are suported by this contract. + * @param interfaceID If of the interface. + */ + function supportsInterface(bytes4 interfaceID) + external + view + returns (bool) + { + return supportedInterfaces[interfaceID]; + } + /* * @dev Check is payer can pay the feeAmounts. * @param _to Address of the payer. diff --git a/contracts/exchange/XcertMintProxy.sol b/contracts/protocol/XcertMintProxy.sol similarity index 100% rename from contracts/exchange/XcertMintProxy.sol rename to contracts/protocol/XcertMintProxy.sol diff --git a/contracts/utils/Selector.sol b/contracts/utils/Selector.sol index 1f58f05..706188c 100644 --- a/contracts/utils/Selector.sol +++ b/contracts/utils/Selector.sol @@ -4,31 +4,67 @@ import "../tokens/Xcert.sol"; import "../tokens/BurnableXcert.sol"; import "../tokens/SettableTransferXcert.sol"; import "../tokens/ChainableXcert.sol"; +import "../protocol/Minter.sol"; +import "../protocol/Trader.sol"; +import "../protocol/Swapper.sol"; contract Selector { function calculateXcertSelector() public pure returns (bytes4) { - Xcert i; - return i.mint.selector - ^ i.getProof.selector - ^ i.setMintAuthorizedAddress.selector - ^ i.isMintAuthorizedAddress.selector; + Xcert i; + return i.mint.selector + ^ i.getProof.selector + ^ i.setMintAuthorizedAddress.selector + ^ i.isMintAuthorizedAddress.selector; } function calculateBurnableXcertSelector() public pure returns (bytes4) { - BurnableXcert i; - return i.burn.selector; + BurnableXcert i; + return i.burn.selector; } function calculateSettableTransferXcertSelector() public pure returns (bytes4) { - SettableTransferXcert i; - return i.setTransferable.selector; + SettableTransferXcert i; + return i.setTransferable.selector; } - function calculateChainableXcertSelector() public pure returns (bytes4) { - ChainableXcert i; - return i.chain.selector - ^ i.getProofByIndex.selector - ^ i.getProofCount.selector; + function calculateChainableXcertSelector() public pure returns (bytes4) { + ChainableXcert i; + return i.chain.selector + ^ i.getProofByIndex.selector + ^ i.getProofCount.selector; + } + + function calculateMinterSelector() public pure returns (bytes4) { + Minter i; + return i.getTokenAddress.selector + ^ i.getTokenTransferProxyAddress.selector + ^ i.getXcertMintProxyAddress.selector + ^ i.performMint.selector + ^ i.cancelMint.selector + ^ i.getMintDataClaim.selector + ^ i.isValidSignature.selector; + } + + function calculateTraderSelector() public pure returns (bytes4) { + Trader i; + return i.getTokenAddress.selector + ^ i.getTokenTransferProxyAddress.selector + ^ i.getNFTokenTransferProxyAddress.selector + ^ i.performTransfer.selector + ^ i.cancelTransfer.selector + ^ i.getTransferDataClaim.selector + ^ i.isValidSignature.selector; + } + + function calculateSwapperSelector() public pure returns (bytes4) { + Swapper i; + return i.getTokenAddress.selector + ^ i.getTokenTransferProxyAddress.selector + ^ i.getNFTokenTransferProxyAddress.selector + ^ i.performSwap.selector + ^ i.cancelSwap.selector + ^ i.getSwapDataClaim.selector + ^ i.isValidSignature.selector; } } \ No newline at end of file diff --git a/test/mocks/XcertMock.sol b/test/mocks/XcertMock.sol new file mode 100644 index 0000000..b722e58 --- /dev/null +++ b/test/mocks/XcertMock.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.4.19; + +import "../../contracts/tokens/BurnableXcert.sol"; +import "../../contracts/tokens/SettableTransferXcert.sol"; +import "../../contracts/tokens/ChainableXcert.sol"; + +contract XcertMock is BurnableXcert, SettableTransferXcert, ChainableXcert { + +function XcertMock(string _name, string _symbol) + BurnableXcert(_name, _symbol) + SettableTransferXcert(_name, _symbol) + ChainableXcert(_name, _symbol) + public + { + + } +} \ No newline at end of file diff --git a/test/exchange/Minter.test.js b/test/protocol/Minter.test.js similarity index 100% rename from test/exchange/Minter.test.js rename to test/protocol/Minter.test.js diff --git a/test/exchange/Swapper.test.js b/test/protocol/Swapper.test.js similarity index 100% rename from test/exchange/Swapper.test.js rename to test/protocol/Swapper.test.js diff --git a/test/exchange/Trader.test.js b/test/protocol/Trader.test.js similarity index 100% rename from test/exchange/Trader.test.js rename to test/protocol/Trader.test.js diff --git a/test/utils/Selector.test.js b/test/utils/Selector.test.js index 7b6f01b..f986679 100644 --- a/test/utils/Selector.test.js +++ b/test/utils/Selector.test.js @@ -2,6 +2,9 @@ const Xcert = artifacts.require('Xcert'); const BurnableXcert = artifacts.require('BurnableXcert'); const ChainableXcert = artifacts.require('ChainableXcert'); const SettableTransferXcert = artifacts.require('SettableTransferXcert'); +const Minter = artifacts.require('Minter'); +const Trader = artifacts.require('Trader'); +const Swapper = artifacts.require('Swapper'); const Selector = artifacts.require('Selector'); contract('Selector', (accounts) => { @@ -40,4 +43,25 @@ contract('Selector', (accounts) => { assert.equal(supports, true); }); + it('Checks Minter selector', async () => { + var minter = await Minter.new(accounts[1], accounts[2], accounts[3]); + var bytes = await selector.calculateMinterSelector(); + var supports = await minter.supportsInterface(bytes); + assert.equal(supports, true); + }); + + it('Checks Trader selector', async () => { + var trader = await Trader.new(accounts[1], accounts[2], accounts[3]); + var bytes = await selector.calculateTraderSelector(); + var supports = await trader.supportsInterface(bytes); + assert.equal(supports, true); + }); + + it('Checks Swapper selector', async () => { + var swapper = await Swapper.new(accounts[1], accounts[2], accounts[3]); + var bytes = await selector.calculateSwapperSelector(); + var supports = await swapper.supportsInterface(bytes); + assert.equal(supports, true); + }); + }); From afe930d060a82f12603a60699bbc4506ad4fb5ec Mon Sep 17 00:00:00 2001 From: Tadej Vengust Date: Thu, 12 Apr 2018 10:54:18 +0200 Subject: [PATCH 2/2] Rename of SettableTransferXcert to PausableXcert. --- contracts/mocks/XcertMock.sol | 6 +-- contracts/tokens/PausableXcert.sol | 53 ++++++++++++++++++++++ contracts/tokens/SettableTransferXcert.sol | 53 ---------------------- contracts/utils/Selector.sol | 8 ++-- test/mocks/XcertMock.sol | 17 ------- test/tokens/PausableXcert.test.js | 45 ++++++++++++++++++ test/tokens/SettableTransferXcert.test.js | 45 ------------------ test/tokens/XcertMock.test.js | 2 +- test/utils/Selector.test.js | 8 ++-- 9 files changed, 110 insertions(+), 127 deletions(-) create mode 100644 contracts/tokens/PausableXcert.sol delete mode 100644 contracts/tokens/SettableTransferXcert.sol delete mode 100644 test/mocks/XcertMock.sol create mode 100644 test/tokens/PausableXcert.test.js delete mode 100644 test/tokens/SettableTransferXcert.test.js diff --git a/contracts/mocks/XcertMock.sol b/contracts/mocks/XcertMock.sol index b722e58..29f9761 100644 --- a/contracts/mocks/XcertMock.sol +++ b/contracts/mocks/XcertMock.sol @@ -1,14 +1,14 @@ pragma solidity ^0.4.19; import "../../contracts/tokens/BurnableXcert.sol"; -import "../../contracts/tokens/SettableTransferXcert.sol"; +import "../../contracts/tokens/PausableXcert.sol"; import "../../contracts/tokens/ChainableXcert.sol"; -contract XcertMock is BurnableXcert, SettableTransferXcert, ChainableXcert { +contract XcertMock is BurnableXcert, PausableXcert, ChainableXcert { function XcertMock(string _name, string _symbol) BurnableXcert(_name, _symbol) - SettableTransferXcert(_name, _symbol) + PausableXcert(_name, _symbol) ChainableXcert(_name, _symbol) public { diff --git a/contracts/tokens/PausableXcert.sol b/contracts/tokens/PausableXcert.sol new file mode 100644 index 0000000..e6eb22d --- /dev/null +++ b/contracts/tokens/PausableXcert.sol @@ -0,0 +1,53 @@ +pragma solidity ^0.4.19; + +import "./Xcert.sol"; + +contract PausableXcert is Xcert { + + /* + * @dev This emits when ability of beeing able to transfer NFTokens changes (paused/unpaused). + */ + event IsPaused(bool _isPaused); + + /* + * @dev Are NFTokens paused or not. + */ + bool public isPaused; + + function PausableXcert(string _name, string _symbol) + Xcert(_name, _symbol) + public + { + supportedInterfaces[0xbedb86fb] = true; // PausableXcert + isPaused = false; + } + + /* + * @dev Guarantees that the msg.sender is allowed to transfer NFToken. + * @param _tokenId ID of the NFToken to transfer. + */ + modifier canTransfer(uint256 _tokenId) { + address owner = idToOwner[_tokenId]; + require(!isPaused && ( + owner == msg.sender + || getApproved(_tokenId) == msg.sender + || ownerToOperators[owner][msg.sender]) + ); + + _; + } + + /* + * @dev Sets if NFTokens are paused or not. + * @param _isPaused Pause status. + */ + function setPause(bool _isPaused) + external + onlyOwner + { + require(isPaused != _isPaused); + isPaused = _isPaused; + IsPaused(_isPaused); + } + +} \ No newline at end of file diff --git a/contracts/tokens/SettableTransferXcert.sol b/contracts/tokens/SettableTransferXcert.sol deleted file mode 100644 index 93823d8..0000000 --- a/contracts/tokens/SettableTransferXcert.sol +++ /dev/null @@ -1,53 +0,0 @@ -pragma solidity ^0.4.19; - -import "./Xcert.sol"; - -contract SettableTransferXcert is Xcert { - - /* - * @dev This emits when ability of beeing able to transfer NFTokens changes. - */ - event TransferStatusChange(bool _isTransferable); - - /* - * @dev Are NFTokens transferable or not. - */ - bool public isTransferable; - - function SettableTransferXcert(string _name, string _symbol) - Xcert(_name, _symbol) - public - { - supportedInterfaces[0x9cd23707] = true; // SettableTransferXcert - isTransferable = true; - } - - /* - * @dev Guarantees that the msg.sender is allowed to transfer NFToken. - * @param _tokenId ID of the NFToken to transfer. - */ - modifier canTransfer(uint256 _tokenId) { - address owner = idToOwner[_tokenId]; - require(isTransferable && ( - owner == msg.sender - || getApproved(_tokenId) == msg.sender - || ownerToOperators[owner][msg.sender]) - ); - - _; - } - - /* - * @dev Sets if NFTokens are transferable or not. - * @param _isTransferable Transferable status. - */ - function setTransferable(bool _isTransferable) - external - onlyOwner - { - require(isTransferable != _isTransferable); - isTransferable = _isTransferable; - TransferStatusChange(_isTransferable); - } - -} \ No newline at end of file diff --git a/contracts/utils/Selector.sol b/contracts/utils/Selector.sol index 706188c..8752e61 100644 --- a/contracts/utils/Selector.sol +++ b/contracts/utils/Selector.sol @@ -2,7 +2,7 @@ pragma solidity ^0.4.19; import "../tokens/Xcert.sol"; import "../tokens/BurnableXcert.sol"; -import "../tokens/SettableTransferXcert.sol"; +import "../tokens/PausableXcert.sol"; import "../tokens/ChainableXcert.sol"; import "../protocol/Minter.sol"; import "../protocol/Trader.sol"; @@ -23,9 +23,9 @@ contract Selector { return i.burn.selector; } - function calculateSettableTransferXcertSelector() public pure returns (bytes4) { - SettableTransferXcert i; - return i.setTransferable.selector; + function calculatePausableXcertSelector() public pure returns (bytes4) { + PausableXcert i; + return i.setPause.selector; } function calculateChainableXcertSelector() public pure returns (bytes4) { diff --git a/test/mocks/XcertMock.sol b/test/mocks/XcertMock.sol deleted file mode 100644 index b722e58..0000000 --- a/test/mocks/XcertMock.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.4.19; - -import "../../contracts/tokens/BurnableXcert.sol"; -import "../../contracts/tokens/SettableTransferXcert.sol"; -import "../../contracts/tokens/ChainableXcert.sol"; - -contract XcertMock is BurnableXcert, SettableTransferXcert, ChainableXcert { - -function XcertMock(string _name, string _symbol) - BurnableXcert(_name, _symbol) - SettableTransferXcert(_name, _symbol) - ChainableXcert(_name, _symbol) - public - { - - } -} \ No newline at end of file diff --git a/test/tokens/PausableXcert.test.js b/test/tokens/PausableXcert.test.js new file mode 100644 index 0000000..78b54c7 --- /dev/null +++ b/test/tokens/PausableXcert.test.js @@ -0,0 +1,45 @@ +const PausableXcert = artifacts.require('PausableXcert'); +const util = require('ethjs-util'); +const assertRevert = require('../helpers/assertRevert'); + +contract('PausableXcert', (accounts) => { + let xcert; + let id1 = web3.sha3('test1'); + let id2 = web3.sha3('test2'); + let id3 = web3.sha3('test3'); + let id4 = web3.sha3('test4'); + let mockProof = "1e205550c271490347e5e2393a02e94d284bbe9903f023ba098355b8d75974c8"; + + beforeEach(async function () { + xcert = await PausableXcert.new('Foo', 'F'); + }); + + it('correctly sets pause state', async () => { + var { logs } = await xcert.setPause(true); + let isPausedEvent = logs.find(e => e.event === 'IsPaused'); + assert.notEqual(isPausedEvent, undefined); + var pauseState = await xcert.isPaused(); + assert.equal(pauseState, true); + }); + + it('reverts trying to set the same pause state', async () => { + await assertRevert(xcert.setPause(false)); + }); + + it('reverts when someone else then the owner tries to change pause state', async () => { + await assertRevert(xcert.setPause(true, {from: accounts[1]})); + }); + + it('succefully transfers when token is not paused', async () => { + await xcert.mint(accounts[0], id1, mockProof, 'url1'); + await xcert.transferFrom(accounts[0], accounts[1], id1); + var owner = await xcert.ownerOf(id1); + assert.equal(owner, accounts[1]); + }); + + it('reverts trying to transfer when token is paused', async () => { + await xcert.mint(accounts[0], id1, mockProof, 'url1'); + await xcert.setPause(true); + await assertRevert(xcert.transferFrom(accounts[0], accounts[1], id1)); + }); +}); diff --git a/test/tokens/SettableTransferXcert.test.js b/test/tokens/SettableTransferXcert.test.js deleted file mode 100644 index 36a823a..0000000 --- a/test/tokens/SettableTransferXcert.test.js +++ /dev/null @@ -1,45 +0,0 @@ -const SettableTransferXcert = artifacts.require('SettableTransferXcert'); -const util = require('ethjs-util'); -const assertRevert = require('../helpers/assertRevert'); - -contract('SettableTransferXcert', (accounts) => { - let xcert; - let id1 = web3.sha3('test1'); - let id2 = web3.sha3('test2'); - let id3 = web3.sha3('test3'); - let id4 = web3.sha3('test4'); - let mockProof = "1e205550c271490347e5e2393a02e94d284bbe9903f023ba098355b8d75974c8"; - - beforeEach(async function () { - xcert = await SettableTransferXcert.new('Foo', 'F'); - }); - - it('correctly sets transfer status', async () => { - var { logs } = await xcert.setTransferable(false); - let transferStatusChangeEvent = logs.find(e => e.event === 'TransferStatusChange'); - assert.notEqual(transferStatusChangeEvent, undefined); - var transferState = await xcert.isTransferable(); - assert.equal(transferState, false); - }); - - it('reverts trying to set the same transferState', async () => { - await assertRevert(xcert.setTransferable(true)); - }); - - it('reverts when someone else then the owner tries to change transfer state', async () => { - await assertRevert(xcert.setTransferable(false, {from: accounts[1]})); - }); - - it('succefully transfers when transfers are enabled', async () => { - await xcert.mint(accounts[0], id1, mockProof, 'url1'); - await xcert.transferFrom(accounts[0], accounts[1], id1); - var owner = await xcert.ownerOf(id1); - assert.equal(owner, accounts[1]); - }); - - it('reverts trying to transfer when transfers are disabled', async () => { - await xcert.mint(accounts[0], id1, mockProof, 'url1'); - await xcert.setTransferable(false); - await assertRevert(xcert.transferFrom(accounts[0], accounts[1], id1)); - }); -}); diff --git a/test/tokens/XcertMock.test.js b/test/tokens/XcertMock.test.js index 500f6ea..7ec3b94 100644 --- a/test/tokens/XcertMock.test.js +++ b/test/tokens/XcertMock.test.js @@ -23,7 +23,7 @@ contract('XcertMock', (accounts) => { }); it('reverts trying to transfer when transfers are disabled', async () => { - await xcert.setTransferable(false); + await xcert.setPause(true); await assertRevert(xcert.transferFrom(accounts[0], accounts[1], id1)); }); diff --git a/test/utils/Selector.test.js b/test/utils/Selector.test.js index f986679..0b164bb 100644 --- a/test/utils/Selector.test.js +++ b/test/utils/Selector.test.js @@ -1,7 +1,7 @@ const Xcert = artifacts.require('Xcert'); const BurnableXcert = artifacts.require('BurnableXcert'); const ChainableXcert = artifacts.require('ChainableXcert'); -const SettableTransferXcert = artifacts.require('SettableTransferXcert'); +const PausableXcert = artifacts.require('PausableXcert'); const Minter = artifacts.require('Minter'); const Trader = artifacts.require('Trader'); const Swapper = artifacts.require('Swapper'); @@ -29,9 +29,9 @@ contract('Selector', (accounts) => { assert.equal(supports, true); }); - it('Checks SettableTransferXcert selector', async () => { - var xcert = await SettableTransferXcert.new('Foo', 'F'); - var bytes = await selector.calculateSettableTransferXcertSelector(); + it('Checks PausableXcert selector', async () => { + var xcert = await PausableXcert.new('Foo', 'F'); + var bytes = await selector.calculatePausableXcertSelector(); var supports = await xcert.supportsInterface(bytes); assert.equal(supports, true); });