@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
148 lines • 14.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const model_1 = require("../model");
const bitcoin_1 = require("./bitcoin");
const TransferBtcLtcBlockchain_1 = require("../model/request/TransferBtcLtcBlockchain");
describe('BTC transactions', () => {
describe('Change address and fee support', () => {
it('Should prepare tx with change address and fee', async () => {
process.env.TATUM_API_KEY = '8a66adad-9e68-4f5b-a9b9-8efd971a14d3';
const body = new TransferBtcLtcBlockchain_1.TransferBtcLtcBlockchain();
body.fromAddress = [{
address: 'tb1q38rca7ju5870r0s9hgcdnae66ls8hswg4t47fq',
privateKey: 'cNuevgLtdHpChaGmqyG3HkqEAVEX2faL9HNw1e6hs1Jh6Q3Tv38i',
}];
body.to = [{
address: 'tb1q0wlck27y5zvl0yxd9ene4kaktqxe923xyylt07',
value: 0.001
}];
body.fee = '0.004';
body.changeAddress = 'tb1q38rca7ju5870r0s9hgcdnae66ls8hswg4t47fq';
const txData = await bitcoin_1.prepareBitcoinSignedTransaction(true, body);
expect(txData).toBe('02000000000102b8b1f896e62b9d932382857e7b4d31c0b5873f11dd42de7345456e1581dc87730000000000ffffffff1363f6ac0c648c4eb28c41556335f3de7a9627573c1b6b076d7ff4fcfe516c870000000000ffffffff02a0860100000000001600147bbf8b2bc4a099f790cd2e679adbb6580d92aa26422300000000000016001489c78efa5ca1fcf1be05ba30d9f73ad7e07bc1c80247304402203bc050bfdbac4ccbd1c181ce3d3bb30f6cac71cef9a67337808e9d6673036f560220763e37a248bbc910d32c7b5ab2d116fca13d07eafdbc22e00ceb44543c8b2553012103ca94c2a396faa0c6940bd156516857b74f7378677518880d80c6ca9998d3e21b0247304402201af7ae35aada207eb75c2638d8e4d40db47c5fed69884b94698aecfb8c15094b022027166a491461f427987f062933a40178708855b9abd19245e43e989ba774e3e1012103ca94c2a396faa0c6940bd156516857b74f7378677518880d80c6ca9998d3e21b00000000');
});
it('fail - only changeAddress', async () => {
process.env.TATUM_API_KEY = '8a66adad-9e68-4f5b-a9b9-8efd971a14d3';
try {
const body = new TransferBtcLtcBlockchain_1.TransferBtcLtcBlockchain();
body.fromAddress = [{
address: 'tb1q38rca7ju5870r0s9hgcdnae66ls8hswg4t47fq',
privateKey: 'cNuevgLtdHpChaGmqyG3HkqEAVEX2faL9HNw1e6hs1Jh6Q3Tv38i',
}];
body.to = [{
address: 'tb1q0wlck27y5zvl0yxd9ene4kaktqxe923xyylt07',
value: 0.001
}];
body.changeAddress = 'tb1q38rca7ju5870r0s9hgcdnae66ls8hswg4t47fq';
await bitcoin_1.prepareBitcoinSignedTransaction(true, body);
fail('Validation did not pass.');
}
catch (e) {
console.log(e);
}
});
it('fail - only fee', async () => {
process.env.TATUM_API_KEY = '8a66adad-9e68-4f5b-a9b9-8efd971a14d3';
try {
const body = new TransferBtcLtcBlockchain_1.TransferBtcLtcBlockchain();
body.fromAddress = [{
address: 'tb1q38rca7ju5870r0s9hgcdnae66ls8hswg4t47fq',
privateKey: 'cNuevgLtdHpChaGmqyG3HkqEAVEX2faL9HNw1e6hs1Jh6Q3Tv38i',
}];
body.to = [{
address: 'tb1q0wlck27y5zvl0yxd9ene4kaktqxe923xyylt07',
value: 0.001
}];
body.fee = '0.004';
await bitcoin_1.prepareBitcoinSignedTransaction(true, body);
fail('Validation did not pass.');
}
catch (e) {
console.log(e);
}
});
it('Should generate the same output for changeaddress/fee and to clause', async () => {
process.env.TATUM_API_KEY = '8a66adad-9e68-4f5b-a9b9-8efd971a14d3';
const bodyWithChangeAddressFee = new TransferBtcLtcBlockchain_1.TransferBtcLtcBlockchain();
bodyWithChangeAddressFee.fromAddress = [{
address: 'tb1q38rca7ju5870r0s9hgcdnae66ls8hswg4t47fq',
privateKey: 'cNuevgLtdHpChaGmqyG3HkqEAVEX2faL9HNw1e6hs1Jh6Q3Tv38i',
}];
bodyWithChangeAddressFee.to = [{
address: 'tb1q0wlck27y5zvl0yxd9ene4kaktqxe923xyylt07',
value: 0.001
}];
bodyWithChangeAddressFee.fee = '0.004';
bodyWithChangeAddressFee.changeAddress = 'tb1q38rca7ju5870r0s9hgcdnae66ls8hswg4t47fq';
const txDataChangeAddressFee = await bitcoin_1.prepareBitcoinSignedTransaction(true, bodyWithChangeAddressFee);
const bodyWithTo = new model_1.TransferBtcBasedBlockchain();
bodyWithTo.fromAddress = [{
address: 'tb1q38rca7ju5870r0s9hgcdnae66ls8hswg4t47fq',
privateKey: 'cNuevgLtdHpChaGmqyG3HkqEAVEX2faL9HNw1e6hs1Jh6Q3Tv38i',
}];
bodyWithTo.to = [{
address: 'tb1q0wlck27y5zvl0yxd9ene4kaktqxe923xyylt07',
value: 0.001
}, {
address: 'tb1q38rca7ju5870r0s9hgcdnae66ls8hswg4t47fq',
value: 0.00009026
}];
const txDataToClause = await bitcoin_1.prepareBitcoinSignedTransaction(true, bodyWithTo);
expect(txDataToClause).toBe(txDataChangeAddressFee);
});
});
it('should test BTC transaction data', async () => {
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TransferBtcBasedBlockchain();
body.fromUTXO = [{
txHash: 'fcdc23f5c8bd811195921cd113f5724f3cf8b3fa0287a04366c51b9e8545c4c7',
index: 0,
privateKey: 'cQ1YZMep3CiAnMTA9y62ha6BjGaaTFsTvtDuGmucGvpAVmS89khV',
}];
body.to = [{
address: 'tb1q9x2gqftyxterwt0k6ehzrm2gkzthjly677ucyr',
value: 0.00015,
}];
const txData = await bitcoin_1.prepareBitcoinSignedTransaction(true, body);
expect(txData).toBe('02000000000101c7c445859e1bc56643a08702fab3f83c4f72f513d11c92951181bdc8f523dcfc0000000000ffffffff01983a000000000000160014299480256432f2372df6d66e21ed48b097797c9a024830450221008d43043b7e5ddc8eba5148b6540022deaa8628461fe08f6e48e596766a6c4b30022015270982a1a10fdc1454c1cd569f7a3eb9dac72b9598cebe74e3ba1c8af4e7dc012102473ddfe2afe40c68b68ecb81036003df920503668188b744b7c72046a97000bb00000000');
});
it('should test BTC send transaction', async () => {
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TransferBtcBasedBlockchain();
body.fromUTXO = [{
txHash: '3eb96bf6a4f4dedf50cce45ec7ad0c15529d745cb4733d0c40d6806e53245a62',
index: 1,
privateKey: 'cQKbSL8fL4BrSkK48ojNqGJXeRU6sXjUirqpWzPNrWaFdEcErhjj',
}];
body.to = [{
address: 'tb1q9x2gqftyxterwt0k6ehzrm2gkzthjly677ucyr',
value: 0.00015,
}];
const txData = await bitcoin_1.sendBitcoinTransaction(true, body);
expect(txData).toHaveProperty('txId');
});
it('should not test BTC transaction data, fromAddress and fromUTXO present at the same time', async () => {
const body = new model_1.TransferBtcBasedBlockchain();
body.fromUTXO = [{
txHash: '53faa103e8217e1520f5149a4e8c84aeb58e55bdab11164a95e69a8ca50f8fcc',
index: 0,
privateKey: 'cVX7YtgL5muLTPncHFhP95oitV1mqUUA5VeSn8HeCRJbPqipzobf',
}];
body.fromAddress = [{
address: '2MzNGwuKvMEvKMQogtgzSqJcH2UW3Tc5oc7',
privateKey: 'cVX7YtgL5muLTPncHFhP95oitV1mqUUA5VeSn8HeCRJbPqipzobf',
}];
body.to = [{
address: '2MzNGwuKvMEvKMQogtgzSqJcH2UW3Tc5oc7',
value: 0.02969944,
}];
try {
await bitcoin_1.prepareBitcoinSignedTransaction(true, body);
fail('Validation did not pass.');
}
catch (e) {
console.error(e);
}
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Y29pbi5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2JpdGNvaW4uc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG9DQUFxRDtBQUNyRCx1Q0FBbUY7QUFDbkYsd0ZBQW1GO0FBRW5GLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7SUFDaEMsUUFBUSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRTtRQUM5QyxFQUFFLENBQUMsK0NBQStDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDN0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsc0NBQXNDLENBQUE7WUFDbEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxtREFBd0IsRUFBRSxDQUFBO1lBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLDRDQUE0QztvQkFDckQsVUFBVSxFQUFFLHNEQUFzRDtpQkFDbkUsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDO29CQUNULE9BQU8sRUFBRSw0Q0FBNEM7b0JBQ3JELEtBQUssRUFBRSxLQUFLO2lCQUNiLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFBO1lBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsNENBQTRDLENBQUE7WUFDakUsTUFBTSxNQUFNLEdBQUcsTUFBTSx5Q0FBK0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxzdUJBQXN1QixDQUFDLENBQUE7UUFDN3ZCLENBQUMsQ0FBQyxDQUFBO1FBRUYsRUFBRSxDQUFDLDJCQUEyQixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLHNDQUFzQyxDQUFBO1lBQ2xFLElBQUk7Z0JBQ0YsTUFBTSxJ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