From f26467cd56783eb794432010a86b849745b834ec Mon Sep 17 00:00:00 2001 From: Trubnikov Sergey Date: Fri, 10 Jun 2022 08:18:10 +0000 Subject: [PATCH] CORE-386 Fix names and tests --- --- 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 { 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 { + fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result { check_is_owner_or_admin(caller, self)?; let permissions = CollectionPermissions { mint_mode: Some(mode), .. Default::default() }; self.collection.permissions = >::clamp_permissions( --- 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; --- 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 --- a/tests/src/eth/collectionAdmin.test.ts +++ b/tests/src/eth/collectionAdmin.test.ts @@ -25,8 +25,8 @@ } from './util/helpers'; describe('Add collection admins', () => { - itWeb3('Add admin by owner', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Add admin by owner', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -42,8 +42,8 @@ .to.be.eq(newAdmin.toLocaleLowerCase()); }); - itWeb3('Add substrate admin by owner', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Add substrate admin by owner', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -60,8 +60,8 @@ .to.be.eq(newAdmin.address.toLocaleLowerCase()); }); - itWeb3('(!negative tests!) Add admin by ADMIN is not allowed', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative tests!) Add admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -69,7 +69,7 @@ .send(); const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result); - const admin = await createEthAccountWithBalance(api, web3); + const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionEvm = evmCollection(web3, owner, collectionIdAddress); await collectionEvm.methods.addCollectionAdmin(admin).send(); @@ -83,8 +83,8 @@ .to.be.eq(admin.toLocaleLowerCase()); }); - itWeb3('(!negative tests!) Add admin by USER is not allowed', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative tests!) Add admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -92,7 +92,7 @@ .send(); const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result); - const notAdmin = await createEthAccountWithBalance(api, web3); + const notAdmin = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionEvm = evmCollection(web3, owner, collectionIdAddress); const user = await createEthAccount(web3); @@ -103,8 +103,8 @@ expect(adminList.length).to.be.eq(0); }); - itWeb3('(!negative tests!) Add substrate admin by ADMIN is not allowed', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative tests!) Add substrate admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -112,7 +112,7 @@ .send(); const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result); - const admin = await createEthAccountWithBalance(api, web3); + const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionEvm = evmCollection(web3, owner, collectionIdAddress); await collectionEvm.methods.addCollectionAdmin(admin).send(); @@ -126,8 +126,8 @@ .to.be.eq(admin.toLocaleLowerCase()); }); - itWeb3('(!negative tests!) Add substrate admin by USER is not allowed', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative tests!) Add substrate admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -135,7 +135,7 @@ .send(); const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result); - const notAdmin0 = await createEthAccountWithBalance(api, web3); + const notAdmin0 = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionEvm = evmCollection(web3, owner, collectionIdAddress); const notAdmin1 = privateKey('//Alice'); await expect(collectionEvm.methods.addCollectionAdminSubstrate(notAdmin1.addressRaw).call({from: notAdmin0})) @@ -147,8 +147,8 @@ }); describe('Remove collection admins', () => { - itWeb3('Remove admin by owner', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Remove admin by owner', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -171,8 +171,8 @@ expect(adminList.length).to.be.eq(0); }); - itWeb3('Remove substrate admin by owner', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Remove substrate admin by owner', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -194,8 +194,8 @@ expect(adminList.length).to.be.eq(0); }); - itWeb3('(!negative tests!) Remove admin by ADMIN is not allowed', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative tests!) Remove admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -205,7 +205,7 @@ const collectionEvm = evmCollection(web3, owner, collectionIdAddress); - const admin0 = await createEthAccountWithBalance(api, web3); + const admin0 = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await collectionEvm.methods.addCollectionAdmin(admin0).send(); const admin1 = await createEthAccount(web3); await collectionEvm.methods.addCollectionAdmin(admin1).send(); @@ -221,8 +221,8 @@ } }); - itWeb3('(!negative tests!) Remove admin by USER is not allowed', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative tests!) Remove admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -232,7 +232,7 @@ const collectionEvm = evmCollection(web3, owner, collectionIdAddress); - const admin = await createEthAccountWithBalance(api, web3); + const admin = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await collectionEvm.methods.addCollectionAdmin(admin).send(); const notAdmin = await createEthAccount(web3); @@ -246,8 +246,8 @@ } }); - itWeb3('(!negative tests!) Remove substrate admin by ADMIN is not allowed', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative tests!) Remove substrate admin by ADMIN is not allowed', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -258,7 +258,7 @@ const adminSub = privateKey('//Alice'); const collectionEvm = evmCollection(web3, owner, collectionIdAddress); await collectionEvm.methods.addCollectionAdminSubstrate(adminSub.addressRaw).send(); - const adminEth = await createEthAccountWithBalance(api, web3); + const adminEth = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await collectionEvm.methods.addCollectionAdmin(adminEth).send(); await expect(collectionEvm.methods.removeCollectionAdminSubstrate(adminSub.addressRaw).call({from: adminEth})) @@ -271,8 +271,8 @@ .to.be.deep.contains(adminEth.toLocaleLowerCase()); }); - itWeb3('(!negative tests!) Remove substrate admin by USER is not allowed', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative tests!) Remove substrate admin by USER is not allowed', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods @@ -283,7 +283,7 @@ const adminSub = privateKey('//Alice'); const collectionEvm = evmCollection(web3, owner, collectionIdAddress); await collectionEvm.methods.addCollectionAdminSubstrate(adminSub.addressRaw).send(); - const notAdminEth = await createEthAccountWithBalance(api, web3); + const notAdminEth = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await expect(collectionEvm.methods.removeCollectionAdminSubstrate(adminSub.addressRaw).call({from: notAdminEth})) .to.be.rejectedWith('NoPermission'); --- 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; --- 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" --- 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)); -- gitstuff