@tatumio/utxo-wallet-provider
Version:
UTXO provider with local wallet operations
114 lines • 5.31 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tatum_1 = require("@tatumio/tatum");
const extension_1 = require("./extension");
describe('UtxoWalletProvider', () => {
let tatumSdk;
beforeEach(async () => {
tatumSdk = await tatum_1.TatumSDK.init({
network: tatum_1.Network.BITCOIN_TESTNET,
configureWalletProviders: [extension_1.UtxoWalletProvider],
verbose: true,
});
});
const path = "m/44'/0'/0'/0";
const mnemonic = 'audit hamster slot gesture brave fork ability agree over tiger bread soap bullet squeeze slide case roof drip seven plunge yard cat ozone custom';
const xpub = 'tpubDE23Kfj1twxmcCYAzuhAtw7se4xVdu9z6R1Psykd5HLyLtNbx4MFSsqi47FRg6PsQQJUrFUNUUViZiPUnmTthvd27idX2rorToRvGar5e9A';
const privateKey = 'cVeQk2DzVp8q5AVz4VS1vTqAGn7BmdB7SjrvtB3HPMFP8rpQeeZn';
const address = 'muNjVhqHUfNzHBrwawaGmjBt9suoMr1YxV';
describe('generateMnemonic', () => {
it('should generate 24 word mnemonic', () => {
const result = tatumSdk.walletProvider.use(extension_1.UtxoWalletProvider).generateMnemonic();
expect(result.split(' ')).toHaveLength(24);
});
});
describe('generateXpub', () => {
it('should generate xpub', async () => {
const result = await tatumSdk.walletProvider.use(extension_1.UtxoWalletProvider).generateXpub();
expect(result.xpub).toBeTruthy();
expect(result.mnemonic).toBeTruthy();
expect(result.derivationPath).toBe(path);
});
});
describe('generateXpub', () => {
it('should generate xpub from mnemonic', async () => {
const result = await tatumSdk.walletProvider.use(extension_1.UtxoWalletProvider).generateXpub(mnemonic);
expect(result.xpub).toBe(xpub);
expect(result.mnemonic).toBe(mnemonic);
expect(result.derivationPath).toBe(path);
});
});
describe('generatePrivateKeyFromMnemonic', () => {
it('should generate private key', async () => {
const result = await tatumSdk.walletProvider
.use(extension_1.UtxoWalletProvider)
.generatePrivateKeyFromMnemonic(mnemonic, 0);
expect(result).toBe(privateKey);
});
});
describe('generateAddressFromMnemonic', () => {
it('should generate address', async () => {
const result = await tatumSdk.walletProvider
.use(extension_1.UtxoWalletProvider)
.generateAddressFromMnemonic(mnemonic, 0);
expect(result).toBe(address);
});
});
describe('generateAddressFromXpub', () => {
it('should generate address from xpub', () => {
const result = tatumSdk.walletProvider.use(extension_1.UtxoWalletProvider).generateAddressFromXpub(xpub, 0);
expect(result).toBe(address);
});
});
describe('generateAddressFromPrivateKey', () => {
it('should generate address from private key', () => {
const result = tatumSdk.walletProvider.use(extension_1.UtxoWalletProvider).generateAddressFromPrivateKey(privateKey);
expect(result).toBe(address);
});
});
describe('getWallet', () => {
it('should generate wallet', async () => {
const wallet = await tatumSdk.walletProvider.use(extension_1.UtxoWalletProvider).getWallet();
expect(wallet.address).toBeTruthy();
expect(wallet.privateKey).toBeTruthy();
expect(wallet.mnemonic).toBeTruthy();
expect(wallet.mnemonic.split(' ')).toHaveLength(24);
});
});
describe('signAndBroadcast', () => {
it('should sign and broadcast transaction from address', async () => {
const txRequest = {
fromAddress: [
{
address: 'tb1qjzjyd3l3vh8an8w4mkr6dwur59lan60367kr04',
privateKey: privateKey,
},
],
to: [{ address: 'tb1q5gtkjxguam0mlvevwxf2q9ldnq8ladenlhn3mw', value: 0.0001 }],
fee: '0.00001',
changeAddress: 'tb1qjzjyd3l3vh8an8w4mkr6dwur59lan60367kr04',
};
const txHash = await tatumSdk.walletProvider.use(extension_1.UtxoWalletProvider).signAndBroadcast(txRequest);
expect(txHash).toBeTruthy();
expect(txHash).toHaveLength(64);
});
});
describe('signAndBroadcast', () => {
it('should sign and broadcast transaction from UTXO', async () => {
const txRequest = {
fromUTXO: [
{
txHash: '9bfddffd79a7af830a4070173b1f93547ee4eae9cdb542b153e2daaea1885f3d',
index: 1,
privateKey: privateKey,
},
],
to: [{ address: 'tb1q5gtkjxguam0mlvevwxf2q9ldnq8ladenlhn3mw', value: 0.004 }],
};
const txHash = await tatumSdk.walletProvider.use(extension_1.UtxoWalletProvider).signAndBroadcast(txRequest);
expect(txHash).toBeTruthy();
expect(txHash).toHaveLength(64);
});
});
});
//# sourceMappingURL=extension.spec.js.map