difftreelog
CORE-386 Fix names and tests
in: master
8 files changed
pallets/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(
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/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;
tests/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
tests/src/eth/collectionAdmin.test.tsdiffbeforeafterboth--- 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');
tests/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;
tests/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"
tests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import chai from 'chai';18import chaiAsPromised from 'chai-as-promised';19import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';20import {createCollectionExpectSuccess, destroyCollectionExpectSuccess, getAdminList, normalizeAccountId, queryCollectionExpectSuccess} from './util/helpers';2122chai.use(chaiAsPromised);23const expect = chai.expect;2425describe('Integration Test removeCollectionAdmin(collection_id, account_id):', () => {26 it('Remove collection admin.', async () => {27 await usingApi(async (api, privateKeyWrapper) => {28 const collectionId = await createCollectionExpectSuccess();29 const alice = privateKeyWrapper('//Alice');30 const bob = privateKeyWrapper('//Bob');31 const collection = await queryCollectionExpectSuccess(api, collectionId);32 expect(collection.owner.toString()).to.be.deep.eq(alice.address);33 // first - add collection admin Bob34 const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));35 await submitTransactionAsync(alice, addAdminTx);3637 const adminListAfterAddAdmin = await getAdminList(api, collectionId);38 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));3940 // then remove bob from admins of collection41 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));42 await submitTransactionAsync(alice, removeAdminTx);4344 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);45 expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(normalizeAccountId(bob.address));46 });47 });4849 it('Remove admin from collection that has no admins', async () => {50 await usingApi(async (api, privateKeyWrapper) => {51 const alice = privateKeyWrapper('//Alice');52 const collectionId = await createCollectionExpectSuccess();5354 const adminListBeforeAddAdmin = await getAdminList(api, collectionId);55 expect(adminListBeforeAddAdmin).to.have.lengthOf(0);5657 const tx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(alice.address));58 await submitTransactionAsync(alice, tx);59 });60 });61});6263describe('Negative Integration Test removeCollectionAdmin(collection_id, account_id):', () => {64 it('Can\'t remove collection admin from not existing collection', async () => {65 await usingApi(async (api, privateKeyWrapper) => {66 // tslint:disable-next-line: no-bitwise67 const collectionId = (1 << 32) - 1;68 const alice = privateKeyWrapper('//Alice');69 const bob = privateKeyWrapper('//Bob');7071 const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));72 await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;7374 // Verifying that nothing bad happened (network is live, new collections can be created, etc.)75 await createCollectionExpectSuccess();76 });77 });7879 it('Can\'t remove collection admin from deleted collection', async () => {80 await usingApi(async (api, privateKeyWrapper) => {81 // tslint:disable-next-line: no-bitwise82 const collectionId = await createCollectionExpectSuccess();83 const alice = privateKeyWrapper('//Alice');84 const bob = privateKeyWrapper('//Bob');8586 await destroyCollectionExpectSuccess(collectionId);8788 const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));89 await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;9091 // Verifying that nothing bad happened (network is live, new collections can be created, etc.)92 await createCollectionExpectSuccess();93 });94 });9596 it('Regular user can\'t remove collection admin', async () => {97 await usingApi(async (api, privateKeyWrapper) => {98 const collectionId = await createCollectionExpectSuccess();99 const alice = privateKeyWrapper('//Alice');100 const bob = privateKeyWrapper('//Bob');101 const charlie = privateKeyWrapper('//Charlie');102103 const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));104 await submitTransactionAsync(alice, addAdminTx);105106 const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));107 await expect(submitTransactionExpectFailAsync(charlie, changeOwnerTx)).to.be.rejected;108109 // Verifying that nothing bad happened (network is live, new collections can be created, etc.)110 await createCollectionExpectSuccess();111 });112 });113114 it('Admin can\'t remove collection admin.', async () => {115 await usingApi(async (api, privateKeyWrapper) => {116 const collectionId = await createCollectionExpectSuccess();117 const alice = privateKeyWrapper('//Alice');118 const bob = privateKeyWrapper('//Bob');119 const charlie = privateKeyWrapper('//Charlie');120121 const adminListAfterAddAdmin = await getAdminList(api, collectionId);122 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));123124 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));125 await expect(submitTransactionAsync(charlie, removeAdminTx)).to.be.rejected;126127 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);128 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));129 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));130 });131 });132});1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import chai from 'chai';18import chaiAsPromised from 'chai-as-promised';19import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';20import {createCollectionExpectSuccess, destroyCollectionExpectSuccess, getAdminList, normalizeAccountId, queryCollectionExpectSuccess} from './util/helpers';2122chai.use(chaiAsPromised);23const expect = chai.expect;2425describe('Integration Test removeCollectionAdmin(collection_id, account_id):', () => {26 it('Remove collection admin.', async () => {27 await usingApi(async (api, privateKeyWrapper) => {28 const collectionId = await createCollectionExpectSuccess();29 const alice = privateKeyWrapper('//Alice');30 const bob = privateKeyWrapper('//Bob');31 const collection = await queryCollectionExpectSuccess(api, collectionId);32 expect(collection.owner.toString()).to.be.deep.eq(alice.address);33 // first - add collection admin Bob34 const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));35 await submitTransactionAsync(alice, addAdminTx);3637 const adminListAfterAddAdmin = await getAdminList(api, collectionId);38 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));3940 // then remove bob from admins of collection41 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));42 await submitTransactionAsync(alice, removeAdminTx);4344 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);45 expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(normalizeAccountId(bob.address));46 });47 });4849 it('Remove admin from collection that has no admins', async () => {50 await usingApi(async (api, privateKeyWrapper) => {51 const alice = privateKeyWrapper('//Alice');52 const collectionId = await createCollectionExpectSuccess();5354 const adminListBeforeAddAdmin = await getAdminList(api, collectionId);55 expect(adminListBeforeAddAdmin).to.have.lengthOf(0);5657 const tx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(alice.address));58 await submitTransactionAsync(alice, tx);59 });60 });61});6263describe('Negative Integration Test removeCollectionAdmin(collection_id, account_id):', () => {64 it('Can\'t remove collection admin from not existing collection', async () => {65 await usingApi(async (api, privateKeyWrapper) => {66 // tslint:disable-next-line: no-bitwise67 const collectionId = (1 << 32) - 1;68 const alice = privateKeyWrapper('//Alice');69 const bob = privateKeyWrapper('//Bob');7071 const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));72 await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;7374 // Verifying that nothing bad happened (network is live, new collections can be created, etc.)75 await createCollectionExpectSuccess();76 });77 });7879 it('Can\'t remove collection admin from deleted collection', async () => {80 await usingApi(async (api, privateKeyWrapper) => {81 // tslint:disable-next-line: no-bitwise82 const collectionId = await createCollectionExpectSuccess();83 const alice = privateKeyWrapper('//Alice');84 const bob = privateKeyWrapper('//Bob');8586 await destroyCollectionExpectSuccess(collectionId);8788 const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));89 await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;9091 // Verifying that nothing bad happened (network is live, new collections can be created, etc.)92 await createCollectionExpectSuccess();93 });94 });9596 it('Regular user can\'t remove collection admin', async () => {97 await usingApi(async (api, privateKeyWrapper) => {98 const collectionId = await createCollectionExpectSuccess();99 const alice = privateKeyWrapper('//Alice');100 const bob = privateKeyWrapper('//Bob');101 const charlie = privateKeyWrapper('//Charlie');102103 const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));104 await submitTransactionAsync(alice, addAdminTx);105106 const changeOwnerTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));107 await expect(submitTransactionExpectFailAsync(charlie, changeOwnerTx)).to.be.rejected;108109 // Verifying that nothing bad happened (network is live, new collections can be created, etc.)110 await createCollectionExpectSuccess();111 });112 });113114 it.only('Admin can\'t remove collection admin.', async () => {115 await usingApi(async (api, privateKeyWrapper) => {116 const collectionId = await createCollectionExpectSuccess();117 const alice = privateKeyWrapper('//Alice');118 const bob = privateKeyWrapper('//Bob');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);125126 const adminListAfterAddAdmin = await getAdminList(api, collectionId);127 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));128 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));129130 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));131 await expect(submitTransactionExpectFailAsync(charlie, removeAdminTx)).to.be.rejected;132133 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);134 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));135 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));136 });137 });138});