Skip to content

Commit 5ef62de

Browse files
🎨 (dmk) [LIVE-22278]: Add InvalidGetFirmwareMetadataResponseError (#1094)
2 parents 9c9d944 + 5fdf5c9 commit 5ef62de

File tree

6 files changed

+33
-14
lines changed

6 files changed

+33
-14
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@ledgerhq/device-management-kit": minor
3+
---
4+
5+
Add InvalidGetFirmwareMetadataResponseError

‎packages/device-management-kit/src/api/command/Errors.ts‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,14 @@ export class InvalidResponseFormatError implements DmkError {
4444
this.originalError = new Error(message ?? "Invalid response format.");
4545
}
4646
}
47+
48+
export class InvalidGetFirmwareMetadataResponseError implements DmkError {
49+
readonly _tag = "InvalidGetFirmwareMetadataResponseError";
50+
readonly originalError: Error;
51+
52+
constructor(message?: string) {
53+
this.originalError = new Error(
54+
message ?? "Invalid Firmware Metadata response error.",
55+
);
56+
}
57+
}

‎packages/device-management-kit/src/api/command/model/CommandResult.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
22
type InvalidBatteryDataError,
33
type InvalidBatteryStatusTypeError,
4+
type InvalidGetFirmwareMetadataResponseError,
45
type InvalidResponseFormatError,
56
type InvalidStatusWordError,
67
} from "@api/command/Errors";
@@ -25,6 +26,7 @@ export type CommandErrorResult<SpecificErrorCodes = void> = {
2526
| InvalidBatteryStatusTypeError
2627
| InvalidResponseFormatError
2728
| InvalidStatusWordError
29+
| InvalidGetFirmwareMetadataResponseError
2830
| UnknownDeviceExchangeError;
2931
status: CommandResultStatus.Error;
3032
};
@@ -45,6 +47,7 @@ export function CommandResultFactory<Data, SpecificErrorCodes = void>({
4547
| InvalidBatteryStatusTypeError
4648
| InvalidResponseFormatError
4749
| InvalidStatusWordError
50+
| InvalidGetFirmwareMetadataResponseError
4851
| UnknownDeviceExchangeError;
4952
}): CommandResult<Data, SpecificErrorCodes> {
5053
if (error) {

‎packages/device-management-kit/src/api/device-action/task/GetFirmwareMetadataTask.test.ts‎

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { EitherAsync } from "purify-ts";
22

3-
import { InvalidStatusWordError } from "@api/command/Errors";
3+
import {
4+
InvalidGetFirmwareMetadataResponseError,
5+
InvalidStatusWordError,
6+
} from "@api/command/Errors";
47
import { CommandResultFactory } from "@api/command/model/CommandResult";
58
import { type GetOsVersionResponse } from "@api/command/os/GetOsVersionCommand";
69
import { makeDeviceActionInternalApiMock } from "@api/device-action/__test-utils__/makeInternalApi";
@@ -229,7 +232,7 @@ describe("GetFirmwareMetadataTask", () => {
229232
);
230233
});
231234

232-
it("should fail if device version cannot be fetched", async () => {
235+
it("should fail if device version cannot be fetched with InvalidGetFirmwareMetadataResponseError", async () => {
233236
// GIVEN
234237
apiMock.sendCommand.mockResolvedValueOnce(
235238
CommandResultFactory({ data: OS_VERSION }),
@@ -246,14 +249,12 @@ describe("GetFirmwareMetadataTask", () => {
246249
// THEN
247250
expect(result).toStrictEqual(
248251
CommandResultFactory({
249-
error: new InvalidStatusWordError(
250-
"Cannot fetch current firmware metadata",
251-
),
252+
error: new InvalidGetFirmwareMetadataResponseError(),
252253
}),
253254
);
254255
});
255256

256-
it("should fail if firmware version cannot be fetched", async () => {
257+
it("should fail if firmware version cannot be fetched with InvalidGetFirmwareMetadataResponseError", async () => {
257258
// GIVEN
258259
apiMock.sendCommand.mockResolvedValueOnce(
259260
CommandResultFactory({ data: OS_VERSION }),
@@ -270,9 +271,7 @@ describe("GetFirmwareMetadataTask", () => {
270271
// THEN
271272
expect(result).toStrictEqual(
272273
CommandResultFactory({
273-
error: new InvalidStatusWordError(
274-
"Cannot fetch current firmware metadata",
275-
),
274+
error: new InvalidGetFirmwareMetadataResponseError(),
276275
}),
277276
);
278277
});

‎packages/device-management-kit/src/api/device-action/task/GetFirmwareMetadataTask.ts‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { InvalidStatusWordError } from "@api/command/Errors";
1+
import { InvalidGetFirmwareMetadataResponseError } from "@api/command/Errors";
22
import {
33
type CommandResult,
44
CommandResultFactory,
@@ -51,9 +51,7 @@ export class GetFirmwareMetadataTask {
5151
);
5252
if (result.isLeft()) {
5353
return CommandResultFactory({
54-
error: new InvalidStatusWordError(
55-
"Cannot fetch current firmware metadata",
56-
),
54+
error: new InvalidGetFirmwareMetadataResponseError(),
5755
});
5856
}
5957
const { deviceVersion, currentFirmware } = result.unsafeCoerce();

‎packages/device-management-kit/src/api/index.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ export { ApduParser } from "@api/apdu/utils/ApduParser";
66
export * from "@api/apdu/utils/AppBuilderError";
77
export { ByteArrayBuilder } from "@api/apdu/utils/ByteArrayBuilder";
88
export { ByteArrayParser } from "@api/apdu/utils/ByteArrayParser";
9-
export { InvalidStatusWordError } from "@api/command/Errors";
9+
export {
10+
InvalidGetFirmwareMetadataResponseError,
11+
InvalidStatusWordError,
12+
} from "@api/command/Errors";
1013
export {
1114
CommandResultFactory,
1215
CommandResultStatus,

0 commit comments

Comments
 (0)