difftreelog
fix normalize addresses
in: master
3 files changed
tests/src/change-collection-owner.test.tsdiffbeforeafterboth--- a/tests/src/change-collection-owner.test.ts
+++ b/tests/src/change-collection-owner.test.ts
@@ -31,11 +31,11 @@
itSub('Changing owner changes owner address', async ({helper}) => {
const collection = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
const beforeChanging = await helper.collection.getData(collection.collectionId);
- expect(beforeChanging?.normalizedOwner).to.be.equal(alice.address);
+ expect(beforeChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(alice.address));
await collection.changeOwner(alice, bob.address);
const afterChanging = await helper.collection.getData(collection.collectionId);
- expect(afterChanging?.normalizedOwner).to.be.equal(bob.address);
+ expect(afterChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(bob.address));
});
});
@@ -60,7 +60,7 @@
await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);
const afterChanging = await helper.collection.getData(collection.collectionId);
- expect(afterChanging?.normalizedOwner).to.be.equal(bob.address);
+ expect(afterChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(bob.address));
});
itSub('New collectionOwner has access to sponsorship management operations in the collection', async ({helper}) => {
@@ -68,7 +68,7 @@
await collection.changeOwner(alice, bob.address);
const afterChanging = await helper.collection.getData(collection.collectionId);
- expect(afterChanging?.normalizedOwner).to.be.equal(bob.address);
+ expect(afterChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(bob.address));
await collection.setSponsor(bob, charlie.address);
await collection.confirmSponsorship(charlie);
@@ -97,7 +97,7 @@
await collection.changeOwner(alice, bob.address);
await collection.changeOwner(bob, charlie.address);
const collectionData = await collection.getData();
- expect(collectionData?.normalizedOwner).to.be.equal(charlie.address);
+ expect(collectionData?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(charlie.address));
});
});
@@ -140,7 +140,7 @@
await expect(changeOwnerTx()).to.be.rejectedWith(/common\.NoPermission/);
const afterChanging = await helper.collection.getData(collection.collectionId);
- expect(afterChanging?.normalizedOwner).to.be.equal(bob.address);
+ expect(afterChanging?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(bob.address));
const setSponsorTx = async () => collection.setSponsor(alice, charlie.address);
const confirmSponsorshipTx = async () => collection.confirmSponsorship(alice);
tests/src/createCollection.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 {usingPlaygrounds, expect, itSub, Pallets} from './util/playgrounds';18import {IKeyringPair} from '@polkadot/types/types';19import {ICollectionCreationOptions, IProperty} from './util/playgrounds/types';20import {DevUniqueHelper} from './util/playgrounds/unique.dev';2122async function mintCollectionHelper(helper: DevUniqueHelper, signer: IKeyringPair, options: ICollectionCreationOptions, type?: 'nft' | 'fungible' | 'refungible') {23 let collection;24 if (type === 'nft') {25 collection = await helper.nft.mintCollection(signer, options);26 } else if (type === 'fungible') {27 collection = await helper.ft.mintCollection(signer, options, 0);28 } else {29 collection = await helper.rft.mintCollection(signer, options);30 }31 const data = await collection.getData();32 expect(data?.normalizedOwner).to.be.equal(signer.address);33 expect(data?.name).to.be.equal(options.name);34 expect(data?.description).to.be.equal(options.description);35 expect(data?.raw.tokenPrefix).to.be.equal(options.tokenPrefix);36 if (options.properties) {37 expect(data?.raw.properties).to.be.deep.equal(options.properties);38 }3940 if (options.tokenPropertyPermissions) {41 expect(data?.raw.tokenPropertyPermissions).to.be.deep.equal(options.tokenPropertyPermissions);42 }4344 return collection;45}4647describe('integration test: ext. createCollection():', () => {48 let alice: IKeyringPair;4950 before(async () => {51 await usingPlaygrounds(async (helper, privateKey) => {52 const donor = privateKey('//Alice');53 [alice] = await helper.arrange.createAccounts([100n], donor);54 });55 });56 itSub('Create new NFT collection', async ({helper}) => {5758 await mintCollectionHelper(helper, alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'}, 'nft');59 });60 itSub('Create new NFT collection whith collection_name of maximum length (64 bytes)', async ({helper}) => {6162 await mintCollectionHelper(helper, alice, {name: 'A'.repeat(64), description: 'descr', tokenPrefix: 'COL'}, 'nft');63 });64 itSub('Create new NFT collection whith collection_description of maximum length (256 bytes)', async ({helper}) => {6566 await mintCollectionHelper(helper, alice, {name: 'name', description: 'A'.repeat(256), tokenPrefix: 'COL'}, 'nft');67 });68 itSub('Create new NFT collection whith token_prefix of maximum length (16 bytes)', async ({helper}) => {6970 await mintCollectionHelper(helper, alice, {name: 'name', description: 'descr', tokenPrefix: 'A'.repeat(16)}, 'nft');71 });72 itSub('Create new Fungible collection', async ({helper}) => {7374 await mintCollectionHelper(helper, alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'}, 'fungible');75 });76 itSub.ifWithPallets('Create new ReFungible collection', [Pallets.ReFungible], async ({helper}) => {7778 await mintCollectionHelper(helper, alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'}, 'refungible');79 });8081 itSub('create new collection with properties', async ({helper}) => {8283 await mintCollectionHelper(helper, alice, {84 name: 'name', description: 'descr', tokenPrefix: 'COL',85 properties: [{key: 'key1', value: 'val1'}],86 tokenPropertyPermissions: [{key: 'key1', permission: {tokenOwner: true, mutable: false, collectionAdmin: true}}],87 }, 'nft');88 });8990 itSub('Create new collection with extra fields', async ({helper}) => {9192 const collection = await mintCollectionHelper(helper, alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'}, 'fungible');93 await collection.setPermissions(alice, {access: 'AllowList'});94 await collection.setLimits(alice, {accountTokenOwnershipLimit: 3});95 const data = await collection.getData();96 const limits = await collection.getEffectiveLimits();97 const raw = data?.raw;9899 expect(data?.normalizedOwner).to.be.equal(alice.address);100 expect(data?.name).to.be.equal('name');101 expect(data?.description).to.be.equal('descr');102 expect(raw.permissions.access).to.be.equal('AllowList');103 expect(raw.mode).to.be.deep.equal({Fungible: '0'});104 expect(limits.accountTokenOwnershipLimit).to.be.equal(3);105 });106107 itSub('New collection is not external', async ({helper}) => {108109 const collection = await helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'});110 const data = await collection.getData();111 expect(data?.raw.readOnly).to.be.false;112 });113});114115describe('(!negative test!) integration test: ext. createCollection():', () => {116 let alice: IKeyringPair;117118 before(async () => {119 await usingPlaygrounds(async (helper, privateKey) => {120 const donor = privateKey('//Alice');121 [alice] = await helper.arrange.createAccounts([100n], donor);122 });123 });124125 itSub('(!negative test!) create new NFT collection whith incorrect data (collection_name)', async ({helper}) => {126 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'A'.repeat(65), description: 'descr', tokenPrefix: 'COL'});127 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');128 });129 itSub('(!negative test!) create new NFT collection whith incorrect data (collection_description)', async ({helper}) => {130 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'A'.repeat(257), tokenPrefix: 'COL'});131 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');132 });133 itSub('(!negative test!) create new NFT collection whith incorrect data (token_prefix)', async ({helper}) => {134135 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'A'.repeat(17)});136 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');137 });138 itSub('(!negative test!) fails when bad limits are set', async ({helper}) => {139140 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL', limits: {tokenLimit: 0}});141 await expect(mintCollectionTx()).to.be.rejectedWith(/common\.CollectionTokenLimitExceeded/);142 });143144 itSub('(!negative test!) create collection with incorrect property limit (64 elements)', async ({helper}) => {145 const props: IProperty[] = [];146147 for (let i = 0; i < 65; i++) {148 props.push({key: `key${i}`, value: `value${i}`});149 }150 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL', properties: props});151 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');152 });153154 itSub('(!negative test!) create collection with incorrect property limit (40 kb)', async ({helper}) => {155 const props: IProperty[] = [];156157 for (let i = 0; i < 32; i++) {158 props.push({key: `key${i}`.repeat(80), value: `value${i}`.repeat(80)});159 }160161 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL', properties: props});162 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');163 });164});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 {usingPlaygrounds, expect, itSub, Pallets} from './util/playgrounds';18import {IKeyringPair} from '@polkadot/types/types';19import {ICollectionCreationOptions, IProperty} from './util/playgrounds/types';20import {DevUniqueHelper} from './util/playgrounds/unique.dev';2122async function mintCollectionHelper(helper: DevUniqueHelper, signer: IKeyringPair, options: ICollectionCreationOptions, type?: 'nft' | 'fungible' | 'refungible') {23 let collection;24 if (type === 'nft') {25 collection = await helper.nft.mintCollection(signer, options);26 } else if (type === 'fungible') {27 collection = await helper.ft.mintCollection(signer, options, 0);28 } else {29 collection = await helper.rft.mintCollection(signer, options);30 }31 const data = await collection.getData();32 expect(data?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(signer.address));33 expect(data?.name).to.be.equal(options.name);34 expect(data?.description).to.be.equal(options.description);35 expect(data?.raw.tokenPrefix).to.be.equal(options.tokenPrefix);36 if (options.properties) {37 expect(data?.raw.properties).to.be.deep.equal(options.properties);38 }3940 if (options.tokenPropertyPermissions) {41 expect(data?.raw.tokenPropertyPermissions).to.be.deep.equal(options.tokenPropertyPermissions);42 }4344 return collection;45}4647describe('integration test: ext. createCollection():', () => {48 let alice: IKeyringPair;4950 before(async () => {51 await usingPlaygrounds(async (helper, privateKey) => {52 const donor = privateKey('//Alice');53 [alice] = await helper.arrange.createAccounts([100n], donor);54 });55 });56 itSub('Create new NFT collection', async ({helper}) => {5758 await mintCollectionHelper(helper, alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'}, 'nft');59 });60 itSub('Create new NFT collection whith collection_name of maximum length (64 bytes)', async ({helper}) => {6162 await mintCollectionHelper(helper, alice, {name: 'A'.repeat(64), description: 'descr', tokenPrefix: 'COL'}, 'nft');63 });64 itSub('Create new NFT collection whith collection_description of maximum length (256 bytes)', async ({helper}) => {6566 await mintCollectionHelper(helper, alice, {name: 'name', description: 'A'.repeat(256), tokenPrefix: 'COL'}, 'nft');67 });68 itSub('Create new NFT collection whith token_prefix of maximum length (16 bytes)', async ({helper}) => {6970 await mintCollectionHelper(helper, alice, {name: 'name', description: 'descr', tokenPrefix: 'A'.repeat(16)}, 'nft');71 });72 itSub('Create new Fungible collection', async ({helper}) => {7374 await mintCollectionHelper(helper, alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'}, 'fungible');75 });76 itSub.ifWithPallets('Create new ReFungible collection', [Pallets.ReFungible], async ({helper}) => {7778 await mintCollectionHelper(helper, alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'}, 'refungible');79 });8081 itSub('create new collection with properties', async ({helper}) => {8283 await mintCollectionHelper(helper, alice, {84 name: 'name', description: 'descr', tokenPrefix: 'COL',85 properties: [{key: 'key1', value: 'val1'}],86 tokenPropertyPermissions: [{key: 'key1', permission: {tokenOwner: true, mutable: false, collectionAdmin: true}}],87 }, 'nft');88 });8990 itSub('Create new collection with extra fields', async ({helper}) => {9192 const collection = await mintCollectionHelper(helper, alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'}, 'fungible');93 await collection.setPermissions(alice, {access: 'AllowList'});94 await collection.setLimits(alice, {accountTokenOwnershipLimit: 3});95 const data = await collection.getData();96 const limits = await collection.getEffectiveLimits();97 const raw = data?.raw;9899 expect(data?.normalizedOwner).to.be.equal(helper.util.normalizeSubstrateAddress(alice.address));100 expect(data?.name).to.be.equal('name');101 expect(data?.description).to.be.equal('descr');102 expect(raw.permissions.access).to.be.equal('AllowList');103 expect(raw.mode).to.be.deep.equal({Fungible: '0'});104 expect(limits.accountTokenOwnershipLimit).to.be.equal(3);105 });106107 itSub('New collection is not external', async ({helper}) => {108109 const collection = await helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'});110 const data = await collection.getData();111 expect(data?.raw.readOnly).to.be.false;112 });113});114115describe('(!negative test!) integration test: ext. createCollection():', () => {116 let alice: IKeyringPair;117118 before(async () => {119 await usingPlaygrounds(async (helper, privateKey) => {120 const donor = privateKey('//Alice');121 [alice] = await helper.arrange.createAccounts([100n], donor);122 });123 });124125 itSub('(!negative test!) create new NFT collection whith incorrect data (collection_name)', async ({helper}) => {126 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'A'.repeat(65), description: 'descr', tokenPrefix: 'COL'});127 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');128 });129 itSub('(!negative test!) create new NFT collection whith incorrect data (collection_description)', async ({helper}) => {130 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'A'.repeat(257), tokenPrefix: 'COL'});131 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');132 });133 itSub('(!negative test!) create new NFT collection whith incorrect data (token_prefix)', async ({helper}) => {134135 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'A'.repeat(17)});136 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');137 });138 itSub('(!negative test!) fails when bad limits are set', async ({helper}) => {139140 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL', limits: {tokenLimit: 0}});141 await expect(mintCollectionTx()).to.be.rejectedWith(/common\.CollectionTokenLimitExceeded/);142 });143144 itSub('(!negative test!) create collection with incorrect property limit (64 elements)', async ({helper}) => {145 const props: IProperty[] = [];146147 for (let i = 0; i < 65; i++) {148 props.push({key: `key${i}`, value: `value${i}`});149 }150 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL', properties: props});151 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');152 });153154 itSub('(!negative test!) create collection with incorrect property limit (40 kb)', async ({helper}) => {155 const props: IProperty[] = [];156157 for (let i = 0; i < 32; i++) {158 props.push({key: `key${i}`.repeat(80), value: `value${i}`.repeat(80)});159 }160161 const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL', properties: props});162 await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');163 });164});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);
}
});