git.delta.rocks / unique-network / refs/commits / f26467cd5678

difftreelog

CORE-386 Fix names and tests

Trubnikov Sergey2022-06-10parent: #84e2b3d.patch.diff
in: master

8 files changed

modifiedpallets/common/src/erc.rsdiffbeforeafterboth
--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -211,7 +211,7 @@
 		Ok(())
 	}
 
-	#[solidity(rename_selector = "setNesting")]
+	#[solidity(rename_selector = "setCollectionNesting")]
 	fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {
 		check_is_owner_or_admin(caller, self)?;
 		let permissions = CollectionPermissions {
@@ -231,7 +231,7 @@
 		save(self)
 	}
 
-	#[solidity(rename_selector = "setNesting")]
+	#[solidity(rename_selector = "setCollectionNesting")]
 	fn set_nesting(
 		&mut self,
 		caller: caller,
@@ -309,7 +309,7 @@
 		Ok(())
 	}
 
-	fn set_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {
+	fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {
 		check_is_owner_or_admin(caller, self)?;
 		let permissions = CollectionPermissions { mint_mode: Some(mode), .. Default::default() };
 		self.collection.permissions = <Pallet<T>>::clamp_permissions(
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -330,7 +330,7 @@
 	}
 }
 
-// Selector: c0de6be0
+// Selector: 7d9262e6
 contract Collection is Dummy, ERC165 {
 	// Selector: setCollectionProperty(string,bytes) 2f073f66
 	function setCollectionProperty(string memory key, bytes memory value)
@@ -427,15 +427,17 @@
 		dummy;
 	}
 
-	// Selector: setNesting(bool) e8fc50dd
-	function setNesting(bool enable) public {
+	// Selector: setCollectionNesting(bool) 112d4586
+	function setCollectionNesting(bool enable) public {
 		require(false, stub_error);
 		enable;
 		dummy = 0;
 	}
 
-	// Selector: setNesting(bool,address[]) 7df12a9a
-	function setNesting(bool enable, address[] memory collections) public {
+	// Selector: setCollectionNesting(bool,address[]) 64872396
+	function setCollectionNesting(bool enable, address[] memory collections)
+		public
+	{
 		require(false, stub_error);
 		enable;
 		collections;
@@ -463,8 +465,8 @@
 		dummy;
 	}
 
-	// Selector: setMintMode(bool) 5dea9bd5
-	function setMintMode(bool mode) public {
+	// Selector: setCollectionMintMode(bool) 00018e84
+	function setCollectionMintMode(bool mode) public {
 		require(false, stub_error);
 		mode;
 		dummy = 0;
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -191,7 +191,7 @@
 	function totalSupply() external view returns (uint256);
 }
 
-// Selector: c0de6be0
+// Selector: 7d9262e6
 interface Collection is Dummy, ERC165 {
 	// Selector: setCollectionProperty(string,bytes) 2f073f66
 	function setCollectionProperty(string memory key, bytes memory value)
@@ -235,11 +235,12 @@
 	// Selector: removeCollectionAdmin(address) fafd7b42
 	function removeCollectionAdmin(address admin) external view;
 
-	// Selector: setNesting(bool) e8fc50dd
-	function setNesting(bool enable) external;
+	// Selector: setCollectionNesting(bool) 112d4586
+	function setCollectionNesting(bool enable) external;
 
-	// Selector: setNesting(bool,address[]) 7df12a9a
-	function setNesting(bool enable, address[] memory collections) external;
+	// Selector: setCollectionNesting(bool,address[]) 64872396
+	function setCollectionNesting(bool enable, address[] memory collections)
+		external;
 
 	// Selector: setCollectionAccess(uint8) 41835d4c
 	function setCollectionAccess(uint8 mode) external;
@@ -250,8 +251,8 @@
 	// Selector: removeFromCollectionAllowList(address) 85c51acb
 	function removeFromCollectionAllowList(address user) external view;
 
-	// Selector: setMintMode(bool) 5dea9bd5
-	function setMintMode(bool mode) external;
+	// Selector: setCollectionMintMode(bool) 00018e84
+	function setCollectionMintMode(bool mode) external;
 }
 
 // Selector: d74d154f
modifiedtests/src/eth/collectionAdmin.test.tsdiffbeforeafterboth
25} from './util/helpers';25} from './util/helpers';
2626
27describe('Add collection admins', () => {27describe('Add collection admins', () => {
28 itWeb3('Add admin by owner', async ({api, web3}) => {28 itWeb3('Add admin by owner', async ({api, web3, privateKeyWrapper}) => {
29 const owner = await createEthAccountWithBalance(api, web3);29 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
30 const collectionHelper = evmCollectionHelpers(web3, owner);30 const collectionHelper = evmCollectionHelpers(web3, owner);
31 31
32 const result = await collectionHelper.methods32 const result = await collectionHelper.methods
42 .to.be.eq(newAdmin.toLocaleLowerCase());42 .to.be.eq(newAdmin.toLocaleLowerCase());
43 });43 });
4444
45 itWeb3('Add substrate admin by owner', async ({api, web3}) => {45 itWeb3('Add substrate admin by owner', async ({api, web3, privateKeyWrapper}) => {
46 const owner = await createEthAccountWithBalance(api, web3);46 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
47 const collectionHelper = evmCollectionHelpers(web3, owner);47 const collectionHelper = evmCollectionHelpers(web3, owner);
48 48
49 const result = await collectionHelper.methods49 const result = await collectionHelper.methods
60 .to.be.eq(newAdmin.address.toLocaleLowerCase());60 .to.be.eq(newAdmin.address.toLocaleLowerCase());
61 });61 });
6262
63 itWeb3('(!negative tests!) Add admin by ADMIN is not allowed', async ({api, web3}) => {63 itWeb3('(!negative tests!) Add admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => {
64 const owner = await createEthAccountWithBalance(api, web3);64 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
65 const collectionHelper = evmCollectionHelpers(web3, owner);65 const collectionHelper = evmCollectionHelpers(web3, owner);
66 66
67 const result = await collectionHelper.methods67 const result = await collectionHelper.methods
68 .createNonfungibleCollection('A', 'B', 'C')68 .createNonfungibleCollection('A', 'B', 'C')
69 .send();69 .send();
70 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);70 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
7171
72 const admin = await createEthAccountWithBalance(api, web3);72 const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
73 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);73 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
74 await collectionEvm.methods.addCollectionAdmin(admin).send();74 await collectionEvm.methods.addCollectionAdmin(admin).send();
75 75
83 .to.be.eq(admin.toLocaleLowerCase());83 .to.be.eq(admin.toLocaleLowerCase());
84 });84 });
8585
86 itWeb3('(!negative tests!) Add admin by USER is not allowed', async ({api, web3}) => {86 itWeb3('(!negative tests!) Add admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => {
87 const owner = await createEthAccountWithBalance(api, web3);87 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
88 const collectionHelper = evmCollectionHelpers(web3, owner);88 const collectionHelper = evmCollectionHelpers(web3, owner);
89 89
90 const result = await collectionHelper.methods90 const result = await collectionHelper.methods
91 .createNonfungibleCollection('A', 'B', 'C')91 .createNonfungibleCollection('A', 'B', 'C')
92 .send();92 .send();
93 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);93 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
9494
95 const notAdmin = await createEthAccountWithBalance(api, web3);95 const notAdmin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
96 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);96 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
97 97
98 const user = await createEthAccount(web3);98 const user = await createEthAccount(web3);
103 expect(adminList.length).to.be.eq(0);103 expect(adminList.length).to.be.eq(0);
104 });104 });
105105
106 itWeb3('(!negative tests!) Add substrate admin by ADMIN is not allowed', async ({api, web3}) => {106 itWeb3('(!negative tests!) Add substrate admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => {
107 const owner = await createEthAccountWithBalance(api, web3);107 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
108 const collectionHelper = evmCollectionHelpers(web3, owner);108 const collectionHelper = evmCollectionHelpers(web3, owner);
109 109
110 const result = await collectionHelper.methods110 const result = await collectionHelper.methods
111 .createNonfungibleCollection('A', 'B', 'C')111 .createNonfungibleCollection('A', 'B', 'C')
112 .send();112 .send();
113 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);113 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
114114
115 const admin = await createEthAccountWithBalance(api, web3);115 const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
116 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);116 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
117 await collectionEvm.methods.addCollectionAdmin(admin).send();117 await collectionEvm.methods.addCollectionAdmin(admin).send();
118118
126 .to.be.eq(admin.toLocaleLowerCase());126 .to.be.eq(admin.toLocaleLowerCase());
127 });127 });
128 128
129 itWeb3('(!negative tests!) Add substrate admin by USER is not allowed', async ({api, web3}) => {129 itWeb3('(!negative tests!) Add substrate admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => {
130 const owner = await createEthAccountWithBalance(api, web3);130 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
131 const collectionHelper = evmCollectionHelpers(web3, owner);131 const collectionHelper = evmCollectionHelpers(web3, owner);
132 132
133 const result = await collectionHelper.methods133 const result = await collectionHelper.methods
134 .createNonfungibleCollection('A', 'B', 'C')134 .createNonfungibleCollection('A', 'B', 'C')
135 .send();135 .send();
136 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);136 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);
137137
138 const notAdmin0 = await createEthAccountWithBalance(api, web3);138 const notAdmin0 = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
139 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);139 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
140 const notAdmin1 = privateKey('//Alice');140 const notAdmin1 = privateKey('//Alice');
141 await expect(collectionEvm.methods.addCollectionAdminSubstrate(notAdmin1.addressRaw).call({from: notAdmin0}))141 await expect(collectionEvm.methods.addCollectionAdminSubstrate(notAdmin1.addressRaw).call({from: notAdmin0}))
147});147});
148148
149describe('Remove collection admins', () => {149describe('Remove collection admins', () => {
150 itWeb3('Remove admin by owner', async ({api, web3}) => {150 itWeb3('Remove admin by owner', async ({api, web3, privateKeyWrapper}) => {
151 const owner = await createEthAccountWithBalance(api, web3);151 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
152 const collectionHelper = evmCollectionHelpers(web3, owner);152 const collectionHelper = evmCollectionHelpers(web3, owner);
153 153
154 const result = await collectionHelper.methods154 const result = await collectionHelper.methods
171 expect(adminList.length).to.be.eq(0);171 expect(adminList.length).to.be.eq(0);
172 });172 });
173173
174 itWeb3('Remove substrate admin by owner', async ({api, web3}) => {174 itWeb3('Remove substrate admin by owner', async ({api, web3, privateKeyWrapper}) => {
175 const owner = await createEthAccountWithBalance(api, web3);175 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
176 const collectionHelper = evmCollectionHelpers(web3, owner);176 const collectionHelper = evmCollectionHelpers(web3, owner);
177 177
178 const result = await collectionHelper.methods178 const result = await collectionHelper.methods
194 expect(adminList.length).to.be.eq(0);194 expect(adminList.length).to.be.eq(0);
195 });195 });
196196
197 itWeb3('(!negative tests!) Remove admin by ADMIN is not allowed', async ({api, web3}) => {197 itWeb3('(!negative tests!) Remove admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => {
198 const owner = await createEthAccountWithBalance(api, web3);198 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
199 const collectionHelper = evmCollectionHelpers(web3, owner);199 const collectionHelper = evmCollectionHelpers(web3, owner);
200 200
201 const result = await collectionHelper.methods201 const result = await collectionHelper.methods
205205
206 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);206 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
207207
208 const admin0 = await createEthAccountWithBalance(api, web3);208 const admin0 = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
209 await collectionEvm.methods.addCollectionAdmin(admin0).send();209 await collectionEvm.methods.addCollectionAdmin(admin0).send();
210 const admin1 = await createEthAccount(web3);210 const admin1 = await createEthAccount(web3);
211 await collectionEvm.methods.addCollectionAdmin(admin1).send();211 await collectionEvm.methods.addCollectionAdmin(admin1).send();
221 }221 }
222 });222 });
223223
224 itWeb3('(!negative tests!) Remove admin by USER is not allowed', async ({api, web3}) => {224 itWeb3('(!negative tests!) Remove admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => {
225 const owner = await createEthAccountWithBalance(api, web3);225 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
226 const collectionHelper = evmCollectionHelpers(web3, owner);226 const collectionHelper = evmCollectionHelpers(web3, owner);
227 227
228 const result = await collectionHelper.methods228 const result = await collectionHelper.methods
232232
233 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);233 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
234234
235 const admin = await createEthAccountWithBalance(api, web3);235 const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
236 await collectionEvm.methods.addCollectionAdmin(admin).send();236 await collectionEvm.methods.addCollectionAdmin(admin).send();
237 const notAdmin = await createEthAccount(web3);237 const notAdmin = await createEthAccount(web3);
238238
246 }246 }
247 });247 });
248248
249 itWeb3('(!negative tests!) Remove substrate admin by ADMIN is not allowed', async ({api, web3}) => {249 itWeb3('(!negative tests!) Remove substrate admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => {
250 const owner = await createEthAccountWithBalance(api, web3);250 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
251 const collectionHelper = evmCollectionHelpers(web3, owner);251 const collectionHelper = evmCollectionHelpers(web3, owner);
252 252
253 const result = await collectionHelper.methods253 const result = await collectionHelper.methods
258 const adminSub = privateKey('//Alice');258 const adminSub = privateKey('//Alice');
259 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);259 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
260 await collectionEvm.methods.addCollectionAdminSubstrate(adminSub.addressRaw).send();260 await collectionEvm.methods.addCollectionAdminSubstrate(adminSub.addressRaw).send();
261 const adminEth = await createEthAccountWithBalance(api, web3);261 const adminEth = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
262 await collectionEvm.methods.addCollectionAdmin(adminEth).send();262 await collectionEvm.methods.addCollectionAdmin(adminEth).send();
263263
264 await expect(collectionEvm.methods.removeCollectionAdminSubstrate(adminSub.addressRaw).call({from: adminEth}))264 await expect(collectionEvm.methods.removeCollectionAdminSubstrate(adminSub.addressRaw).call({from: adminEth}))
271 .to.be.deep.contains(adminEth.toLocaleLowerCase());271 .to.be.deep.contains(adminEth.toLocaleLowerCase());
272 });272 });
273273
274 itWeb3('(!negative tests!) Remove substrate admin by USER is not allowed', async ({api, web3}) => {274 itWeb3('(!negative tests!) Remove substrate admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => {
275 const owner = await createEthAccountWithBalance(api, web3);275 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
276 const collectionHelper = evmCollectionHelpers(web3, owner);276 const collectionHelper = evmCollectionHelpers(web3, owner);
277 277
278 const result = await collectionHelper.methods278 const result = await collectionHelper.methods
283 const adminSub = privateKey('//Alice');283 const adminSub = privateKey('//Alice');
284 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);284 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
285 await collectionEvm.methods.addCollectionAdminSubstrate(adminSub.addressRaw).send();285 await collectionEvm.methods.addCollectionAdminSubstrate(adminSub.addressRaw).send();
286 const notAdminEth = await createEthAccountWithBalance(api, web3);286 const notAdminEth = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
287287
288 await expect(collectionEvm.methods.removeCollectionAdminSubstrate(adminSub.addressRaw).call({from: notAdminEth}))288 await expect(collectionEvm.methods.removeCollectionAdminSubstrate(adminSub.addressRaw).call({from: notAdminEth}))
289 .to.be.rejectedWith('NoPermission');289 .to.be.rejectedWith('NoPermission');
modifiedtests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth
--- a/tests/src/eth/contractSponsoring.test.ts
+++ b/tests/src/eth/contractSponsoring.test.ts
@@ -250,7 +250,7 @@
 
     await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});
     await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});
-    await collectionEvm.methods.setMintMode(true).send({from: owner});
+    await collectionEvm.methods.setCollectionMintMode(true).send({from: owner});
 
     const newPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();
     expect(newPermissions.mintMode).to.be.true;
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/nonFungibleAbi.json
+++ b/tests/src/eth/nonFungibleAbi.json
@@ -386,27 +386,15 @@
     "type": "function"
   },
   {
-    "inputs": [
-      { "internalType": "string", "name": "key", "type": "string" },
-      { "internalType": "bytes", "name": "value", "type": "bytes" }
-    ],
-    "name": "setCollectionProperty",
-    "outputs": [],
-    "stateMutability": "nonpayable",
-    "type": "function"
-  },
-  {
-    "inputs": [
-      { "internalType": "address", "name": "sponsor", "type": "address" }
-    ],
-    "name": "setCollectionSponsor",
+    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
+    "name": "setCollectionMintMode",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
   },
   {
-    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
-    "name": "setMintMode",
+    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
+    "name": "setCollectionNesting",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
@@ -420,14 +408,26 @@
         "type": "address[]"
       }
     ],
-    "name": "setNesting",
+    "name": "setCollectionNesting",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
   },
   {
-    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
-    "name": "setNesting",
+    "inputs": [
+      { "internalType": "string", "name": "key", "type": "string" },
+      { "internalType": "bytes", "name": "value", "type": "bytes" }
+    ],
+    "name": "setCollectionProperty",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "sponsor", "type": "address" }
+    ],
+    "name": "setCollectionSponsor",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
modifiedtests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth
--- a/tests/src/removeCollectionAdmin.test.ts
+++ b/tests/src/removeCollectionAdmin.test.ts
@@ -111,18 +111,24 @@
     });
   });
 
-  it('Admin can\'t remove collection admin.', async () => {
+  it.only('Admin can\'t remove collection admin.', async () => {
     await usingApi(async (api, privateKeyWrapper) => {
       const collectionId = await createCollectionExpectSuccess();
       const alice = privateKeyWrapper('//Alice');
       const bob = privateKeyWrapper('//Bob');
       const charlie = privateKeyWrapper('//Charlie');
 
+      const addBobAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await submitTransactionAsync(alice, addBobAdminTx);
+      const addCharlieAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
+      await submitTransactionAsync(alice, addCharlieAdminTx);
+
       const adminListAfterAddAdmin = await getAdminList(api, collectionId);
       expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
+      expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));
 
       const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
-      await expect(submitTransactionAsync(charlie, removeAdminTx)).to.be.rejected;
+      await expect(submitTransactionExpectFailAsync(charlie, removeAdminTx)).to.be.rejected;
 
       const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);
       expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));