difftreelog
fix normalize addresses
in: master
3 files changed
tests/src/change-collection-owner.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 {IKeyringPair} from '@polkadot/types/types';18import {usingPlaygrounds, expect, itSub} from './util/playgrounds';1920describe('Integration Test changeCollectionOwner(collection_id, new_owner):', () => {21 let alice: IKeyringPair;22 let bob: IKeyringPair;2324 before(async () => {25 await usingPlaygrounds(async (helper, privateKey) => {26 const donor = privateKey('//Alice');27 [alice, bob] = await helper.arrange.createAccounts([100n, 100n], donor);28 });29 });3031 itSub('Changing owner changes owner address', async ({helper}) => {32 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});33 const beforeChanging = await helper.collection.getData(collection.collectionId);34 expect(beforeChanging?.normalizedOwner).to.be.equal(alice.address);3536 await collection.changeOwner(alice, bob.address);37 const afterChanging = await helper.collection.getData(collection.collectionId);38 expect(afterChanging?.normalizedOwner).to.be.equal(bob.address);39 });40});4142describe('Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner:', () => {43 let alice: IKeyringPair;44 let bob: IKeyringPair;45 let charlie: IKeyringPair;4647 before(async () => {48 await usingPlaygrounds(async (helper, privateKey) => {49 const donor = privateKey('//Alice');50 [alice, bob, charlie] = await helper.arrange.createAccounts([100n, 100n, 100n], donor);51 });52 });5354 itSub('Changing the owner of the collection is not allowed for the former owner', async ({helper}) => {55 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});5657 await collection.changeOwner(alice, bob.address);5859 const changeOwnerTx = async () => collection.changeOwner(alice, alice.address);60 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);6162 const afterChanging = await helper.collection.getData(collection.collectionId);63 expect(afterChanging?.normalizedOwner).to.be.equal(bob.address);64 });6566 itSub('New collectionOwner has access to sponsorship management operations in the collection', async ({helper}) => {67 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});68 await collection.changeOwner(alice, bob.address);6970 const afterChanging = await helper.collection.getData(collection.collectionId);71 expect(afterChanging?.normalizedOwner).to.be.equal(bob.address);7273 await collection.setSponsor(bob, charlie.address);74 await collection.confirmSponsorship(charlie);75 await collection.removeSponsor(bob);76 const limits = {77 accountTokenOwnershipLimit: 1,78 tokenLimit: 1,79 sponsorTransferTimeout: 1,80 ownerCanDestroy: true,81 ownerCanTransfer: true,82 };8384 await collection.setLimits(bob, limits);85 const gotLimits = await collection.getEffectiveLimits();86 expect(gotLimits).to.be.deep.contains(limits);8788 await collection.setPermissions(bob, {access: 'AllowList', mintMode: true});8990 await collection.burn(bob);91 const collectionData = await helper.collection.getData(collection.collectionId);92 expect(collectionData).to.be.null;93 });9495 itSub('New collectionOwner has access to changeCollectionOwner', async ({helper}) => {96 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});97 await collection.changeOwner(alice, bob.address);98 await collection.changeOwner(bob, charlie.address);99 const collectionData = await collection.getData();100 expect(collectionData?.normalizedOwner).to.be.equal(charlie.address);101 });102});103104describe('Negative Integration Test changeCollectionOwner(collection_id, new_owner):', () => {105 let alice: IKeyringPair;106 let bob: IKeyringPair;107 let charlie: IKeyringPair;108109 before(async () => {110 await usingPlaygrounds(async (helper, privateKey) => {111 const donor = privateKey('//Alice');112 [alice, bob, charlie] = await helper.arrange.createAccounts([100n, 100n, 100n], donor);113 });114 });115116 itSub('Not owner can\'t change owner.', async ({helper}) => {117 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});118 const changeOwnerTx = async () => collection.changeOwner(bob, bob.address);119 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);120 });121122 itSub('Collection admin can\'t change owner.', async ({helper}) => {123 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});124 await collection.addAdmin(alice, {Substrate: bob.address});125 const changeOwnerTx = async () => collection.changeOwner(bob, bob.address);126 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);127 });128129 itSub('Can\'t change owner of a non-existing collection.', async ({helper}) => {130 const collectionId = (1 << 32) - 1;131 const changeOwnerTx = async () => helper.collection.changeOwner(bob, collectionId, bob.address);132 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.CollectionNotFound/);133 });134135 itSub('Former collectionOwner not allowed to sponsorship management operations in the collection', async ({helper}) => {136 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});137 await collection.changeOwner(alice, bob.address);138139 const changeOwnerTx = async () => collection.changeOwner(alice, alice.address);140 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);141142 const afterChanging = await helper.collection.getData(collection.collectionId);143 expect(afterChanging?.normalizedOwner).to.be.equal(bob.address);144145 const setSponsorTx = async () => collection.setSponsor(alice, charlie.address);146 const confirmSponsorshipTx = async () => collection.confirmSponsorship(alice);147 const removeSponsorTx = async () => collection.removeSponsor(alice);148 await expect(setSponsorTx()).to.be.rejectedWith(/common\.NoPermission/);149 await expect(confirmSponsorshipTx()).to.be.rejectedWith(/unique\.ConfirmUnsetSponsorFail/);150 await expect(removeSponsorTx()).to.be.rejectedWith(/common\.NoPermission/);151152 const limits = {153 accountTokenOwnershipLimit: 1,154 tokenLimit: 1,155 sponsorTransferTimeout: 1,156 ownerCanDestroy: true,157 ownerCanTransfer: true,158 };159160 const setLimitsTx = async () => collection.setLimits(alice, limits);161 await expect(setLimitsTx()).to.be.rejectedWith(/common\.NoPermission/);162163 const setPermissionTx = async () => collection.setPermissions(alice, {access: 'AllowList', mintMode: true});164 await expect(setPermissionTx()).to.be.rejectedWith(/common\.NoPermission/);165166 const burnTx = async () => collection.burn(alice);167 await expect(burnTx()).to.be.rejectedWith(/common\.NoPermission/);168 });169});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 {IKeyringPair} from '@polkadot/types/types';18import {usingPlaygrounds, expect, itSub} from './util/playgrounds';1920describe('Integration Test changeCollectionOwner(collection_id, new_owner):', () => {21 let alice: IKeyringPair;22 let bob: IKeyringPair;2324 before(async () => {25 await usingPlaygrounds(async (helper, privateKey) => {26 const donor = privateKey('//Alice');27 [alice, bob] = await helper.arrange.createAccounts([100n, 100n], donor);28 });29 });3031 itSub('Changing owner changes owner address', async ({helper}) => {32 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});33 const beforeChanging = await helper.collection.getData(collection.collectionId);34 expect(beforeChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(alice.address));3536 await collection.changeOwner(alice, bob.address);37 const afterChanging = await helper.collection.getData(collection.collectionId);38 expect(afterChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(bob.address));39 });40});4142describe('Integration Test changeCollectionOwner(collection_id, new_owner) special checks for exOwner:', () => {43 let alice: IKeyringPair;44 let bob: IKeyringPair;45 let charlie: IKeyringPair;4647 before(async () => {48 await usingPlaygrounds(async (helper, privateKey) => {49 const donor = privateKey('//Alice');50 [alice, bob, charlie] = await helper.arrange.createAccounts([100n, 100n, 100n], donor);51 });52 });5354 itSub('Changing the owner of the collection is not allowed for the former owner', async ({helper}) => {55 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});5657 await collection.changeOwner(alice, bob.address);5859 const changeOwnerTx = async () => collection.changeOwner(alice, alice.address);60 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);6162 const afterChanging = await helper.collection.getData(collection.collectionId);63 expect(afterChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(bob.address));64 });6566 itSub('New collectionOwner has access to sponsorship management operations in the collection', async ({helper}) => {67 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});68 await collection.changeOwner(alice, bob.address);6970 const afterChanging = await helper.collection.getData(collection.collectionId);71 expect(afterChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(bob.address));7273 await collection.setSponsor(bob, charlie.address);74 await collection.confirmSponsorship(charlie);75 await collection.removeSponsor(bob);76 const limits = {77 accountTokenOwnershipLimit: 1,78 tokenLimit: 1,79 sponsorTransferTimeout: 1,80 ownerCanDestroy: true,81 ownerCanTransfer: true,82 };8384 await collection.setLimits(bob, limits);85 const gotLimits = await collection.getEffectiveLimits();86 expect(gotLimits).to.be.deep.contains(limits);8788 await collection.setPermissions(bob, {access: 'AllowList', mintMode: true});8990 await collection.burn(bob);91 const collectionData = await helper.collection.getData(collection.collectionId);92 expect(collectionData).to.be.null;93 });9495 itSub('New collectionOwner has access to changeCollectionOwner', async ({helper}) => {96 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});97 await collection.changeOwner(alice, bob.address);98 await collection.changeOwner(bob, charlie.address);99 const collectionData = await collection.getData();100 expect(collectionData?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(charlie.address));101 });102});103104describe('Negative Integration Test changeCollectionOwner(collection_id, new_owner):', () => {105 let alice: IKeyringPair;106 let bob: IKeyringPair;107 let charlie: IKeyringPair;108109 before(async () => {110 await usingPlaygrounds(async (helper, privateKey) => {111 const donor = privateKey('//Alice');112 [alice, bob, charlie] = await helper.arrange.createAccounts([100n, 100n, 100n], donor);113 });114 });115116 itSub('Not owner can\'t change owner.', async ({helper}) => {117 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});118 const changeOwnerTx = async () => collection.changeOwner(bob, bob.address);119 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);120 });121122 itSub('Collection admin can\'t change owner.', async ({helper}) => {123 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});124 await collection.addAdmin(alice, {Substrate: bob.address});125 const changeOwnerTx = async () => collection.changeOwner(bob, bob.address);126 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);127 });128129 itSub('Can\'t change owner of a non-existing collection.', async ({helper}) => {130 const collectionId = (1 << 32) - 1;131 const changeOwnerTx = async () => helper.collection.changeOwner(bob, collectionId, bob.address);132 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.CollectionNotFound/);133 });134135 itSub('Former collectionOwner not allowed to sponsorship management operations in the collection', async ({helper}) => {136 const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});137 await collection.changeOwner(alice, bob.address);138139 const changeOwnerTx = async () => collection.changeOwner(alice, alice.address);140 await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);141142 const afterChanging = await helper.collection.getData(collection.collectionId);143 expect(afterChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(bob.address));144145 const setSponsorTx = async () => collection.setSponsor(alice, charlie.address);146 const confirmSponsorshipTx = async () => collection.confirmSponsorship(alice);147 const removeSponsorTx = async () => collection.removeSponsor(alice);148 await expect(setSponsorTx()).to.be.rejectedWith(/common\.NoPermission/);149 await expect(confirmSponsorshipTx()).to.be.rejectedWith(/unique\.ConfirmUnsetSponsorFail/);150 await expect(removeSponsorTx()).to.be.rejectedWith(/common\.NoPermission/);151152 const limits = {153 accountTokenOwnershipLimit: 1,154 tokenLimit: 1,155 sponsorTransferTimeout: 1,156 ownerCanDestroy: true,157 ownerCanTransfer: true,158 };159160 const setLimitsTx = async () => collection.setLimits(alice, limits);161 await expect(setLimitsTx()).to.be.rejectedWith(/common\.NoPermission/);162163 const setPermissionTx = async () => collection.setPermissions(alice, {access: 'AllowList', mintMode: true});164 await expect(setPermissionTx()).to.be.rejectedWith(/common\.NoPermission/);165166 const burnTx = async () => collection.burn(alice);167 await expect(burnTx()).to.be.rejectedWith(/common\.NoPermission/);168 });169});tests/src/createCollection.test.tsdiffbeforeafterboth--- a/tests/src/createCollection.test.ts
+++ b/tests/src/createCollection.test.ts
@@ -29,7 +29,7 @@
collection = await helper.rft.mintCollection(signer, options);
}
const data = await collection.getData();
- expect(data?.normalizedOwner).to.be.equal(signer.address);
+ expect(data?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(signer.address));
expect(data?.name).to.be.equal(options.name);
expect(data?.description).to.be.equal(options.description);
expect(data?.raw.tokenPrefix).to.be.equal(options.tokenPrefix);
@@ -96,7 +96,7 @@
const limits = await collection.getEffectiveLimits();
const raw = data?.raw;
- expect(data?.normalizedOwner).to.be.equal(alice.address);
+ expect(data?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(alice.address));
expect(data?.name).to.be.equal('name');
expect(data?.description).to.be.equal('descr');
expect(raw.permissions.access).to.be.equal('AllowList');
tests/src/createMultipleItems.test.tsdiffbeforeafterboth--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -48,7 +48,7 @@
const tokens = await helper.nft.mintMultipleTokensWithOneOwner(alice, collection.collectionId, {Substrate: alice.address}, args);
for (const [i, token] of tokens.entries()) {
const tokenData = await token.getData();
- expect(tokenData?.normalizedOwner).to.be.deep.equal({Substrate: alice.address});
+ expect(tokenData?.normalizedOwner).to.be.deep.equal({Substrate: helper.util.normalizeSubstrateAddress(alice.address)});
expect(tokenData?.properties[0].value).to.be.equal(args[i].properties[0].value);
}
});
@@ -116,7 +116,7 @@
const tokens = await helper.nft.mintMultipleTokensWithOneOwner(alice, collection.collectionId, {Substrate: alice.address}, args);
for (const [i, token] of tokens.entries()) {
const tokenData = await token.getData();
- expect(tokenData?.normalizedOwner).to.be.deep.equal({Substrate: alice.address});
+ expect(tokenData?.normalizedOwner).to.be.deep.equal({Substrate: helper.util.normalizeSubstrateAddress(alice.address)});
expect(tokenData?.properties[0].value).to.be.equal(args[i].properties[0].value);
}
});
@@ -138,7 +138,7 @@
const tokens = await helper.nft.mintMultipleTokensWithOneOwner(alice, collection.collectionId, {Substrate: alice.address}, args);
for (const [i, token] of tokens.entries()) {
const tokenData = await token.getData();
- expect(tokenData?.normalizedOwner).to.be.deep.equal({Substrate: alice.address});
+ expect(tokenData?.normalizedOwner).to.be.deep.equal({Substrate: helper.util.normalizeSubstrateAddress(alice.address)});
expect(tokenData?.properties[0].value).to.be.equal(args[i].properties[0].value);
}
});
@@ -160,7 +160,7 @@
const tokens = await helper.nft.mintMultipleTokensWithOneOwner(alice, collection.collectionId, {Substrate: alice.address}, args);
for (const [i, token] of tokens.entries()) {
const tokenData = await token.getData();
- expect(tokenData?.normalizedOwner).to.be.deep.equal({Substrate: alice.address});
+ expect(tokenData?.normalizedOwner).to.be.deep.equal({Substrate: helper.util.normalizeSubstrateAddress(alice.address)});
expect(tokenData?.properties[0].value).to.be.equal(args[i].properties[0].value);
}
});