From c4fe2d3249ff6ffaa4a9f8f6489c5901c571bf63 Mon Sep 17 00:00:00 2001 From: Lamengao Date: Thu, 30 Aug 2018 08:04:54 +0800 Subject: [PATCH 1/3] getApproved require the given token ID exist --- contracts/token/ERC721/ERC721BasicToken.sol | 2 ++ test/token/ERC721/ERC721MintBurn.behavior.js | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/contracts/token/ERC721/ERC721BasicToken.sol b/contracts/token/ERC721/ERC721BasicToken.sol index 568be300cbc..e6f4a49a3f8 100644 --- a/contracts/token/ERC721/ERC721BasicToken.sol +++ b/contracts/token/ERC721/ERC721BasicToken.sol @@ -79,10 +79,12 @@ contract ERC721BasicToken is SupportsInterfaceWithLookup, ERC721Basic { /** * @dev Gets the approved address for a token ID, or zero if no address set + * Reverts if the token ID does not exist * @param _tokenId uint256 ID of the token to query the approval of * @return address currently approved for the given token ID */ function getApproved(uint256 _tokenId) public view returns (address) { + require(_exists(_tokenId)); return tokenApprovals[_tokenId]; } diff --git a/test/token/ERC721/ERC721MintBurn.behavior.js b/test/token/ERC721/ERC721MintBurn.behavior.js index c09480a38b7..910de98a3e0 100644 --- a/test/token/ERC721/ERC721MintBurn.behavior.js +++ b/test/token/ERC721/ERC721MintBurn.behavior.js @@ -91,8 +91,10 @@ function shouldBehaveLikeMintAndBurnERC721Token (accounts) { logs = result.logs; }); - it('clears the approval', async function () { - (await this.token.getApproved(tokenId)).should.be.equal(ZERO_ADDRESS); + context('when the token ID does not exist', function () { + it('reverts', async function () { + await assertRevert(this.token.getApproved(tokenId)); + }); }); }); From b25e67e8ef8ad72d200fd7ffabc94f3311e5c0e0 Mon Sep 17 00:00:00 2001 From: Leo Arias Date: Thu, 6 Sep 2018 21:11:12 +0000 Subject: [PATCH 2/3] missing commit from merge --- contracts/token/ERC721/ERC721Basic.sol | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contracts/token/ERC721/ERC721Basic.sol b/contracts/token/ERC721/ERC721Basic.sol index fcc8397ea87..79e70a870e3 100644 --- a/contracts/token/ERC721/ERC721Basic.sol +++ b/contracts/token/ERC721/ERC721Basic.sol @@ -93,10 +93,12 @@ contract ERC721Basic is SupportsInterfaceWithLookup, IERC721Basic { /** * @dev Gets the approved address for a token ID, or zero if no address set + * Reverts if the token ID does not exist. * @param _tokenId uint256 ID of the token to query the approval of * @return address currently approved for the given token ID */ function getApproved(uint256 _tokenId) public view returns (address) { + require(_exists(_tokenId)); return tokenApprovals_[_tokenId]; } From 7d62c0c10267a28726d0f43f5698f072d5aabfed Mon Sep 17 00:00:00 2001 From: Leo Arias Date: Thu, 6 Sep 2018 21:21:09 +0000 Subject: [PATCH 3/3] clarify the test descriptions --- test/token/ERC721/ERC721MintBurn.behavior.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/token/ERC721/ERC721MintBurn.behavior.js b/test/token/ERC721/ERC721MintBurn.behavior.js index 2a265224f89..ad7d207363d 100644 --- a/test/token/ERC721/ERC721MintBurn.behavior.js +++ b/test/token/ERC721/ERC721MintBurn.behavior.js @@ -84,14 +84,14 @@ function shouldBehaveLikeMintAndBurnERC721 (accounts) { }); }); - describe('when there is a previous approval', function () { + describe('when there is a previous approval burned', function () { beforeEach(async function () { await this.token.approve(accounts[1], tokenId, { from: sender }); const result = await this.token.burn(tokenId, { from: sender }); logs = result.logs; }); - context('when the token ID does not exist', function () { + context('getApproved', function () { it('reverts', async function () { await assertRevert(this.token.getApproved(tokenId)); });