UNPKG

wallet-storage

Version:

BRC100 conforming wallet, wallet storage and wallet signer components

120 lines 5.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const sdk_1 = require("@bsv/sdk"); const index_client_1 = require("../../src/index.client"); const TestUtilsWalletStorage_1 = require("../utils/TestUtilsWalletStorage"); describe('Wallet services tests', () => { jest.setTimeout(99999999); const ctxs = []; beforeAll(async () => { ctxs.push(await TestUtilsWalletStorage_1._tu.createSQLiteTestSetup1Wallet({ databaseName: 'walletServicesMain', chain: 'main', rootKeyHex: '3'.repeat(64) })); ctxs.push(await TestUtilsWalletStorage_1._tu.createSQLiteTestSetup1Wallet({ databaseName: 'walletServicesTest', chain: 'test', rootKeyHex: '3'.repeat(64) })); }); afterAll(async () => { for (const ctx of ctxs) { await ctx.storage.destroy(); } }); test('0 getUtxoStatus', async () => { for (const { chain, wallet, services } of ctxs) { if (!wallet.services || !services) throw new index_client_1.sdk.WERR_INTERNAL('test requires setup with services'); { const us = await wallet.services.getUtxoStatus('4104eca750b68551fb5aa893acb428b6a7d2d673498fd055cf2a8d402211b9500bdc27936846c2aa45cf82afe2f566b69cd7f7298154b0ffb25fbfa4fef8986191c4ac', 'script'); if (chain === 'main') { expect(us.status).toBe('success'); expect(us.isUtxo).toBe(true); } else { expect(us.status).toBe('success'); expect(us.isUtxo).toBe(false); } } } }); // Underlying WoC service is rate limited test.skip('1 getBsvExchangeRate', async () => { for (const { chain, wallet, services } of ctxs) { if (!wallet.services || !services) throw new index_client_1.sdk.WERR_INTERNAL('test requires setup with services'); { const usdPerBsv = await wallet.services.getBsvExchangeRate(); expect(usdPerBsv).toBeGreaterThan(0); // and really so much more... } } }); test('2 getFiatExchangeRate', async () => { for (const { chain, wallet, services } of ctxs) { if (!wallet.services || !services) throw new index_client_1.sdk.WERR_INTERNAL('test requires setup with services'); { const eurPerUsd = await wallet.services.getFiatExchangeRate('EUR', 'USD'); expect(eurPerUsd).toBeGreaterThan(0); } } }); test('3 getChainTracker', async () => { for (const { chain, wallet, services } of ctxs) { if (!wallet.services || !services) throw new index_client_1.sdk.WERR_INTERNAL('test requires setup with services'); { const chaintracker = await wallet.services.getChainTracker(); const height = await chaintracker.currentHeight(); expect(height).toBeGreaterThan(800000); } } }); test('4 getMerklePath', async () => { var _a; for (const { chain, wallet, services } of ctxs) { if (!wallet.services || !services) throw new index_client_1.sdk.WERR_INTERNAL('test requires setup with services'); { const mp = await wallet.services.getMerklePath('9cce99686bc8621db439b7150dd5b3b269e4b0628fd75160222c417d6f2b95e4'); if (chain === 'main') expect((_a = mp.merklePath) === null || _a === void 0 ? void 0 : _a.blockHeight).toBe(877599); else expect(mp.merklePath).not.toBeTruthy(); } await (0, index_client_1.wait)(3000); } }); test('5 getRawTx', async () => { for (const { chain, wallet, services } of ctxs) { if (!wallet.services || !services) throw new index_client_1.sdk.WERR_INTERNAL('test requires setup with services'); { const rawTx = await wallet.services.getRawTx('9cce99686bc8621db439b7150dd5b3b269e4b0628fd75160222c417d6f2b95e4'); if (chain === 'main') expect(rawTx.rawTx.length).toBe(176); else expect(rawTx.rawTx).not.toBeTruthy(); } } }); test('6 postBeef', async () => { for (const { chain, wallet, services } of ctxs) { if (!wallet.services || !services) throw new index_client_1.sdk.WERR_INTERNAL('test requires setup with services'); { if (chain === 'main') { const txid = '9cce99686bc8621db439b7150dd5b3b269e4b0628fd75160222c417d6f2b95e4'; const rawTx = await wallet.services.getRawTx(txid); const mp = await wallet.services.getMerklePath(txid); const beef = new sdk_1.Beef(); beef.mergeBump(mp.merklePath); beef.mergeRawTx(rawTx.rawTx); // Using postTxs as postBeef is problematic still... const r = await wallet.services.postTxs(beef, [txid]); if (r[0].status === 'error') { console.log(beef.toLogString()); console.log(beef.toHex()); } expect(r[0].txidResults[0].txid).toBe(txid); expect(r[0].status).toBe('success'); } } } }); }); //# sourceMappingURL=Services.test.js.map