UNPKG

@tatumio/tatum-v1

Version:

Tatum API client allows browsers and Node.js clients to interact with Tatum API.

306 lines 25.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const request_1 = require("../request"); const tatum_1 = require("../../connector/tatum"); describe('Mint721BuiltInPrivateKeyValidator tests', () => { describe('Validations with PK', () => { it('should test mint CELO with private key', async () => { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `${Date.now()}`, 'fromPrivateKey': '89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); }); it('should test mint ALGO with private key', async () => { await tatum_1.validateBody({ 'chain': request_1.Currency.ALGO, 'tokenId': 'TEST', 'url': 'https://www.seznam.cz', 'name': request_1.Currency.CELO, 'fromPrivateKey': '72TCV5BRQPBMSAFPYO3CPWVDBYWNGAYNMTW5QHENOMQF7I6QLNMJWCJZ7A3V5YKD7QD6ZZPEHG2PV2ZVVEDDO6BCRGXWIL3DIUMSUCI', }, request_1.MintAlgoNft); }); it('should not test mint CELO with private key - wrong tokenId', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d`, 'fromPrivateKey': '89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Wrong validation'); } catch (e) { console.log(e); } }); it('should not test mint CELO with private key - missing tokenId', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'fromPrivateKey': '89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Wrong validation'); } catch (e) { console.log(e); } }); it('should not test mint CELO with private key - wrong contractAddress length', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `1`, 'fromPrivateKey': '89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Wrong validation'); } catch (e) { console.log(e); } }); it('should not test mint CELO with private key - wrong PK length', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `1`, 'fromPrivateKey': '89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805dasdasd89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805dasdasd89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805dasdasd', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Wrong validation'); } catch (e) { console.log(e); } }); }); describe('Validations with signature ID', () => { it('should test mint CELO', async () => { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `${Date.now()}`, 'signatureId': 'e23c9cb0-0650-4d41-b8c1-dfa3f9b76fad', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); }); it('should not test mint CELO - wrong tokenId', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d`, 'signatureId': 'e23c9cb0-0650-4d41-b8c1-dfa3f9b76fad', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Wrong validation'); } catch (e) { console.log(e); } }); it('should not test mint CELO - missing tokenId', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'signatureId': 'e23c9cb0-0650-4d41-b8c1-dfa3f9b76fad', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Wrong validation'); } catch (e) { console.log(e); } }); it('should not test mint CELO - wrong contractAddress length', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `1`, 'signatureId': 'e23c9cb0-0650-4d41-b8c1-dfa3f9b76fad', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Wrong validation'); } catch (e) { console.log(e); } }); it('should not test mint CELO - wrong signatureId format', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `1`, 'signatureId': 'e23c9cb0-0650-4d41-b8c1-dfa3f9b76fada', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Wrong validation'); } catch (e) { console.log(e); } }); }); describe('Built IN contract minting', () => { it('should mint CELO without private key or signature id', async () => { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, }, request_1.CeloMintErc721); }); it('should mint ETH without private key or signature id', async () => { await tatum_1.validateBody({ 'chain': request_1.Currency.ETH, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', }, request_1.EthMintErc721); }); it('should mint ALGO without private key or signature id', async () => { await tatum_1.validateBody({ 'chain': request_1.Currency.ALGO, 'tokenId': 'TEST', 'url': 'https://www.seznam.cz', 'name': request_1.Currency.CELO, }, request_1.MintAlgoNft); }); it('should not mint TRON without private key or signature id - we dont mint on tron', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.TRON, 'to': 'TMk4gbr7KydL52nXUR8VacmbxyUPU31Asj', 'url': 'https://www.seznam.cz', }, request_1.TronMintTrc721); fail('Should not pass'); } catch (e) { console.log(e); } try { await tatum_1.validateBody({ 'chain': request_1.Currency.TRON, 'to': 'TMk4gbr7KydL52nXUR8VacmbxyUPU31Asj', 'url': 'https://www.seznam.cz', }, request_1.MintErc721); fail('Should not pass'); } catch (e) { console.log(e); } }); }); describe('Built IN with externalMinter', () => { it('should mint without PK or signatureID', async () => { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `${Date.now()}`, 'minter': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); }); it('should not mint - PK present', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `${Date.now()}`, 'minter': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'fromPrivateKey': '89f09a62c9601d660dcdbeab15fbecfc07933971465fab3ba9fe1354035d805d', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Should not pass'); } catch (e) { console.log(e); } }); it('should not mint - signatureId present', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'tokenId': `${Date.now()}`, 'minter': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'signatureId': 'e23c9cb0-0650-4d41-b8c1-dfa3f9b76fad', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Should not pass'); } catch (e) { console.log(e); } }); it('should not mint - tokenId not present', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'minter': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'contractAddress': '0x45871ED5F15203C0ce791eFE5f4B5044833aE10e', }, request_1.CeloMintErc721); fail('Should not pass'); } catch (e) { console.log(e); } }); it('should not mint - contractAddress not present', async () => { try { await tatum_1.validateBody({ 'chain': request_1.Currency.CELO, 'to': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'url': 'https://www.seznam.cz', 'feeCurrency': request_1.Currency.CELO, 'minter': '0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F', 'tokenId': '1', }, request_1.CeloMintErc721); fail('Should not pass'); } catch (e) { console.log(e); } }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWludDcyMUJ1aWx0SW5Qcml2YXRlS2V5VmFsaWRhdG9yLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWwvdmFsaWRhdGlvbi9taW50NzIxQnVpbHRJblByaXZhdGVLZXlWYWxpZGF0b3Iuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUE2RztBQUM3RyxpREFBb0Q7QUFFcEQsUUFBUSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtJQUN2RCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN0RCxNQUFNLG9CQUFZLENBQUM7Z0JBQ2pCLE9BQU8sRUFBRSxrQkFBUSxDQUFDLElBQUk7Z0JBQ3RCLElBQUksRUFBRSw0Q0FBNEM7Z0JBQ2xELEtBQUssRUFBRSx1QkFBdUI7Z0JBQzlCLGFBQWEsRUFBRSxrQkFBUSxDQUFDLElBQUk7Z0JBQzVCLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDMUIsZ0JBQWdCLEVBQUUsa0VBQWtFO2dCQUNwRixpQkFBaUIsRUFBRSw0Q0FBNEM7YUFDaEUsRUFBRSx3QkFBYyxDQUFDLENBQUE7UUFDcEIsQ0FBQyxDQUFDLENBQUE7UUFFRixFQUFFLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDdEQsTUFBTSxvQkFBWSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsa0JBQVEsQ0FBQyxJQUFJO2dCQUN0QixTQUFTLEVBQUUsTUFBTTtnQkFDakIsS0FBSyxFQUFFLHVCQUF1QjtnQkFDOUIsTUFBTSxFQUFFLGtCQUFRLENBQUMsSUFBSTtnQkFDckIsZ0JBQWdCLEVBQUUseUdBQXlHO2FBQzVILEVBQUUscUJBQVcsQ0FBQyxDQUFBO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO1FBRUYsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEtB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