Skip to content

Commit d02c12a

Browse files
authored
Merge pull request #872 from oceanprotocol/feature/access_list_events
add AccessList events
2 parents ac37c0f + 461f555 commit d02c12a

File tree

2 files changed

+43
-9
lines changed

2 files changed

+43
-9
lines changed

contracts/accesslists/AccessList.sol

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,23 @@ import "@openzeppelin/contracts/access/Ownable.sol";
2222
contract AccessList is Ownable, ERC721Enumerable,ERC721URIStorage {
2323
using Counters for Counters.Counter;
2424
Counters.Counter private _tokenIds;
25+
26+
27+
event NewAccessList(
28+
address indexed contractAddress,
29+
address indexed owner
30+
);
31+
event AddressAdded(
32+
address indexed wallet,
33+
uint256 tokenId
34+
);
35+
event AddressRemoved(
36+
uint256 tokenId
37+
);
38+
2539
constructor(string memory _name, string memory _symbol)
2640
ERC721(_name, _symbol) {
27-
41+
emit NewAccessList(address(this),_msgSender());
2842
}
2943

3044
function tokenURI(uint256 tokenId)
@@ -54,6 +68,7 @@ contract AccessList is Ownable, ERC721Enumerable,ERC721URIStorage {
5468
function _add(address user, string memory _tokenURI) private returns (uint256) {
5569
_tokenIds.increment();
5670
uint256 newItemId = _tokenIds.current();
71+
emit AddressAdded(user,newItemId);
5772
_mint(user, newItemId);
5873
_setTokenURI(newItemId, _tokenURI);
5974
return newItemId;
@@ -67,17 +82,18 @@ contract AccessList is Ownable, ERC721Enumerable,ERC721URIStorage {
6782
/**
6883
* @notice Batch Mint only for owner
6984
*/
70-
function batchMint(address[] memory user,string[] memory tokenURI) external onlyOwner
85+
function batchMint(address[] memory user,string[] memory _tokenURI) external onlyOwner
7186
{
7287
uint256 i;
73-
require(user.length==tokenURI.length);
88+
require(user.length==_tokenURI.length);
7489
for(i=0;i<user.length;i++){
75-
_add(user[i],tokenURI[i]);
90+
_add(user[i],_tokenURI[i]);
7691
}
7792
}
7893

7994
function burn(uint256 tokenId) public {
8095
require(_msgSender() == super.owner() || _msgSender()==super._ownerOf(tokenId),"ERC721: Not owner");
96+
emit AddressRemoved(tokenId);
8197
_burn(tokenId);
8298
}
8399
// The following functions are overrides required by Solidity.

test/unit/accesslists/AccessList.test.js

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
const { expect } = require('chai');
1+
const { expect, assert } = require('chai');
22
const { ethers } = require("hardhat");
33
const { json } = require('hardhat/internal/core/params/argumentTypes');
4+
const { getEventFromTx } = require("../../helpers/utils")
5+
6+
47

58
let metadata = {"uptime":100,"image":"ipfs://123"}
69
let signers
@@ -11,7 +14,11 @@ describe('AccessLists tests', function () {
1114
this.accessListContract = await ethers.getContractFactory('AccessList');
1215
this.accessListContract = await this.accessListContract.deploy("AccessList","A");
1316
await this.accessListContract.deployed();
14-
17+
const txReceipt = await this.accessListContract.deployTransaction.wait();
18+
let event = getEventFromTx(txReceipt, 'NewAccessList')
19+
assert(event, "Cannot find NewAccessList event")
20+
const contractAddress = event.args[0];
21+
assert(contractAddress==this.accessListContract.address,"Access list contract address missmatch")
1522
// Get the contractOwner and collector address
1623
signers = await ethers.getSigners();
1724

@@ -30,7 +37,12 @@ describe('AccessLists tests', function () {
3037

3138

3239
it('Mints one token, using mint', async function () {
33-
await this.accessListContract.mint(signers[0].address,JSON.stringify(metadata));
40+
const tx=await this.accessListContract.mint(signers[0].address,JSON.stringify(metadata));
41+
const txReceipt = await tx.wait();
42+
let event = getEventFromTx(txReceipt, 'AddressAdded')
43+
assert(event, "Cannot find AddressAdded event")
44+
const walletAddress = event.args[0];
45+
assert(walletAddress==signers[0].address,"AddressAdded event: wallet address missmatch")
3446
this.tokenID++;
3547
expect(await this.accessListContract.balanceOf(signers[0].address)).to.equal(1);
3648
expect(await this.accessListContract.ownerOf(this.tokenID)).to.equal(signers[0].address);
@@ -93,9 +105,15 @@ describe('AccessLists tests', function () {
93105
});
94106

95107
it('Owner should be able to burn', async function () {
108+
const thisTokenId=6
96109
const howMany=await this.accessListContract.balanceOf(signers[1].address)
97-
expect(await this.accessListContract.ownerOf(6)).to.equal(signers[1].address);
98-
await this.accessListContract.burn(6);
110+
expect(await this.accessListContract.ownerOf(thisTokenId)).to.equal(signers[1].address);
111+
const tx=await this.accessListContract.burn(thisTokenId);
112+
const txReceipt = await tx.wait();
113+
let event = getEventFromTx(txReceipt, 'AddressRemoved')
114+
assert(event, "Cannot find AddressRemoved event")
115+
const walletAddress = event.args[0];
116+
assert(event.args[0]==thisTokenId,"AddressRemoved event: tokenId missmatch")
99117
expect(await this.accessListContract.balanceOf(signers[1].address)).to.equal(howMany-1);
100118

101119

0 commit comments

Comments
 (0)