wallet-storage
Version:
BRC100 conforming wallet, wallet storage and wallet signer components
120 lines • 5.63 kB
JavaScript
"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