difftreelog
CORE-386 Fix names and tests
in: master
8 files changed
pallets/common/src/erc.rsdiffbeforeafterboth211 Ok(())211 Ok(())212 }212 }213213214 #[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 }233233234 #[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 }311311312 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(pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth330 }330 }331}331}332332333// Selector: c0de6be0333// Selector: 7d9262e6334contract Collection is Dummy, ERC165 {334contract Collection is Dummy, ERC165 {335 // Selector: setCollectionProperty(string,bytes) 2f073f66335 // Selector: setCollectionProperty(string,bytes) 2f073f66336 function setCollectionProperty(string memory key, bytes memory value)336 function setCollectionProperty(string memory key, bytes memory value)427 dummy;427 dummy;428 }428 }429429430 // Selector: setNesting(bool) e8fc50dd430 // Selector: setCollectionNesting(bool) 112d4586431 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 }436436437 // Selector: setNesting(bool,address[]) 7df12a9a437 // Selector: setCollectionNesting(bool,address[]) 64872396438 function setNesting(bool enable, address[] memory collections) public {438 function setCollectionNesting(bool enable, address[] memory collections)439 public440 {439 require(false, stub_error);441 require(false, stub_error);463 dummy;465 dummy;464 }466 }465467466 // Selector: setMintMode(bool) 5dea9bd5468 // Selector: setCollectionMintMode(bool) 00018e84467 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;tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth191 function totalSupply() external view returns (uint256);191 function totalSupply() external view returns (uint256);192}192}193193194// Selector: c0de6be0194// Selector: 7d9262e6195interface Collection is Dummy, ERC165 {195interface Collection is Dummy, ERC165 {196 // Selector: setCollectionProperty(string,bytes) 2f073f66196 // Selector: setCollectionProperty(string,bytes) 2f073f66197 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) fafd7b42236 function removeCollectionAdmin(address admin) external view;236 function removeCollectionAdmin(address admin) external view;237237238 // Selector: setNesting(bool) e8fc50dd238 // Selector: setCollectionNesting(bool) 112d4586239 function setNesting(bool enable) external;239 function setCollectionNesting(bool enable) external;240240241 // Selector: setNesting(bool,address[]) 7df12a9a241 // Selector: setCollectionNesting(bool,address[]) 64872396242 function setNesting(bool enable, address[] memory collections) external;242 function setCollectionNesting(bool enable, address[] memory collections)243 external;243244244 // Selector: setCollectionAccess(uint8) 41835d4c245 // Selector: setCollectionAccess(uint8) 41835d4c250 // Selector: removeFromCollectionAllowList(address) 85c51acb251 // Selector: removeFromCollectionAllowList(address) 85c51acb251 function removeFromCollectionAllowList(address user) external view;252 function removeFromCollectionAllowList(address user) external view;252253253 // Selector: setMintMode(bool) 5dea9bd5254 // Selector: setCollectionMintMode(bool) 00018e84254 function setMintMode(bool mode) external;255 function setCollectionMintMode(bool mode) external;255}256}256257257// Selector: d74d154f258// Selector: d74d154ftests/src/eth/collectionAdmin.test.tsdiffbeforeafterboth25} from './util/helpers';25} from './util/helpers';262627describe('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.methods42 .to.be.eq(newAdmin.toLocaleLowerCase());42 .to.be.eq(newAdmin.toLocaleLowerCase());43 });43 });444445 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.methods60 .to.be.eq(newAdmin.address.toLocaleLowerCase());60 .to.be.eq(newAdmin.address.toLocaleLowerCase());61 });61 });626263 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.methods68 .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);717172 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 });858586 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.methods91 .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);949495 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 });105105106 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.methods111 .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);114114115 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();118118126 .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.methods134 .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);137137138 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});148148149describe('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.methods171 expect(adminList.length).to.be.eq(0);171 expect(adminList.length).to.be.eq(0);172 });172 });173173174 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.methods194 expect(adminList.length).to.be.eq(0);194 expect(adminList.length).to.be.eq(0);195 });195 });196196197 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.methods205205206 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);206 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);207207208 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 });223223224 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.methods232232233 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);233 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);234234235 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);238238246 }246 }247 });247 });248248249 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.methods258 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();263263264 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 });273273274 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.methods283 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);287287288 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');tests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth250250251 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});254254255 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;tests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth386 "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"tests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth111 });111 });112 });112 });113113114 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');120121 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);120125121 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));123129124 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;126132127 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));