From cf7539d3d3659ea3ac2982450137a072d1d18c3f Mon Sep 17 00:00:00 2001 From: Jadonamite Date: Sun, 29 Mar 2026 14:41:14 +0100 Subject: [PATCH] test: implement proper webusb transport mock for ledger connection failure Updates the LedgerWalletProvider test suite to actively mock TransportWebUSB.create. Replaces the structural .toBeDefined() check with a proper asynchronous rejection assertion to ensure hardware wallet connection failures are caught correctly. --- tests/LedgerWalletProvider.test.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/tests/LedgerWalletProvider.test.js b/tests/LedgerWalletProvider.test.js index de4fbde8..05360950 100644 --- a/tests/LedgerWalletProvider.test.js +++ b/tests/LedgerWalletProvider.test.js @@ -1,11 +1,19 @@ // tests/LedgerWalletProvider.test.js const { LedgerWalletProvider } = require('../src/services/wallet/LedgerWalletProvider'); +// Mock the webusb transport layer so we can control its behavior in the tests +jest.mock('@ledgerhq/hw-transport-webusb', () => ({ + create: jest.fn(), +})); +const TransportWebUSB = require('@ledgerhq/hw-transport-webusb'); + describe('LedgerWalletProvider', () => { let provider; beforeEach(() => { provider = new LedgerWalletProvider(); + // Clear mock history between tests to prevent data leakage + jest.clearAllMocks(); }); test('should have correct id and name', () => { @@ -14,14 +22,10 @@ describe('LedgerWalletProvider', () => { }); test('connect should throw error if device not found', async () => { - // Mock TransportWebUSB.create to throw - const mockTransport = { - create: jest.fn().mockRejectedValue(new Error('No device selected')), - }; - // Assume we can mock it - // For now, just test structure - expect(provider.connect).toBeDefined(); - }); + // Actively mock the transport to throw the error your comment specified + TransportWebUSB.create.mockRejectedValue(new Error('No device selected')); - // Add more tests as needed -}); \ No newline at end of file + // Assert that the provider bubbles up the correct error when connect is called + await expect(provider.connect()).rejects.toThrow('No device selected'); + }); +});