mirror of openzeppelin-contracts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openzeppelin-contracts/test/token/ERC721/ERC721.behavior.js

628 lines
23 KiB

const { BN, constants, expectEvent, expectRevert } = require('@openzeppelin/test-helpers');
const { expect } = require('chai');
const { ZERO_ADDRESS } = constants;
const { shouldSupportInterfaces } = require('../../introspection/SupportsInterface.behavior');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
const ERC721ReceiverMock = artifacts.require('ERC721ReceiverMock.sol');
const ERC721Mock = artifacts.require('ERC721Mock.sol');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
function shouldBehaveLikeERC721 (
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
creator,
minter,
[owner, approved, anotherApproved, operator, other]
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
) {
const firstTokenId = new BN(1);
const secondTokenId = new BN(2);
const unknownTokenId = new BN(3);
const RECEIVER_MAGIC_VALUE = '0x150b7a02';
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
describe('like an ERC721', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.mint(owner, firstTokenId, { from: minter });
await this.token.mint(owner, secondTokenId, { from: minter });
this.toWhom = other; // default to anyone for toWhom in context-dependent tests
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
describe('balanceOf', function () {
context('when the given address owns some tokens', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('returns the amount of tokens owned by the given address', async function () {
expect(await this.token.balanceOf(owner)).to.be.bignumber.equal('2');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the given address does not own any tokens', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('returns 0', async function () {
expect(await this.token.balanceOf(other)).to.be.bignumber.equal('0');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when querying the zero address', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('throws', async function () {
await expectRevert(
this.token.balanceOf(ZERO_ADDRESS), 'ERC721: balance query for the zero address'
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
});
describe('ownerOf', function () {
context('when the given token ID was tracked by this token', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
const tokenId = firstTokenId;
it('returns the owner of the given token ID', async function () {
expect(await this.token.ownerOf(tokenId)).to.be.equal(owner);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the given token ID was not tracked by this token', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
const tokenId = unknownTokenId;
it('reverts', async function () {
await expectRevert(
this.token.ownerOf(tokenId), 'ERC721: owner query for nonexistent token'
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
});
describe('transfers', function () {
const tokenId = firstTokenId;
const data = '0x42';
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
let logs = null;
beforeEach(async function () {
await this.token.approve(approved, tokenId, { from: owner });
await this.token.setApprovalForAll(operator, true, { from: owner });
});
const transferWasSuccessful = function ({ owner, tokenId, approved }) {
it('transfers the ownership of the given token ID to the given address', async function () {
expect(await this.token.ownerOf(tokenId)).to.be.equal(this.toWhom);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
it('clears the approval for the token ID', async function () {
expect(await this.token.getApproved(tokenId)).to.be.equal(ZERO_ADDRESS);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
if (approved) {
it('emit only a transfer event', async function () {
expectEvent.inLogs(logs, 'Transfer', {
from: owner,
to: this.toWhom,
tokenId: tokenId,
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
} else {
it('emits only a transfer event', async function () {
expectEvent.inLogs(logs, 'Transfer', {
from: owner,
to: this.toWhom,
tokenId: tokenId,
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
}
it('adjusts owners balances', async function () {
expect(await this.token.balanceOf(owner)).to.be.bignumber.equal('1');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
it('adjusts owners tokens by index', async function () {
if (!this.token.tokenOfOwnerByIndex) return;
expect(await this.token.tokenOfOwnerByIndex(this.toWhom, 0)).to.be.bignumber.equal(tokenId);
expect(await this.token.tokenOfOwnerByIndex(owner, 0)).to.be.bignumber.not.equal(tokenId);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
};
const shouldTransferTokensByUsers = function (transferFunction) {
context('when called by the owner', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
({ logs } = await transferFunction.call(this, owner, this.toWhom, tokenId, { from: owner }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
transferWasSuccessful({ owner, tokenId, approved });
});
context('when called by the approved individual', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
({ logs } = await transferFunction.call(this, owner, this.toWhom, tokenId, { from: approved }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
transferWasSuccessful({ owner, tokenId, approved });
});
context('when called by the operator', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
({ logs } = await transferFunction.call(this, owner, this.toWhom, tokenId, { from: operator }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
transferWasSuccessful({ owner, tokenId, approved });
});
context('when called by the owner without an approved user', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
await this.token.approve(ZERO_ADDRESS, tokenId, { from: owner });
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
({ logs } = await transferFunction.call(this, owner, this.toWhom, tokenId, { from: operator }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
transferWasSuccessful({ owner, tokenId, approved: null });
});
context('when sent to the owner', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
({ logs } = await transferFunction.call(this, owner, owner, tokenId, { from: owner }));
});
it('keeps ownership of the token', async function () {
expect(await this.token.ownerOf(tokenId)).to.be.equal(owner);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('clears the approval for the token ID', async function () {
expect(await this.token.getApproved(tokenId)).to.be.equal(ZERO_ADDRESS);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
it('emits only a transfer event', async function () {
expectEvent.inLogs(logs, 'Transfer', {
from: owner,
to: owner,
tokenId: tokenId,
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('keeps the owner balance', async function () {
expect(await this.token.balanceOf(owner)).to.be.bignumber.equal('2');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('keeps same tokens by index', async function () {
if (!this.token.tokenOfOwnerByIndex) return;
const tokensListed = await Promise.all(
[0, 1].map(i => this.token.tokenOfOwnerByIndex(owner, i))
);
expect(tokensListed.map(t => t.toNumber())).to.have.members(
[firstTokenId.toNumber(), secondTokenId.toNumber()]
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the address of the previous owner is incorrect', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('reverts', async function () {
await expectRevert(
transferFunction.call(this, other, other, tokenId, { from: owner }),
'ERC721: transfer of token that is not own'
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the sender is not authorized for the token id', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('reverts', async function () {
await expectRevert(
transferFunction.call(this, owner, other, tokenId, { from: other }),
'ERC721: transfer caller is not owner nor approved'
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the given token ID does not exist', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('reverts', async function () {
await expectRevert(
transferFunction.call(this, owner, other, unknownTokenId, { from: owner }),
'ERC721: operator query for nonexistent token'
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the address to transfer the token to is the zero address', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('reverts', async function () {
await expectRevert(
transferFunction.call(this, owner, ZERO_ADDRESS, tokenId, { from: owner }),
'ERC721: transfer to the zero address'
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
};
describe('via transferFrom', function () {
shouldTransferTokensByUsers(function (from, to, tokenId, opts) {
return this.token.transferFrom(from, to, tokenId, opts);
});
});
describe('via safeTransferFrom', function () {
const safeTransferFromWithData = function (from, to, tokenId, opts) {
return this.token.methods['safeTransferFrom(address,address,uint256,bytes)'](from, to, tokenId, data, opts);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
};
const safeTransferFromWithoutData = function (from, to, tokenId, opts) {
return this.token.methods['safeTransferFrom(address,address,uint256)'](from, to, tokenId, opts);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
};
const shouldTransferSafely = function (transferFun, data) {
describe('to a user account', function () {
shouldTransferTokensByUsers(transferFun);
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
describe('to a valid receiver contract', function () {
beforeEach(async function () {
this.receiver = await ERC721ReceiverMock.new(RECEIVER_MAGIC_VALUE, false);
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
this.toWhom = this.receiver.address;
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
shouldTransferTokensByUsers(transferFun);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('should call onERC721Received', async function () {
const receipt = await transferFun.call(this, owner, this.receiver.address, tokenId, { from: owner });
await expectEvent.inTransaction(receipt.tx, ERC721ReceiverMock, 'Received', {
operator: owner,
from: owner,
tokenId: tokenId,
data: data,
});
});
it('should call onERC721Received from approved', async function () {
const receipt = await transferFun.call(this, owner, this.receiver.address, tokenId, { from: approved });
await expectEvent.inTransaction(receipt.tx, ERC721ReceiverMock, 'Received', {
operator: approved,
from: owner,
tokenId: tokenId,
data: data,
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
describe('with an invalid token id', function () {
it('reverts', async function () {
await expectRevert(
transferFun.call(
this,
owner,
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
this.receiver.address,
unknownTokenId,
{ from: owner },
),
'ERC721: operator query for nonexistent token'
);
});
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
};
describe('with data', function () {
shouldTransferSafely(safeTransferFromWithData, data);
});
describe('without data', function () {
shouldTransferSafely(safeTransferFromWithoutData, null);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
describe('to a receiver contract returning unexpected value', function () {
it('reverts', async function () {
const invalidReceiver = await ERC721ReceiverMock.new('0x42', false);
await expectRevert(
this.token.safeTransferFrom(owner, invalidReceiver.address, tokenId, { from: owner }),
'ERC721: transfer to non ERC721Receiver implementer'
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
describe('to a receiver contract that throws', function () {
it('reverts', async function () {
const invalidReceiver = await ERC721ReceiverMock.new(RECEIVER_MAGIC_VALUE, true);
await expectRevert(
this.token.safeTransferFrom(owner, invalidReceiver.address, tokenId, { from: owner }),
'ERC721ReceiverMock: reverting'
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
describe('to a contract that does not implement the required function', function () {
it('reverts', async function () {
const invalidReceiver = this.token;
await expectRevert.unspecified(
this.token.safeTransferFrom(owner, invalidReceiver.address, tokenId, { from: owner })
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
});
});
describe('safe mint', function () {
const fourthTokenId = new BN(4);
const tokenId = fourthTokenId;
const data = '0x42';
beforeEach(async function () {
this.ERC721Mock = await ERC721Mock.new();
});
describe('via safeMint', function () { // regular minting is tested in ERC721Mintable.test.js and others
it('should call onERC721Received — with data', async function () {
this.receiver = await ERC721ReceiverMock.new(RECEIVER_MAGIC_VALUE, false);
const receipt = await this.ERC721Mock.safeMint(this.receiver.address, tokenId, data);
await expectEvent.inTransaction(receipt.tx, ERC721ReceiverMock, 'Received', {
from: ZERO_ADDRESS,
tokenId: tokenId,
data: data,
});
});
it('should call onERC721Received — without data', async function () {
this.receiver = await ERC721ReceiverMock.new(RECEIVER_MAGIC_VALUE, false);
const receipt = await this.ERC721Mock.safeMint(this.receiver.address, tokenId);
await expectEvent.inTransaction(receipt.tx, ERC721ReceiverMock, 'Received', {
from: ZERO_ADDRESS,
tokenId: tokenId,
});
});
context('to a receiver contract returning unexpected value', function () {
it('reverts', async function () {
const invalidReceiver = await ERC721ReceiverMock.new('0x42', false);
await expectRevert(
this.ERC721Mock.safeMint(invalidReceiver.address, tokenId),
'ERC721: transfer to non ERC721Receiver implementer'
);
});
});
context('to a receiver contract that throws', function () {
it('reverts', async function () {
const invalidReceiver = await ERC721ReceiverMock.new(RECEIVER_MAGIC_VALUE, true);
await expectRevert(
this.ERC721Mock.safeMint(invalidReceiver.address, tokenId),
'ERC721ReceiverMock: reverting'
);
});
});
context('to a contract that does not implement the required function', function () {
it('reverts', async function () {
const invalidReceiver = this.token;
await expectRevert.unspecified(
this.ERC721Mock.safeMint(invalidReceiver.address, tokenId)
);
});
});
});
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
describe('approve', function () {
const tokenId = firstTokenId;
let logs = null;
const itClearsApproval = function () {
it('clears approval for the token', async function () {
expect(await this.token.getApproved(tokenId)).to.be.equal(ZERO_ADDRESS);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
};
const itApproves = function (address) {
it('sets the approval for the target address', async function () {
expect(await this.token.getApproved(tokenId)).to.be.equal(address);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
};
const itEmitsApprovalEvent = function (address) {
it('emits an approval event', async function () {
expectEvent.inLogs(logs, 'Approval', {
owner: owner,
approved: address,
tokenId: tokenId,
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
};
context('when clearing approval', function () {
context('when there was no prior approval', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
({ logs } = await this.token.approve(ZERO_ADDRESS, tokenId, { from: owner }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
itClearsApproval();
itEmitsApprovalEvent(ZERO_ADDRESS);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
context('when there was a prior approval', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.approve(approved, tokenId, { from: owner });
({ logs } = await this.token.approve(ZERO_ADDRESS, tokenId, { from: owner }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
itClearsApproval();
itEmitsApprovalEvent(ZERO_ADDRESS);
});
});
context('when approving a non-zero address', function () {
context('when there was no prior approval', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
({ logs } = await this.token.approve(approved, tokenId, { from: owner }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
itApproves(approved);
itEmitsApprovalEvent(approved);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
context('when there was a prior approval to the same address', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.approve(approved, tokenId, { from: owner });
({ logs } = await this.token.approve(approved, tokenId, { from: owner }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
itApproves(approved);
itEmitsApprovalEvent(approved);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
context('when there was a prior approval to a different address', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.approve(anotherApproved, tokenId, { from: owner });
({ logs } = await this.token.approve(anotherApproved, tokenId, { from: owner }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
itApproves(anotherApproved);
itEmitsApprovalEvent(anotherApproved);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the address that receives the approval is the owner', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('reverts', async function () {
await expectRevert(
this.token.approve(owner, tokenId, { from: owner }), 'ERC721: approval to current owner'
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the sender does not own the given token ID', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('reverts', async function () {
await expectRevert(this.token.approve(approved, tokenId, { from: other }),
'ERC721: approve caller is not owner nor approved');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the sender is approved for the given token ID', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('reverts', async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.approve(approved, tokenId, { from: owner });
await expectRevert(this.token.approve(anotherApproved, tokenId, { from: approved }),
'ERC721: approve caller is not owner nor approved for all');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the sender is an operator', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.setApprovalForAll(operator, true, { from: owner });
({ logs } = await this.token.approve(approved, tokenId, { from: operator }));
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
itApproves(approved);
itEmitsApprovalEvent(approved);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
context('when the given token ID does not exist', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('reverts', async function () {
await expectRevert(this.token.approve(approved, unknownTokenId, { from: operator }),
'ERC721: owner query for nonexistent token');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
});
describe('setApprovalForAll', function () {
context('when the operator willing to approve is not the owner', function () {
context('when there is no operator approval set by the sender', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('approves the operator', async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.setApprovalForAll(operator, true, { from: owner });
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
expect(await this.token.isApprovedForAll(owner, operator)).to.equal(true);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
it('emits an approval event', async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
const { logs } = await this.token.setApprovalForAll(operator, true, { from: owner });
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
expectEvent.inLogs(logs, 'ApprovalForAll', {
owner: owner,
operator: operator,
approved: true,
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the operator was set as not approved', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.setApprovalForAll(operator, false, { from: owner });
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
it('approves the operator', async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.setApprovalForAll(operator, true, { from: owner });
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
expect(await this.token.isApprovedForAll(owner, operator)).to.equal(true);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
it('emits an approval event', async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
const { logs } = await this.token.setApprovalForAll(operator, true, { from: owner });
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
expectEvent.inLogs(logs, 'ApprovalForAll', {
owner: owner,
operator: operator,
approved: true,
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
it('can unset the operator approval', async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.setApprovalForAll(operator, false, { from: owner });
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
expect(await this.token.isApprovedForAll(owner, operator)).to.equal(false);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
context('when the operator was already approved', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
beforeEach(async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.setApprovalForAll(operator, true, { from: owner });
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
it('keeps the approval to the given address', async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
await this.token.setApprovalForAll(operator, true, { from: owner });
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
expect(await this.token.isApprovedForAll(owner, operator)).to.equal(true);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
it('emits an approval event', async function () {
RBAC and Ownable migration towards Roles (#1291) * Role tests (#1228) * Moved RBAC tests to access. * Added Roles.addMany and tests. * Fixed linter error. * Now using uint256 indexes. * Removed RBAC tokens (#1229) * Deleted RBACCappedTokenMock. * Removed RBACMintableToken. * Removed RBACMintableToken from the MintedCrowdsale tests. * Roles can now be transfered. (#1235) * Roles can now be transfered. * Now explicitly checking support for the null address. * Now rejecting transfer to a role-haver. * Added renounce, roles can no longer be transfered to 0. * Fixed linter errors. * Fixed a Roles test. * True Ownership (#1247) * Added barebones Secondary. * Added transferPrimary * Escrow is now Secondary instead of Ownable. * Now reverting on transfers to 0. * The Secondary's primary is now private. * MintableToken using Roles (#1236) * Minor test style improvements (#1219) * Changed .eq to .equal * Changed equal(bool) to .to.be.bool * Changed be.bool to equal(bool), disallowed unused expressions. * Add ERC165Query library (#1086) * Add ERC165Query library * Address PR Comments * Add tests and mocks from #1024 and refactor code slightly * Fix javascript and solidity linting errors * Split supportsInterface into three methods as discussed in #1086 * Change InterfaceId_ERC165 comment to match style in the rest of the repo * Fix max-len lint issue on ERC165Checker.sol * Conditionally ignore the asserts during solidity-coverage test * Switch to abi.encodeWithSelector and add test for account addresses * Switch to supportsInterfaces API as suggested by @frangio * Adding ERC165InterfacesSupported.sol * Fix style issues * Add test for supportsInterfaces returning false * Add ERC165Checker.sol newline * feat: fix coverage implementation * fix: solidity linting error * fix: revert to using boolean tests instead of require statements * fix: make supportsERC165Interface private again * rename SupportsInterfaceWithLookupMock to avoid name clashing * Added mint and burn tests for zero amounts. (#1230) * Changed .eq to .equal. (#1231) * ERC721 pausable token (#1154) * ERC721 pausable token * Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes * [~] paused token behavior * Add some detail to releasing steps (#1190) * add note about pulling upstream changes to release branch * add comment about upstream changes in merging section * Increase test coverage (#1237) * Fixed a SplitPayment test * Deleted unnecessary function. * Improved PostDeliveryCrowdsale tests. * Improved RefundableCrowdsale tests. * Improved MintedCrowdsale tests. * Improved IncreasingPriceCrowdsale tests. * Fixed a CappedCrowdsale test. * Improved TimedCrowdsale tests. * Improved descriptions of added tests. * ci: trigger docs update on tag (#1186) * MintableToken now uses Roles. * Fixed FinalizableCrowdsale test. * Roles can now be transfered. * Fixed tests related to MintableToken. * Removed Roles.check. * Renamed transferMintPermission. * Moved MinterRole * Fixed RBAC. * Adressed review comments. * Addressed review comments * Fixed linter errors. * Added Events tests of Pausable contract (#1207) * Fixed roles tests. * Rename events to past-tense (#1181) * fix: refactor sign.js and related tests (#1243) * fix: refactor sign.js and related tests * fix: remove unused dep * fix: update package.json correctly * Added "_" sufix to internal variables (#1171) * Added PublicRole test. * Fixed crowdsale tests. * Rename ERC interfaces to I prefix (#1252) * rename ERC20 to IERC20 * move ERC20.sol to IERC20.sol * rename StandardToken to ERC20 * rename StandardTokenMock to ERC20Mock * move StandardToken.sol to ERC20.sol, likewise test and mock files * rename MintableToken to ERC20Mintable * move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files * rename BurnableToken to ERC20Burnable * move BurnableToken.sol to ERC20Burnable.sol, likewise for related files * rename CappedToken to ERC20Capped * move CappedToken.sol to ERC20Capped.sol, likewise for related files * rename PausableToken to ERC20Pausable * move PausableToken.sol to ERC20Pausable.sol, likewise for related files * rename DetailedERC20 to ERC20Detailed * move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files * rename ERC721 to IERC721, and likewise for other related interfaces * move ERC721.sol to IERC721.sol, likewise for other 721 interfaces * rename ERC721Token to ERC721 * move ERC721Token.sol to ERC721.sol, likewise for related files * rename ERC721BasicToken to ERC721Basic * move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files * rename ERC721PausableToken to ERC721Pausable * move ERC721PausableToken.sol to ERC721Pausable.sol * rename ERC165 to IERC165 * move ERC165.sol to IERC165.sol * amend comment that ERC20 is based on FirstBlood * fix comments mentioning IERC721Receiver * added explicit visibility (#1261) * Remove underscores from event parameters. (#1258) * Remove underscores from event parameters. Fixes #1175 * Add comment about ERC * Move contracts to subdirectories (#1253) * Move contracts to subdirectories Fixes #1177. This Change also removes the LimitBalance contract. * fix import * move MerkleProof to cryptography * Fix import * Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254) * remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner * remove unused ERC223TokenMock * remove Contactable * remove TokenDestructible * remove DeprecatedERC721 * inline Destructible#destroy in Bounty * remove Destructible * Functions in interfaces changed to "external" (#1263) * Add a leading underscore to internal and private functions. (#1257) * Add a leading underscore to internal and private functions. Fixes #1176 * Remove super * update the ERC721 changes * add missing underscore after merge * Fix mock * Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265) * Improve encapsulation on Whitelist * remove only * update whitelisted crowdsale test * Improve encapsulation on SignatureBouncer * fix missing test * Improve encapsulation on RBAC example * Improve encapsulation on RBAC example * Remove extra visibility * Improve encapsulation on ERC20 Mintable * Improve encapsulation on Superuser * fix lint * add missing constant * Addressed review comments. * Fixed build error. * Improved Roles API. (#1280) * Improved Roles API. * fix linter error * Added PauserRole. (#1283) * Remove Claimable, DelayedClaimable, Heritable (#1274) * remove Claimable, DelayedClaimable, Heritable * remove SimpleSavingsWallet example which used Heritable (cherry picked from commit 0dc711732a297e70af63f23a9b52e4b3712eac40) * Role behavior tests (#1285) * Added role tests. * Added PauserRole tests to contracts that have that role. * Added MinterRole tests to contracts that have that role. * Fixed linter errors. * Migrate Ownable to Roles (#1287) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Remove RBAC, SignatureBouncer refactor (#1289) * Added CapperRole. * RefundEscrow is now Secondary. * FinalizableCrowdsale is no longer Ownable. * Removed Whitelist and WhitelistedCrowdsale, redesign needed. * Fixed linter errors, disabled lbrace due to it being buggy. * Moved SignatureBouncer tests. * Deleted RBAC and Superuser. * Deleted rbac directory. * Updated readme. * SignatureBouncer now uses SignerRole, renamed bouncer to signer. * feat: implement ERC721Mintable and ERC721Burnable (#1276) * feat: implement ERC721Mintable and ERC721Burnable * fix: linting errors * fix: remove unused mintable mock for ERC721BasicMock * fix: add finishMinting tests * fix: catch MintFinished typo * inline ERC721Full behavior * undo pretty formatting * fix lint errors * rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable * Fix the merge with the privatization branch * remove duplicate CapperRole test
6 years ago
const { logs } = await this.token.setApprovalForAll(operator, true, { from: owner });
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
expectEvent.inLogs(logs, 'ApprovalForAll', {
owner: owner,
operator: operator,
approved: true,
});
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
});
context('when the operator is the owner', function () {
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
it('reverts', async function () {
await expectRevert(this.token.setApprovalForAll(owner, true, { from: owner }),
'ERC721: approve to caller');
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
});
});
describe('getApproved', async function () {
context('when token is not minted', async function () {
it('reverts', async function () {
await expectRevert(
this.token.getApproved(unknownTokenId, { from: minter }),
'ERC721: approved query for nonexistent token'
);
});
});
context('when token has been minted ', async function () {
it('should return the zero address', async function () {
expect(await this.token.getApproved(firstTokenId)).to.be.equal(
ZERO_ADDRESS
);
});
context('when account has been approved', async function () {
beforeEach(async function () {
await this.token.approve(approved, firstTokenId, { from: owner });
});
it('should return approved account', async function () {
expect(await this.token.getApproved(firstTokenId)).to.be.equal(approved);
});
});
});
});
shouldSupportInterfaces([
'ERC165',
'ERC721',
]);
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
});
}
module.exports = {
shouldBehaveLikeERC721,
ERC721 full implementation (#803) * Rename current ERC721 implementation to BaseERC721 * Implement ERC721 optional & approveAll functionality * Support for new ERC721 interface - Tests for new features are pending - ERC721 is abstract, since it requires metadata implementation - Move some methods into DeprecatedERC721 contract - Reorganise base vs full implementation - Pending tokenByIndex * Add more tests for ERC721 * Implement suggestions by @dekz * Update comments in ERC721 contracts * Implement tokensByIndex extension - Remove restrictions from mock mint and burn calls * Add default implementation for metadata URI This allows token implementation to be non-abstract * Allow operators to call approve on a token * Remove gas stipend restriction in call to 721 receiver * Remove deprecated implementation We only want to keep the interface, for interacting with already deployed contracts * Add notice to isContract helper on constract constructors * Change natspec delimiters for consistency * Minor linting fixes * Add constant modifier to ERC721_RECEIVED magic value * Use 4-params safeTransferFrom for implementing the 3-params overload * Minor text changes in natspec comments * Use address(0) instead of 0 or 0x0 * Use if-statements instead of boolean one-liners for clarity :-( * Keep ownedTokensCount state var in sync in full ERC721 implementation * Fix incorrect comparison when burning ERC721 tokens with metadata * Use address(0) instead of 0 in one more place in ERC721 * Throw when querying balance for the zero address Required by the spec * Update links to approved version of EIP721 * Use explicit size for uint * Remove unneeded internal function in ERC721 Also rename addToken and removeToken for added clarity * Use underscore instead of 'do' prefix for internal methods in ERC721 * Fix failing test due to events reordering in ERC721 safe transfer * Fix bug introduced in 74db03ba06 * Remove do prefix for internal setTokenUri method * Allow transfers to self in ERC721
7 years ago
};