UNPKG

@bsv/wallet-toolbox

Version:

BRC100 conforming wallet, wallet storage and wallet signer components

108 lines 5.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const blockHeaderUtilities_1 = require("../../util/blockHeaderUtilities"); const ChaintracksFetch_1 = require("../../util/ChaintracksFetch"); const WhatsOnChainServices_1 = require("../WhatsOnChainServices"); const WhatsOnChainIngestorWs_1 = require("../WhatsOnChainIngestorWs"); const HeightRange_1 = require("../../util/HeightRange"); describe('WhatsOnChainServices tests', () => { jest.setTimeout(999999999); const chain = 'main'; const options = WhatsOnChainServices_1.WhatsOnChainServices.createWhatsOnChainServicesOptions(chain); const woc = new WhatsOnChainServices_1.WhatsOnChainServices(options); let logSpy, capturedLogs = []; beforeAll(async () => { logSpy = jest.spyOn(console, 'log').mockImplementation((...args) => { capturedLogs.push(args.map(String).join(' ')); }); }); test('getHeaderByHash', async () => { const header = await woc.getHeaderByHash('000000000000000001b3e99847d57ff3e0bfc4222cea5c29f10bf24387a250a2'); expect((header === null || header === void 0 ? void 0 : header.height) === 781348).toBe(true); }); test('getChainTipHeight', async () => { const height = await woc.getChainTipHeight(); expect(height > 600000).toBe(true); }); const stopOldListenersToken = { stop: undefined }; function stopOldListener() { var _a; (_a = stopOldListenersToken.stop) === null || _a === void 0 ? void 0 : _a.call(stopOldListenersToken); } test.skip('0 listenForOldBlockHeaders', async () => { // The service this depends on appears to be deprecated... const height = await woc.getChainTipHeight(); expect(height > 600000).toBe(true); const headersOld = []; const errorsOld = []; const okOld = await (0, WhatsOnChainIngestorWs_1.WocHeadersBulkListener)(height - 4, height, h => headersOld.push(h), (code, message) => { errorsOld.push({ code, message }); return true; }, stopOldListenersToken, chain); expect(okOld).toBe(true); expect(errorsOld.length).toBe(0); expect(headersOld.length >= 4).toBe(true); }); const stopNewListenersToken = { stop: undefined }; test.skip('1 listenForNewBlockHeaders', async () => { // The service this depends on appears to be deprecated... const height = await woc.getChainTipHeight(); expect(height > 600000).toBe(true); // Comment out this line to just wait for next new header... //setTimeout(() => woc.stopNewListener(), 5000) const headersNew = []; const errorsNew = []; const eh = h => { var _a; headersNew.push(h); if (headersNew.length >= 1) (_a = stopNewListenersToken.stop) === null || _a === void 0 ? void 0 : _a.call(stopNewListenersToken); }; const errh = (code, message) => { errorsNew.push({ code, message }); return true; }; const okNew = await (0, WhatsOnChainIngestorWs_1.WocHeadersLiveListener)(eh, errh, stopNewListenersToken, chain, console.log.bind(console)); if (errorsNew.length > 0) console.log(JSON.stringify(errorsNew)); expect(errorsNew.length).toBe(0); expect(okNew).toBe(true); expect(headersNew.length >= 0).toBe(true); }); test('2 get latest header bytes', async () => { const fetch = new ChaintracksFetch_1.ChaintracksFetch(); //for (;;) { const bytes = await fetch.download(`https://api.whatsonchain.com/v1/bsv/main/block/headers/latest`); console.log(`headers: ${bytes.length / 80}`); const latest = await fetch.download(`https://api.whatsonchain.com/v1/bsv/main/block/headers/latest?count=1`); const bh = (0, blockHeaderUtilities_1.deserializeBlockHeader)(latest, 0, 0); console.log(`latest hash: ${bh.hash} at ${new Date().toISOString()}`); // await wait(60 * 1000) //} }); test('3 get headers', async () => { const fetch = new ChaintracksFetch_1.ChaintracksFetch(); //for (;;) { const headers = await fetch.fetchJson(`https://api.whatsonchain.com/v1/bsv/main/block/headers`); let log = ''; for (const h of headers) { log += `${h.height} ${h.hash} ${h.confirmations} ${h.nTx}\n`; } console.log(`${new Date().toISOString()}\n${log}`); //await wait(60 * 1000) //} }); test('4 get header byte file links', async () => { const fetch = new ChaintracksFetch_1.ChaintracksFetch(); const woc = new WhatsOnChainServices_1.WhatsOnChainServices(WhatsOnChainServices_1.WhatsOnChainServices.createWhatsOnChainServicesOptions('main')); const files = await woc.getHeaderByteFileLinks(new HeightRange_1.HeightRange(907123, 911000)); expect(files.length).toBe(3); expect(files[0].range.minHeight).toBe(906001); expect(files[0].range.maxHeight).toBe(908000); expect(files[1].range.minHeight).toBe(908001); expect(files[1].range.maxHeight).toBe(910000); expect(files[2].range.minHeight).toBe(910001); expect(files[2].range.maxHeight).toBeGreaterThan(910001); }); }); //# sourceMappingURL=WhatsOnChainServices.man.test.js.map