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
211 Ok(())211 Ok(())
212 }212 }
213213
214 #[solidity(rename_selector = "setNesting")]214 #[solidity(rename_selector = "setCollectionNesting")]
215 fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {215 fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {
216 check_is_owner_or_admin(caller, self)?;216 check_is_owner_or_admin(caller, self)?;
217 let permissions = CollectionPermissions {217 let permissions = CollectionPermissions {
231 save(self)231 save(self)
232 }232 }
233233
234 #[solidity(rename_selector = "setNesting")]234 #[solidity(rename_selector = "setCollectionNesting")]
235 fn set_nesting(235 fn set_nesting(
236 &mut self,236 &mut self,
237 caller: caller,237 caller: caller,
309 Ok(())309 Ok(())
310 }310 }
311311
312 fn set_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {312 fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {
313 check_is_owner_or_admin(caller, self)?;313 check_is_owner_or_admin(caller, self)?;
314 let permissions = CollectionPermissions { mint_mode: Some(mode), .. Default::default() };314 let permissions = CollectionPermissions { mint_mode: Some(mode), .. Default::default() };
315 self.collection.permissions = <Pallet<T>>::clamp_permissions(315 self.collection.permissions = <Pallet<T>>::clamp_permissions(
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
330 }330 }
331}331}
332332
333// Selector: c0de6be0333// Selector: 7d9262e6
334contract Collection is Dummy, ERC165 {334contract Collection is Dummy, ERC165 {
335 // Selector: setCollectionProperty(string,bytes) 2f073f66335 // Selector: setCollectionProperty(string,bytes) 2f073f66
336 function setCollectionProperty(string memory key, bytes memory value)336 function setCollectionProperty(string memory key, bytes memory value)
427 dummy;427 dummy;
428 }428 }
429429
430 // Selector: setNesting(bool) e8fc50dd430 // Selector: setCollectionNesting(bool) 112d4586
431 function setNesting(bool enable) public {431 function setCollectionNesting(bool enable) public {
432 require(false, stub_error);432 require(false, stub_error);
433 enable;433 enable;
434 dummy = 0;434 dummy = 0;
435 }435 }
436436
437 // Selector: setNesting(bool,address[]) 7df12a9a437 // Selector: setCollectionNesting(bool,address[]) 64872396
438 function setNesting(bool enable, address[] memory collections) public {438 function setCollectionNesting(bool enable, address[] memory collections)
439 public
440 {
439 require(false, stub_error);441 require(false, stub_error);
463 dummy;465 dummy;
464 }466 }
465467
466 // Selector: setMintMode(bool) 5dea9bd5468 // Selector: setCollectionMintMode(bool) 00018e84
467 function setMintMode(bool mode) public {469 function setCollectionMintMode(bool mode) public {
468 require(false, stub_error);470 require(false, stub_error);
469 mode;471 mode;
470 dummy = 0;472 dummy = 0;
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
191 function totalSupply() external view returns (uint256);191 function totalSupply() external view returns (uint256);
192}192}
193193
194// Selector: c0de6be0194// Selector: 7d9262e6
195interface Collection is Dummy, ERC165 {195interface Collection is Dummy, ERC165 {
196 // Selector: setCollectionProperty(string,bytes) 2f073f66196 // Selector: setCollectionProperty(string,bytes) 2f073f66
197 function setCollectionProperty(string memory key, bytes memory value)197 function setCollectionProperty(string memory key, bytes memory value)
235 // Selector: removeCollectionAdmin(address) fafd7b42235 // Selector: removeCollectionAdmin(address) fafd7b42
236 function removeCollectionAdmin(address admin) external view;236 function removeCollectionAdmin(address admin) external view;
237237
238 // Selector: setNesting(bool) e8fc50dd238 // Selector: setCollectionNesting(bool) 112d4586
239 function setNesting(bool enable) external;239 function setCollectionNesting(bool enable) external;
240240
241 // Selector: setNesting(bool,address[]) 7df12a9a241 // Selector: setCollectionNesting(bool,address[]) 64872396
242 function setNesting(bool enable, address[] memory collections) external;242 function setCollectionNesting(bool enable, address[] memory collections)
243 external;
243244
244 // Selector: setCollectionAccess(uint8) 41835d4c245 // Selector: setCollectionAccess(uint8) 41835d4c
250 // Selector: removeFromCollectionAllowList(address) 85c51acb251 // Selector: removeFromCollectionAllowList(address) 85c51acb
251 function removeFromCollectionAllowList(address user) external view;252 function removeFromCollectionAllowList(address user) external view;
252253
253 // Selector: setMintMode(bool) 5dea9bd5254 // Selector: setCollectionMintMode(bool) 00018e84
254 function setMintMode(bool mode) external;255 function setCollectionMintMode(bool mode) external;
255}256}
256257
257// Selector: d74d154f258// 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
250250
251 await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});251 await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});
252 await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});252 await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});
253 await collectionEvm.methods.setMintMode(true).send({from: owner});253 await collectionEvm.methods.setCollectionMintMode(true).send({from: owner});
254254
255 const newPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();255 const newPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();
256 expect(newPermissions.mintMode).to.be.true;256 expect(newPermissions.mintMode).to.be.true;
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
386 "type": "function"386 "type": "function"
387 },387 },
388 {388 {
389 "inputs": [389 "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
390 { "internalType": "string", "name": "key", "type": "string" },
391 { "internalType": "bytes", "name": "value", "type": "bytes" }
392 ],
393 "name": "setCollectionProperty",390 "name": "setCollectionMintMode",
394 "outputs": [],391 "outputs": [],
395 "stateMutability": "nonpayable",392 "stateMutability": "nonpayable",
396 "type": "function"393 "type": "function"
397 },394 },
398 {395 {
399 "inputs": [396 "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
400 { "internalType": "address", "name": "sponsor", "type": "address" }
401 ],
402 "name": "setCollectionSponsor",397 "name": "setCollectionNesting",
403 "outputs": [],398 "outputs": [],
404 "stateMutability": "nonpayable",399 "stateMutability": "nonpayable",
405 "type": "function"400 "type": "function"
406 },401 },
407 {402 {
408 "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],403 "inputs": [
404 { "internalType": "bool", "name": "enable", "type": "bool" },
405 {
406 "internalType": "address[]",
407 "name": "collections",
408 "type": "address[]"
409 }
410 ],
409 "name": "setMintMode",411 "name": "setCollectionNesting",
410 "outputs": [],412 "outputs": [],
411 "stateMutability": "nonpayable",413 "stateMutability": "nonpayable",
412 "type": "function"414 "type": "function"
413 },415 },
414 {416 {
415 "inputs": [417 "inputs": [
416 { "internalType": "bool", "name": "enable", "type": "bool" },418 { "internalType": "string", "name": "key", "type": "string" },
417 {419 { "internalType": "bytes", "name": "value", "type": "bytes" }
418 "internalType": "address[]",
419 "name": "collections",
420 "type": "address[]"
421 }
422 ],420 ],
423 "name": "setNesting",421 "name": "setCollectionProperty",
424 "outputs": [],422 "outputs": [],
425 "stateMutability": "nonpayable",423 "stateMutability": "nonpayable",
426 "type": "function"424 "type": "function"
427 },425 },
428 {426 {
429 "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],427 "inputs": [
428 { "internalType": "address", "name": "sponsor", "type": "address" }
429 ],
430 "name": "setNesting",430 "name": "setCollectionSponsor",
431 "outputs": [],431 "outputs": [],
432 "stateMutability": "nonpayable",432 "stateMutability": "nonpayable",
433 "type": "function"433 "type": "function"
modifiedtests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth
111 });111 });
112 });112 });
113113
114 it('Admin can\'t remove collection admin.', async () => {114 it.only('Admin can\'t remove collection admin.', async () => {
115 await usingApi(async (api, privateKeyWrapper) => {115 await usingApi(async (api, privateKeyWrapper) => {
116 const collectionId = await createCollectionExpectSuccess();116 const collectionId = await createCollectionExpectSuccess();
117 const alice = privateKeyWrapper('//Alice');117 const alice = privateKeyWrapper('//Alice');
118 const bob = privateKeyWrapper('//Bob');118 const bob = privateKeyWrapper('//Bob');
119 const charlie = privateKeyWrapper('//Charlie');119 const charlie = privateKeyWrapper('//Charlie');
120
121 const addBobAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
122 await submitTransactionAsync(alice, addBobAdminTx);
123 const addCharlieAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
124 await submitTransactionAsync(alice, addCharlieAdminTx);
120125
121 const adminListAfterAddAdmin = await getAdminList(api, collectionId);126 const adminListAfterAddAdmin = await getAdminList(api, collectionId);
122 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));127 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
128 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));
123129
124 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));130 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
125 await expect(submitTransactionAsync(charlie, removeAdminTx)).to.be.rejected;131 await expect(submitTransactionExpectFailAsync(charlie, removeAdminTx)).to.be.rejected;
126132
127 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);133 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);
128 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));134 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));