@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
136 lines • 14.8 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const dedent_js_1 = __importDefault(require("dedent-js"));
const model_1 = require("../model");
const flow_1 = require("./flow");
const tatum_1 = require("../connector/tatum");
describe('Flow tests', () => {
jest.setTimeout(199999);
it('should create account from public key', async () => {
const result = await flow_1.flowCreateAccountFromPublicKey(true, '968c3ce11e871cb2b7161b282655ee5fcb051f3c04894705d771bf11c6fbebfc6556ab8a0c04f45ea56281312336d0668529077c9d66891a6cad3db877acbe90', '0x955cd3f17b2fd8ad', '37afa218d41d9cd6a2c6f2b96d9eaa3ad96c598252bc50e4d45d62f9356a51f8');
console.log(result);
expect(result.address).toBeDefined();
expect(result.txId).toBeDefined();
});
it('should add public key to account', async () => {
const result = await flow_1.flowAddPublicKeyToAccount(true, '968c3ce11e871cb2b7161b282655ee5fcb051f3c04894705d771bf11c6fbebfc6556ab8a0c04f45ea56281312336d0668529077c9d66891a6cad3db877acbe90', '0x955cd3f17b2fd8ad', '37afa218d41d9cd6a2c6f2b96d9eaa3ad96c598252bc50e4d45d62f9356a51f8');
console.log(result);
expect(result.address).toBe('0x955cd3f17b2fd8ad');
expect(result.txId).toBeDefined();
});
it('should send FLOW transaction', async () => {
const body = new model_1.TransferFlow();
body.to = '0x21cbd745a4df66f1';
body.amount = '0.001';
body.account = '0x4f09d8d43e4967b7';
body.privateKey = '44179e42e147b391d3deb8a7a160b9490941cd7292936e6cc7277166a99ef058';
body.currency = model_1.Currency.FLOW;
const result = await flow_1.flowSendTransaction(true, body, () => flow_1.getFlowSigner('44179e42e147b391d3deb8a7a160b9490941cd7292936e6cc7277166a99ef058', '0x4f09d8d43e4967b7', 0).signer, () => flow_1.getFlowSigner('44179e42e147b391d3deb8a7a160b9490941cd7292936e6cc7277166a99ef058', '0x4f09d8d43e4967b7').signer);
expect(result.txId).toBeDefined();
console.log(result);
});
it(' FLOW transaction validation mnomonic and index', async () => {
const body = new model_1.TransferFlow();
body.to = '0xbf4cacdb6ef17fa7';
body.amount = '0.114';
body.account = '0x2db1c763e6466c0c';
body.mnemonic = 'marriage favorite inject forward major beef upset victory tissue coil where grant else mean tag pipe naive leg material have blue execute spend chaos';
body.index = 1;
body.currency = model_1.Currency.FLOW;
const result = await tatum_1.validateBody(body, model_1.TransferFlow);
expect(true);
});
it(' FLOW transaction validation privatekey and index', async () => {
const body = new model_1.TransferFlow();
body.to = '0xbf4cacdb6ef17fa7';
body.amount = '0.114';
body.account = '0x2db1c763e6466c0c';
body.privateKey = 'deacb2978067c28a097549d37613a16b64c20ad04f300319cb601dbef0457824';
body.index = 1;
body.currency = model_1.Currency.FLOW;
await tatum_1.validateBody(body, model_1.TransferFlow);
expect(true);
});
it('should send FLOW API signer transaction', async () => {
const body = new model_1.TransferFlow();
body.to = '0x21cbd745a4df66f1';
body.amount = '0.001';
body.account = '0x4f09d8d43e4967b7';
body.privateKey = '44179e42e147b391d3deb8a7a160b9490941cd7292936e6cc7277166a99ef058';
body.currency = model_1.Currency.FLOW;
const result = await flow_1.flowSendTransaction(true, body);
expect(result.txId).toBeDefined();
console.log(result);
});
it('should mint NFT FLOW API signer transaction', async () => {
const body = new model_1.FlowMintNft();
body.to = '0x10247089e55180c9';
body.contractAddress = '2d103773-50e2-4a37-ac3d-61bc6af8faee';
body.url = 'url';
body.account = '0x10247089e55180c9';
body.privateKey = '3881849dd540a0c80383c3727951d35e3e9e8c238ec82a581726c3fc2ca17bc4';
body.chain = model_1.Currency.FLOW;
const result = await flow_1.sendFlowNftMintToken(true, body);
expect(result.txId).toBeDefined();
console.log(result);
});
it('should burn NFT FLOW API signer transaction', async () => {
const body = new model_1.FlowBurnNft();
body.tokenId = '196';
body.contractAddress = '2d103773-50e2-4a37-ac3d-61bc6af8faee';
body.account = '0x10247089e55180c9';
body.privateKey = '3881849dd540a0c80383c3727951d35e3e9e8c238ec82a581726c3fc2ca17bc4';
body.chain = model_1.Currency.FLOW;
const result = await flow_1.sendFlowNftBurnToken(true, body);
expect(result.txId).toBeDefined();
console.log(result);
});
it('should transfer NFT FLOW API signer transaction', async () => {
const body = new model_1.FlowTransferNft();
body.tokenId = '199';
body.contractAddress = '2d103773-50e2-4a37-ac3d-61bc6af8faee';
body.account = '0x10247089e55180c9';
body.privateKey = '3881849dd540a0c80383c3727951d35e3e9e8c238ec82a581726c3fc2ca17bc4';
body.chain = model_1.Currency.FLOW;
const result = await flow_1.sendFlowNftBurnToken(true, body);
expect(result.txId).toBeDefined();
console.log(result);
});
it('should mint multiple NFT FLOW API signer transaction', async () => {
const body = new model_1.FlowMintMultipleNft();
body.to = ['0x10247089e55180c9'];
body.contractAddress = '2d103773-50e2-4a37-ac3d-61bc6af8faee';
body.url = ['url'];
body.account = '0x10247089e55180c9';
body.privateKey = '3881849dd540a0c80383c3727951d35e3e9e8c238ec82a581726c3fc2ca17bc4';
body.chain = model_1.Currency.FLOW;
const result = await flow_1.sendFlowNftMintMultipleToken(true, body);
expect(result.txId).toBeDefined();
console.log(result);
});
it('should send FLOW custom transaction', async () => {
const body = new model_1.TransferFlowCustomTx();
body.transaction = dedent_js_1.default `transaction() {
prepare(signer: AuthAccount) {
signer.addPublicKey("f845b840181369ec8500ddc70252c0825fba8c2914cf9f778ed67fa103ebf7f665ffb37476ccbe17ecf4115de2710aca493be06c5f592a6686805be78d55640c4ec555b6030380".decodeHex())
}}`;
body.args = [];
body.account = '0x955cd3f17b2fd8ad';
body.privateKey = '37afa218d41d9cd6a2c6f2b96d9eaa3ad96c598252bc50e4d45d62f9356a51f8';
const result = await flow_1.flowSendCustomTransaction(true, body);
console.log(result);
expect(result.txId).toBeDefined();
});
it('should get NFT token by address', async () => {
const result = await flow_1.getFlowNftTokenByAddress(true, '0x2d0d7b39db4e3a08', '27320939-3087-490e-a65e-a53c8b06fcd9');
expect(result).toBeDefined();
});
it('should get NFT token metadata', async () => {
const result = await flow_1.getFlowNftMetadata(true, '0x2d0d7b39db4e3a08', '8', '27320939-3087-490e-a65e-a53c8b06fcd9');
expect(result).toBeDefined();
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2Zsb3cuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBEQUErQjtBQUMvQixvQ0FBc0k7QUFDdEksaUNBV2dCO0FBQ2hCLDhDQUErQztBQUUvQyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUV4QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhCLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLHFDQUE4QixDQUFDLElBQUksRUFBRSxrSUFBa0ksRUFBRSxvQkFBb0IsRUFBRSxrRUFBa0UsQ0FBQyxDQUFDO1FBQ3hSLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0NBQXlCLENBQUMsSUFBSSxFQUFFLGtJQUFrSSxFQUFFLG9CQUFvQixFQUFFLGtFQUFrRSxDQUFDLENBQUM7UUFDblIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEJB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