import { openTransportReplayer, RecordStore } from "@ledgerhq/hw-transport-mocker"; import getDeviceInfo from "../../hw/getDeviceInfo"; import { getLatestFirmwareForDeviceUseCase } from "../../device/use-cases/getLatestFirmwareForDeviceUseCase"; import { fetchNextFirmware } from "../../hw/installFinalFirmware"; import { firstValueFrom } from "rxjs"; import { DeviceInfo } from "@ledgerhq/types-live"; jest.setTimeout(20000); /* // FIXME not yet there? test("1.2.0", async () => { const deviceInfo = { version: "1.2", mcuVersion: "1.0", majMin: "1.2", providerName: null, targetId: 823132162, isOSU: false, isBootloader: false, managerAllowed: false, pinValidated: false }; const res = await getLatestFirmwareForDeviceUseCase(deviceInfo); expect(res).toMatchObject({ final: {}, osu: {} }); }); */ test("1.3.1", async () => { const deviceInfo: DeviceInfo = { version: "1.3.1", mcuVersion: "1.1", majMin: "1.3", providerName: null, targetId: 823132162, isOSU: false, isBootloader: false, managerAllowed: true, pinValidated: true, seFlags: Buffer.alloc(0), }; const res = await getLatestFirmwareForDeviceUseCase(deviceInfo); expect(res).toMatchObject({ final: {}, osu: {}, }); }); test("1.4.2", async () => { const deviceInfo: DeviceInfo = { version: "1.4.2", isBootloader: false, isOSU: false, managerAllowed: false, mcuVersion: "1.6", pinValidated: true, providerName: null, majMin: "1.4", targetId: 823132163, seFlags: Buffer.alloc(0), }; const res = await getLatestFirmwareForDeviceUseCase(deviceInfo); expect(res).toMatchObject({ final: {}, osu: {}, }); }); /* test("1.5.5", async () => { const deviceInfo = { version: "1.5.5", isBootloader: false, isOSU: false, managerAllowed: false, mcuVersion: "1.7", pinValidated: false, providerName: null, majMin: "1.5", targetId: 823132164 }; const res = await getLatestFirmwareForDeviceUseCase(deviceInfo); expect(res).toMatchObject({ final: {}, osu: {} }); }); */ test("nano x 1.1.6", async () => { const deviceInfo = { version: "1.1.6", mcuVersion: "2.3", majMin: "1.1", isBootloader: false, isOSU: false, managerAllowed: false, pinValidated: true, providerName: null, targetId: 855638020, seFlags: Buffer.alloc(0), }; const res = await getLatestFirmwareForDeviceUseCase(deviceInfo); expect(res).toBe(null); }); // TODO waiting it to be stable /* test("nano x 1.2.4-1", async () => { const deviceInfo = { version: "1.2.4-1", mcuVersion: "2.8", majMin: "1.2", providerName: null, targetId: 855638020, isOSU: false, isBootloader: false, managerAllowed: true, pinValidated: true, }; const res = await getLatestFirmwareForDeviceUseCase(deviceInfo); expect(res).toBe(null); }); */ test("nanoS das", async () => { const deviceInfo: DeviceInfo = { isBootloader: false, isOSU: false, majMin: "1.4", managerAllowed: false, mcuVersion: "1.5", pinValidated: true, providerName: "das", targetId: 823132163, version: "1.4.2-das", seFlags: Buffer.alloc(0), }; const res = await getLatestFirmwareForDeviceUseCase(deviceInfo); expect(res).toBe(null); }); test("OSU 1.4.2", async () => { const t = await openTransportReplayer( RecordStore.fromString(` => b001000000 <= 0105424f4c4f5305312e362e3001029000 => e001000000 <= 3110000309312e342e322d6f7375042000000004312e37002000000000000000000000000000000000000000000000000000000000000000009000 `), ); const deviceInfo = await getDeviceInfo(t); const next = await firstValueFrom(fetchNextFirmware(deviceInfo)); expect(next).toBeDefined(); expect(next.firmware).toBeTruthy(); }); test("OSU 1.5.5", async () => { const t = await openTransportReplayer( RecordStore.fromString(` => b001000000 <= 0105424f4c4f5305312e362e3001029000 => e001000000 <= 3110000409312e352e352d6f7375042400000004312e35002000000000000000000000000000000000000000000000000000000000000000009000 `), ); const deviceInfo = await getDeviceInfo(t); const next = await firstValueFrom(fetchNextFirmware(deviceInfo)); expect(next).toBeDefined(); expect(next.firmware).toBeTruthy(); });