UNPKG

simple-nano-wallet

Version:

Benskalz' simple-nano-wallet rewritten in TypeScript with some additional features.

54 lines (44 loc) 1.6 kB
import { RPC } from '../src/rpc'; describe('RPC Client', () => { const originalFetch = global.fetch; const mockFetch = jest.fn(); beforeEach(() => { global.fetch = mockFetch; mockFetch.mockReset(); }); afterAll(() => { global.fetch = originalFetch; }); it('should try next URL on failure', async () => { const rpc = new RPC( ['http://fail1.com', 'https://rpc.nano.to/'], ['http://work1.com', 'https://rpc.nano.to/'], {} ); mockFetch .mockRejectedValueOnce(new Error('Server down')) .mockResolvedValueOnce({ ok: true, json: () => Promise.resolve({ success: true }) }); const result = await rpc.account_info('nano_34aywqqfop7fcdy9a8xsxsysa68peb3dhmcnicegzbapwtnj63dq5t7groun'); expect(result).toEqual({ success: true }); expect(mockFetch).toHaveBeenCalledTimes(2); }); it('should throw after all URLs fail', async () => { const rpc = new RPC(['http://fail1.com'], ['http://work1.com'], {}); mockFetch.mockRejectedValue(new Error('Server down')); await expect(rpc.account_info('nano_34aywqqfop7fcdy9a8xsxsysa68peb3dhmcnicegzbapwtnj63dq5t7groun')) .rejects .toThrow('All RPC servers failed'); }); it('should handle work generation', async () => { const rpc = new RPC([], ['https://rpc.nano.to'], {}); mockFetch.mockResolvedValue({ ok: true, json: () => Promise.resolve({ work: '123ABC' }) }); const work = await rpc.work_generate('ABCDEF'); expect(work).toBe('123ABC'); }); });