--- a/tests/src/eth/allowlist.test.ts +++ b/tests/src/eth/allowlist.test.ts @@ -18,8 +18,8 @@ import {contractHelpers, createEthAccountWithBalance, deployFlipper, itWeb3} from './util/helpers'; describe('EVM allowlist', () => { - itWeb3('Contract allowlist can be toggled', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Contract allowlist can be toggled', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, owner); const helpers = contractHelpers(web3, owner); @@ -36,10 +36,10 @@ expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false; }); - itWeb3('Non-allowlisted user can\'t call contract with allowlist enabled', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Non-allowlisted user can\'t call contract with allowlist enabled', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, owner); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const helpers = contractHelpers(web3, owner); --- a/tests/src/eth/base.test.ts +++ b/tests/src/eth/base.test.ts @@ -32,16 +32,16 @@ import Web3 from 'web3'; describe('Contract calls', () => { - itWeb3('Call of simple contract fee is less than 0.2 UNQ', async ({web3, api}) => { - const deployer = await createEthAccountWithBalance(api, web3); + itWeb3('Call of simple contract fee is less than 0.2 UNQ', async ({web3, api, privateKeyWrapper}) => { + const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, deployer); const cost = await recordEthFee(api, deployer, () => flipper.methods.flip().send({from: deployer})); expect(cost < BigInt(0.2 * Number(UNIQUE))).to.be.true; }); - itWeb3('Balance transfer fee is less than 0.2 UNQ', async ({web3, api}) => { - const userA = await createEthAccountWithBalance(api, web3); + itWeb3('Balance transfer fee is less than 0.2 UNQ', async ({web3, api, privateKeyWrapper}) => { + const userA = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const userB = createEthAccount(web3); const cost = await recordEthFee(api, userA, () => web3.eth.sendTransaction({from: userA, to: userB, value: '1000000', ...GAS_ARGS})); @@ -50,7 +50,7 @@ }); itWeb3('NFT transfer is close to 0.15 UNQ', async ({web3, api, privateKeyWrapper}) => { - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const receiver = createEthAccount(web3); const alice = privateKeyWrapper('//Alice'); --- a/tests/src/eth/collectionProperties.test.ts +++ b/tests/src/eth/collectionProperties.test.ts @@ -7,7 +7,7 @@ describe('EVM collection properties', () => { itWeb3('Can be set', async({web3, api, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller}); @@ -22,7 +22,7 @@ }); itWeb3('Can be deleted', async({web3, api, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); await executeTransaction(api, alice, api.tx.unique.setCollectionProperties(collection, [{key: 'testKey', value: 'testValue'}])); --- a/tests/src/eth/contractSponsoring.test.ts +++ b/tests/src/eth/contractSponsoring.test.ts @@ -44,8 +44,8 @@ import {evmToAddress} from '@polkadot/util-crypto'; describe('Sponsoring EVM contracts', () => { - itWeb3('Sponsoring can be set by the address that has deployed the contract', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Sponsoring can be set by the address that has deployed the contract', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, owner); const helpers = contractHelpers(web3, owner); expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false; @@ -53,9 +53,9 @@ expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true; }); - itWeb3('Sponsoring cannot be set by the address that did not deployed the contract', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); - const notOwner = await createEthAccountWithBalance(api, web3); + itWeb3('Sponsoring cannot be set by the address that did not deployed the contract', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const notOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, owner); const helpers = contractHelpers(web3, owner); expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false; @@ -66,8 +66,8 @@ itWeb3('In generous mode, non-allowlisted user transaction will be sponsored', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); - const caller = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, owner); @@ -94,7 +94,7 @@ itWeb3('Sponsoring is set, an address that has no UNQ can send a transaction and it works. Sponsor balance should decrease (allowlisted)', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const caller = createEthAccount(web3); const flipper = await deployFlipper(web3, owner); @@ -124,7 +124,7 @@ itWeb3('Sponsoring is set, an address that has no UNQ can send a transaction and it works. Sponsor balance should not decrease (non-allowlisted)', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const caller = createEthAccount(web3); const flipper = await deployFlipper(web3, owner); @@ -152,8 +152,8 @@ itWeb3('Sponsoring is set, an address that has UNQ can send a transaction and it works. User balance should not change', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); - const caller = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const originalCallerBalance = await web3.eth.getBalance(caller); const flipper = await deployFlipper(web3, owner); @@ -181,8 +181,8 @@ itWeb3('Sponsoring is limited, with setContractRateLimit. The limitation is working if transactions are sent more often, the sender pays the commission.', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); - const caller = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const originalCallerBalance = await web3.eth.getBalance(caller); const flipper = await deployFlipper(web3, owner); @@ -214,30 +214,31 @@ }); // TODO: Find a way to calculate default rate limit - itWeb3('Default rate limit equals 7200', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Default rate limit equals 7200', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, owner); const helpers = contractHelpers(web3, owner); expect(await helpers.methods.getSponsoringRateLimit(flipper.options.address).call()).to.be.equals('7200'); }); - itWeb3('Sponsoring collection from evm address via access list', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Sponsoring collection from evm address via access list', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelpers = evmCollectionHelpers(web3, owner); let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send(); const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result); - const sponsor = await createEthAccountWithBalance(api, web3); + const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionEvm = evmCollection(web3, owner, collectionIdAddress); result = await collectionEvm.methods.setCollectionSponsor(sponsor).send({from: owner}); let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!; + const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format; expect(collectionSub.sponsorship.isUnconfirmed).to.be.true; - expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor)); + expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format))); await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor'); await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor}); collectionSub = (await getDetailedCollectionInfo(api, collectionId))!; expect(collectionSub.sponsorship.isConfirmed).to.be.true; - expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor)); + expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format))); const user = createEthAccount(web3); let nextTokenId = await collectionEvm.methods.nextTokenId().call(); @@ -289,23 +290,24 @@ expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true; }); - itWeb3('Check that transaction via EVM spend money from sponsor address', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Check that transaction via EVM spend money from sponsor address', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelpers = evmCollectionHelpers(web3, owner); let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send(); const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result); - const sponsor = await createEthAccountWithBalance(api, web3); + const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionEvm = evmCollection(web3, owner, collectionIdAddress); result = await collectionEvm.methods.setCollectionSponsor(sponsor).send(); let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!; + const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format; expect(collectionSub.sponsorship.isUnconfirmed).to.be.true; - expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor)); + expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format))); await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor'); const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress); await sponsorCollection.methods.confirmCollectionSponsorship().send(); collectionSub = (await getDetailedCollectionInfo(api, collectionId))!; expect(collectionSub.sponsorship.isConfirmed).to.be.true; - expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor)); + expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format))); const user = createEthAccount(web3); await collectionEvm.methods.addCollectionAdmin(user).send(); --- a/tests/src/eth/createCollection.test.ts +++ b/tests/src/eth/createCollection.test.ts @@ -28,67 +28,68 @@ } from './util/helpers'; describe('Create collection from EVM', () => { - itWeb3('Create collection', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); - const collectionHelper = evmCollectionHelpers(web3, owner); - const collectionName = 'CollectionEVM'; - const description = 'Some description'; - const tokenPrefix = 'token prefix'; + // itWeb3('Create collection', async ({api, web3, privateKeyWrapper}) => { + // const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + // const collectionHelper = evmCollectionHelpers(web3, owner); + // const collectionName = 'CollectionEVM'; + // const description = 'Some description'; + // const tokenPrefix = 'token prefix'; - const collectionCountBefore = await getCreatedCollectionCount(api); - const result = await collectionHelper.methods - .createNonfungibleCollection(collectionName, description, tokenPrefix) - .send(); - const collectionCountAfter = await getCreatedCollectionCount(api); + // const collectionCountBefore = await getCreatedCollectionCount(api); + // const result = await collectionHelper.methods + // .createNonfungibleCollection(collectionName, description, tokenPrefix) + // .send(); + // const collectionCountAfter = await getCreatedCollectionCount(api); - const {collectionId, collection} = await getCollectionAddressFromResult(api, result); - expect(collectionCountAfter - collectionCountBefore).to.be.eq(1); - expect(collectionId).to.be.eq(collectionCountAfter); - expect(collection.name.map(v => String.fromCharCode(v.toNumber())).join('')).to.be.eq(collectionName); - expect(collection.description.map(v => String.fromCharCode(v.toNumber())).join('')).to.be.eq(description); - expect(collection.tokenPrefix.toHuman()).to.be.eq(tokenPrefix); - }); + // const {collectionId, collection} = await getCollectionAddressFromResult(api, result); + // expect(collectionCountAfter - collectionCountBefore).to.be.eq(1); + // expect(collectionId).to.be.eq(collectionCountAfter); + // expect(collection.name.map(v => String.fromCharCode(v.toNumber())).join('')).to.be.eq(collectionName); + // expect(collection.description.map(v => String.fromCharCode(v.toNumber())).join('')).to.be.eq(description); + // expect(collection.tokenPrefix.toHuman()).to.be.eq(tokenPrefix); + // }); - itWeb3('Check collection address exist', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); - const collectionHelpers = evmCollectionHelpers(web3, owner); + // itWeb3('Check collection address exist', async ({api, web3, privateKeyWrapper}) => { + // const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + // const collectionHelpers = evmCollectionHelpers(web3, owner); - const expectedCollectionId = await getCreatedCollectionCount(api) + 1; - const expectedCollectionAddress = collectionIdToAddress(expectedCollectionId); - expect(await collectionHelpers.methods - .isCollectionExist(expectedCollectionAddress) - .call()).to.be.false; + // const expectedCollectionId = await getCreatedCollectionCount(api) + 1; + // const expectedCollectionAddress = collectionIdToAddress(expectedCollectionId); + // expect(await collectionHelpers.methods + // .isCollectionExist(expectedCollectionAddress) + // .call()).to.be.false; - await collectionHelpers.methods - .createNonfungibleCollection('A', 'A', 'A') - .send(); + // await collectionHelpers.methods + // .createNonfungibleCollection('A', 'A', 'A') + // .send(); - expect(await collectionHelpers.methods - .isCollectionExist(expectedCollectionAddress) - .call()).to.be.true; - }); + // expect(await collectionHelpers.methods + // .isCollectionExist(expectedCollectionAddress) + // .call()).to.be.true; + // }); - itWeb3('Set sponsorship', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Set sponsorship', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelpers = evmCollectionHelpers(web3, owner); let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send(); const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result); - const sponsor = await createEthAccountWithBalance(api, web3); + const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionEvm = evmCollection(web3, owner, collectionIdAddress); result = await collectionEvm.methods.setCollectionSponsor(sponsor).send(); let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!; expect(collectionSub.sponsorship.isUnconfirmed).to.be.true; - expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor)); + const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format; + expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format))); await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor'); const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress); await sponsorCollection.methods.confirmCollectionSponsorship().send(); collectionSub = (await getDetailedCollectionInfo(api, collectionId))!; expect(collectionSub.sponsorship.isConfirmed).to.be.true; - expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor)); + expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format))); }); - itWeb3('Set limits', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Set limits', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelpers = evmCollectionHelpers(web3, owner); const result = await collectionHelpers.methods.createNonfungibleCollection('Const collection', '5', '5').send(); const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result); @@ -127,8 +128,8 @@ expect(collectionSub.limits.transfersEnabled.toHuman()).to.be.eq(limits.transfersEnabled); }); - itWeb3('Collection address exist', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Collection address exist', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionAddressForNonexistentCollection = '0x17C4E6453CC49AAAAEACA894E6D9683E00112233'; const collectionHelpers = evmCollectionHelpers(web3, owner); expect(await collectionHelpers.methods @@ -144,8 +145,8 @@ }); describe('(!negative tests!) Create collection from EVM', () => { - itWeb3('(!negative test!) Create collection (bad lengths)', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative test!) Create collection (bad lengths)', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const helper = evmCollectionHelpers(web3, owner); { const MAX_NAME_LENGHT = 64; @@ -190,8 +191,8 @@ .call()).to.be.rejectedWith('NotSufficientFounds'); }); - itWeb3('(!negative test!) Check owner', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative test!) Check owner', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const notOwner = await createEthAccount(web3); const collectionHelpers = evmCollectionHelpers(web3, owner); const result = await collectionHelpers.methods.createNonfungibleCollection('A', 'A', 'A').send(); @@ -199,7 +200,7 @@ const contractEvmFromNotOwner = evmCollection(web3, notOwner, collectionIdAddress); const EXPECTED_ERROR = 'NoPermission'; { - const sponsor = await createEthAccountWithBalance(api, web3); + const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await expect(contractEvmFromNotOwner.methods .setCollectionSponsor(sponsor) .call()).to.be.rejectedWith(EXPECTED_ERROR); @@ -216,8 +217,8 @@ } }); - itWeb3('(!negative test!) Set limits', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('(!negative test!) Set limits', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelpers = evmCollectionHelpers(web3, owner); const result = await collectionHelpers.methods.createNonfungibleCollection('Schema collection', 'A', 'A').send(); const {collectionIdAddress} = await getCollectionAddressFromResult(api, result); --- a/tests/src/eth/crossTransfer.test.ts +++ b/tests/src/eth/crossTransfer.test.ts @@ -48,8 +48,8 @@ }); const alice = privateKeyWrapper('//Alice'); const bob = privateKeyWrapper('//Bob'); - const bobProxy = await createEthAccountWithBalance(api, web3); - const aliceProxy = await createEthAccountWithBalance(api, web3); + const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, alice.address); await transferExpectSuccess(collection, 0, alice, {Ethereum: aliceProxy} , 200, 'Fungible'); @@ -85,8 +85,8 @@ const alice = privateKeyWrapper('//Alice'); const bob = privateKeyWrapper('//Bob'); const charlie = privateKeyWrapper('//Charlie'); - const bobProxy = await createEthAccountWithBalance(api, web3); - const aliceProxy = await createEthAccountWithBalance(api, web3); + const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address}); await transferExpectSuccess(collection, tokenId, alice, {Ethereum: aliceProxy} , 1, 'NFT'); const address = collectionIdToAddress(collection); --- a/tests/src/eth/fungible.test.ts +++ b/tests/src/eth/fungible.test.ts @@ -27,7 +27,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address}); @@ -45,7 +45,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: caller}); @@ -65,7 +65,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner}); @@ -208,7 +208,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const spender = createEthAccount(web3); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner}); @@ -226,8 +226,8 @@ }); const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); - const spender = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const spender = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner}); @@ -246,7 +246,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const receiver = createEthAccount(web3); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner}); --- a/tests/src/eth/helpersSmoke.test.ts +++ b/tests/src/eth/helpersSmoke.test.ts @@ -18,16 +18,16 @@ import {createEthAccountWithBalance, deployFlipper, itWeb3, contractHelpers} from './util/helpers'; describe('Helpers sanity check', () => { - itWeb3('Contract owner is recorded', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Contract owner is recorded', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, owner); expect(await contractHelpers(web3, owner).methods.contractOwner(flipper.options.address).call()).to.be.equal(owner); }); - itWeb3('Flipper is working', async ({api, web3}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Flipper is working', async ({api, web3, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, owner); expect(await flipper.methods.getValue().call()).to.be.false; --- a/tests/src/eth/marketplace/marketplace.test.ts +++ b/tests/src/eth/marketplace/marketplace.test.ts @@ -39,7 +39,7 @@ describe('Matcher contract usage', () => { itWeb3('With UNQ', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const matcherOwner = await createEthAccountWithBalance(api, web3); + const matcherOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, { from: matcherOwner, ...GAS_ARGS, @@ -100,8 +100,8 @@ itWeb3('With escrow', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const matcherOwner = await createEthAccountWithBalance(api, web3); - const escrow = await createEthAccountWithBalance(api, web3); + const matcherOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const escrow = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, { from: matcherOwner, ...GAS_ARGS, @@ -171,7 +171,7 @@ itWeb3('Sell tokens from substrate user via EVM contract', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const matcherOwner = await createEthAccountWithBalance(api, web3); + const matcherOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, { from: matcherOwner, ...GAS_ARGS, --- a/tests/src/eth/migration.test.ts +++ b/tests/src/eth/migration.test.ts @@ -54,7 +54,7 @@ ]; const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.begin(ADDRESS) as any)); await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.setData(ADDRESS, DATA as any) as any)); --- a/tests/src/eth/nonFungible.test.ts +++ b/tests/src/eth/nonFungible.test.ts @@ -26,7 +26,7 @@ mode: {type: 'NFT'}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address}); @@ -43,7 +43,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum:caller}); await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller}); await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller}); @@ -61,7 +61,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller}); const address = collectionIdToAddress(collection); @@ -73,8 +73,8 @@ }); describe('NFT: Plain calls', () => { - itWeb3('Can perform mint()', async ({web3, api}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Can perform mint()', async ({web3, api, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const helper = evmCollectionHelpers(web3, owner); let result = await helper.methods.createNonfungibleCollection('Mint collection', '6', '6').send(); const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result); @@ -119,7 +119,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: caller}); await submitTransactionAsync(alice, changeAdminTx); const receiver = createEthAccount(web3); @@ -182,7 +182,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner}); @@ -341,7 +341,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const spender = createEthAccount(web3); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner}); @@ -359,8 +359,8 @@ }); const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); - const spender = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const spender = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner}); @@ -379,7 +379,7 @@ }); const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const receiver = createEthAccount(web3); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner}); @@ -541,12 +541,12 @@ }); describe('Common metadata', () => { - itWeb3('Returns collection name', async ({api, web3}) => { + itWeb3('Returns collection name', async ({api, web3, privateKeyWrapper}) => { const collection = await createCollectionExpectSuccess({ name: 'token name', mode: {type: 'NFT'}, }); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const address = collectionIdToAddress(collection); const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}); @@ -555,12 +555,12 @@ expect(name).to.equal('token name'); }); - itWeb3('Returns symbol name', async ({api, web3}) => { + itWeb3('Returns symbol name', async ({api, web3, privateKeyWrapper}) => { const collection = await createCollectionExpectSuccess({ tokenPrefix: 'TOK', mode: {type: 'NFT'}, }); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const address = collectionIdToAddress(collection); const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}); --- a/tests/src/eth/payable.test.ts +++ b/tests/src/eth/payable.test.ts @@ -22,8 +22,8 @@ import {getBalanceSingle, transferBalanceExpectSuccess} from '../substrate/get-balance'; describe('EVM payable contracts', () => { - itWeb3('Evm contract can receive wei from eth account', async ({api, web3}) => { - const deployer = await createEthAccountWithBalance(api, web3); + itWeb3('Evm contract can receive wei from eth account', async ({api, web3, privateKeyWrapper}) => { + const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const contract = await deployCollector(web3, deployer); await web3.eth.sendTransaction({from: deployer, to: contract.options.address, value: '10000', ...GAS_ARGS}); @@ -32,7 +32,7 @@ }); itWeb3('Evm contract can receive wei from substrate account', async ({api, web3, privateKeyWrapper}) => { - const deployer = await createEthAccountWithBalance(api, web3); + const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const contract = await deployCollector(web3, deployer); const alice = privateKeyWrapper('//Alice'); @@ -62,7 +62,7 @@ // We can't handle sending balance to backing storage of evm balance, because evmToAddress operation is irreversible itWeb3('Wei sent directly to backing storage of evm contract balance is unaccounted', async({api, web3, privateKeyWrapper}) => { - const deployer = await createEthAccountWithBalance(api, web3); + const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const contract = await deployCollector(web3, deployer); const alice = privateKeyWrapper('//Alice'); @@ -75,7 +75,7 @@ const FEE_BALANCE = 1000n * UNIQUE; const CONTRACT_BALANCE = 1n * UNIQUE; - const deployer = await createEthAccountWithBalance(api, web3); + const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const contract = await deployCollector(web3, deployer); const alice = privateKeyWrapper('//Alice'); --- a/tests/src/eth/proxy/fungibleProxy.test.ts +++ b/tests/src/eth/proxy/fungibleProxy.test.ts @@ -21,10 +21,11 @@ import {ApiPromise} from '@polkadot/api'; import Web3 from 'web3'; import {readFile} from 'fs/promises'; +import {IKeyringPair} from '@polkadot/types/types'; -async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any) { +async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any, privateKeyWrapper: (account: string) => IKeyringPair) { // Proxy owner has no special privilegies, we don't need to reuse them - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const proxyContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueFungibleProxy.abi`)).toString()), undefined, { from: owner, ...GAS_ARGS, @@ -40,12 +41,12 @@ mode: {type: 'Fungible', decimalPoints: 0}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address}); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); const totalSupply = await contract.methods.totalSupply().call(); expect(totalSupply).to.equal('200'); @@ -57,12 +58,12 @@ mode: {type: 'Fungible', decimalPoints: 0}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: caller}); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); const balance = await contract.methods.balanceOf(caller).call(); expect(balance).to.equal('200'); @@ -76,11 +77,11 @@ mode: {type: 'Fungible', decimalPoints: 0}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const spender = createEthAccount(web3); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: contract.options.address}); { @@ -112,8 +113,8 @@ mode: {type: 'Fungible', decimalPoints: 0}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); - const owner = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner}); @@ -121,7 +122,7 @@ const address = collectionIdToAddress(collection); const evmCollection = new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}); - const contract = await proxyWrap(api, web3, evmCollection); + const contract = await proxyWrap(api, web3, evmCollection, privateKeyWrapper); await evmCollection.methods.approve(contract.options.address, 100).send({from: owner}); @@ -167,11 +168,11 @@ mode: {type: 'Fungible', decimalPoints: 0}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); - const receiver = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const receiver = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: contract.options.address}); { --- a/tests/src/eth/proxy/nonFungibleProxy.test.ts +++ b/tests/src/eth/proxy/nonFungibleProxy.test.ts @@ -22,10 +22,11 @@ import Web3 from 'web3'; import {readFile} from 'fs/promises'; import {ApiPromise} from '@polkadot/api'; +import {IKeyringPair} from '@polkadot/types/types'; -async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any) { +async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any, privateKeyWrapper: (account: string) => IKeyringPair) { // Proxy owner has no special privilegies, we don't need to reuse them - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const proxyContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueNFTProxy.abi`)).toString()), undefined, { from: owner, ...GAS_ARGS, @@ -40,12 +41,12 @@ mode: {type: 'NFT'}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address}); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); const totalSupply = await contract.methods.totalSupply().call(); expect(totalSupply).to.equal('1'); @@ -57,13 +58,13 @@ }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller}); await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller}); await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller}); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); const balance = await contract.methods.balanceOf(caller).call(); expect(balance).to.equal('3'); @@ -75,11 +76,11 @@ }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller}); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); const owner = await contract.methods.ownerOf(tokenId).call(); expect(owner).to.equal(caller); @@ -87,18 +88,18 @@ }); describe('NFT (Via EVM proxy): Plain calls', () => { - itWeb3('Can perform mint()', async ({web3, api}) => { - const owner = await createEthAccountWithBalance(api, web3); + itWeb3('Can perform mint()', async ({web3, api, privateKeyWrapper}) => { + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); const result = await collectionHelper.methods .createNonfungibleCollection('A', 'A', 'A') .send(); const {collectionIdAddress} = await getCollectionAddressFromResult(api, result); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const receiver = createEthAccount(web3); const collectionEvmOwned = evmCollection(web3, owner, collectionIdAddress); const collectionEvm = evmCollection(web3, caller, collectionIdAddress); - const contract = await proxyWrap(api, web3, collectionEvm); + const contract = await proxyWrap(api, web3, collectionEvm, privateKeyWrapper); await collectionEvmOwned.methods.addCollectionAdmin(contract.options.address).send(); { @@ -135,11 +136,11 @@ }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const receiver = createEthAccount(web3); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address}); await submitTransactionAsync(alice, changeAdminTx); @@ -197,10 +198,10 @@ mode: {type: 'NFT'}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address}); const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address}); @@ -229,11 +230,11 @@ mode: {type: 'NFT'}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const spender = createEthAccount(web3); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address)); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address), privateKeyWrapper); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address}); { @@ -259,14 +260,14 @@ mode: {type: 'NFT'}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); - const owner = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const receiver = createEthAccount(web3); const address = collectionIdToAddress(collection); const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}); - const contract = await proxyWrap(api, web3, evmCollection); + const contract = await proxyWrap(api, web3, evmCollection, privateKeyWrapper); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner}); await evmCollection.methods.approve(contract.options.address, tokenId).send({from: owner}); @@ -303,11 +304,11 @@ mode: {type: 'NFT'}, }); const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const receiver = createEthAccount(web3); const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS})); + const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address}); { --- a/tests/src/eth/scheduling.test.ts +++ b/tests/src/eth/scheduling.test.ts @@ -17,14 +17,13 @@ import {expect} from 'chai'; import {createEthAccountWithBalance, deployFlipper, GAS_ARGS, itWeb3, subToEth, transferBalanceToEth} from './util/helpers'; import {scheduleExpectSuccess, waitNewBlocks} from '../util/helpers'; -import privateKey from '../substrate/privateKey'; describe('Scheduing EVM smart contracts', () => { - itWeb3('Successfully schedules and periodically executes an EVM contract', async ({api, web3}) => { - const deployer = await createEthAccountWithBalance(api, web3); + itWeb3('Successfully schedules and periodically executes an EVM contract', async ({api, web3, privateKeyWrapper}) => { + const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, deployer); const initialValue = await flipper.methods.getValue().call(); - const alice = privateKey('//Alice'); + const alice = privateKeyWrapper('//Alice'); await transferBalanceToEth(api, alice, subToEth(alice.address)); { --- a/tests/src/eth/sponsoring.test.ts +++ b/tests/src/eth/sponsoring.test.ts @@ -21,7 +21,7 @@ itWeb3('Fee is deducted from contract if sponsoring is enabled', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const caller = createEthAccount(web3); const originalCallerBalance = await web3.eth.getBalance(caller); expect(originalCallerBalance).to.be.equal('0'); @@ -52,8 +52,8 @@ itWeb3('...but this doesn\'t applies to payable value', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const owner = await createEthAccountWithBalance(api, web3); - const caller = await createEthAccountWithBalance(api, web3); + const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const originalCallerBalance = await web3.eth.getBalance(caller); expect(originalCallerBalance).to.be.not.equal('0'); --- a/tests/src/eth/tokenProperties.test.ts +++ b/tests/src/eth/tokenProperties.test.ts @@ -7,7 +7,7 @@ describe('EVM token properties', () => { itWeb3('Can be reconfigured', async({web3, api, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); for(const [mutable,collectionAdmin, tokenOwner] of cartesian([], [false, true], [false, true], [false, true])) { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller}); @@ -25,7 +25,7 @@ }); itWeb3('Can be set', async({web3, api, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); const token = await createItemExpectSuccess(alice, collection, 'NFT'); @@ -48,7 +48,7 @@ }); itWeb3('Can be deleted', async({web3, api, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); - const caller = await createEthAccountWithBalance(api, web3); + const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); const token = await createItemExpectSuccess(alice, collection, 'NFT'); --- a/tests/src/eth/util/helpers.ts +++ b/tests/src/eth/util/helpers.ts @@ -112,8 +112,8 @@ return account.address; } -export async function createEthAccountWithBalance(api: ApiPromise, web3: Web3) { - const alice = privateKey('//Alice'); +export async function createEthAccountWithBalance(api: ApiPromise, web3: Web3, privateKeyWrapper: (account: string) => IKeyringPair) { + const alice = privateKeyWrapper('//Alice'); const account = createEthAccount(web3); await transferBalanceToEth(api, alice, account); --- a/tests/src/rmrk/rmrk.test.ts +++ b/tests/src/rmrk/rmrk.test.ts @@ -49,8 +49,8 @@ describe('RMRK External Integration Test', () => { before(async () => { - await usingApi(async () => { - alice = privateKey('//Alice'); + await usingApi(async (api, privateKeyWrapper) => { + alice = privateKeyWrapper('//Alice'); }); }); @@ -75,9 +75,9 @@ let rmrkNftId: number; before(async () => { - await usingApi(async api => { - alice = privateKey('//Alice'); - bob = privateKey('//Bob'); + await usingApi(async (api, privateKeyWrapper) => { + alice = privateKeyWrapper('//Alice'); + bob = privateKeyWrapper('//Bob'); const collectionIds = await createRmrkCollection(api, alice); uniqueCollectionId = collectionIds.uniqueId; @@ -210,9 +210,9 @@ let nftId: number; before(async () => { - await usingApi(async () => { - alice = privateKey('//Alice'); - bob = privateKey('//Bob'); + await usingApi(async (api, privateKeyWrapper) => { + alice = privateKeyWrapper('//Alice'); + bob = privateKeyWrapper('//Bob'); collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); nftId = await createItemExpectSuccess(alice, collectionId, 'NFT'); --- a/tests/src/rpc.load.ts +++ b/tests/src/rpc.load.ts @@ -59,8 +59,7 @@ const deployer = await findUnusedAddress(api, privateKeyWrapper); // Transfer balance to it - const keyring = new Keyring({type: 'sr25519'}); - const alice = keyring.addFromUri('//Alice'); + const alice = privateKeyWrapper('//Alice'); const amount = BigInt(endowment) + 10n**15n; const tx = api.tx.balances.transfer(deployer.address, amount); await submitTransactionAsync(alice, tx); --- a/tests/src/scheduler.test.ts +++ b/tests/src/scheduler.test.ts @@ -52,9 +52,9 @@ let scheduledIdSlider: number; before(async() => { - await usingApi(async () => { - alice = privateKey('//Alice'); - bob = privateKey('//Bob'); + await usingApi(async (api, privateKeyWrapper) => { + alice = privateKeyWrapper('//Alice'); + bob = privateKeyWrapper('//Bob'); }); scheduledIdBase = '0x' + '0'.repeat(31);