Files
prowler/ui/actions/task/task.adapter.test.ts
2026-05-28 19:20:39 +02:00

92 lines
2.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { getScanErrorDetails } from "./task.adapter";
describe("getScanErrorDetails", () => {
it("returns null when response is not a record", () => {
expect(getScanErrorDetails(null)).toBeNull();
expect(getScanErrorDetails("oops")).toBeNull();
expect(getScanErrorDetails(undefined)).toBeNull();
});
it("returns null when data is missing", () => {
expect(getScanErrorDetails({})).toBeNull();
});
it("returns null when attributes.result is missing", () => {
expect(getScanErrorDetails({ data: { attributes: {} } })).toBeNull();
});
it("returns null when result has no recognizable fields", () => {
expect(
getScanErrorDetails({ data: { attributes: { result: {} } } }),
).toBeNull();
});
it("parses an error with only an exc_type", () => {
const details = getScanErrorDetails({
data: { attributes: { result: { exc_type: "BotoCoreError" } } },
});
expect(details).toEqual({
type: "BotoCoreError",
messages: ["-"],
module: undefined,
copyValue: "ErrorType: BotoCoreError\nError: -",
});
});
it("joins multiple exc_message entries in copyValue", () => {
const details = getScanErrorDetails({
data: {
attributes: {
result: {
exc_type: "ScanError",
exc_message: ["Failed to connect", "Retry exhausted"],
exc_module: "scan.runner",
},
},
},
});
expect(details).toEqual({
type: "ScanError",
messages: ["Failed to connect", "Retry exhausted"],
module: "scan.runner",
copyValue:
"ErrorType: ScanError\nError: Failed to connect\nRetry exhausted",
});
});
it("filters non-string entries out of exc_message", () => {
const details = getScanErrorDetails({
data: {
attributes: {
result: {
exc_type: "ScanError",
exc_message: ["valid", 42, null, " ", " trimmed "],
},
},
},
});
expect(details?.messages).toEqual(["valid", "trimmed"]);
});
it("returns null when only whitespace fields are present", () => {
const details = getScanErrorDetails({
data: {
attributes: {
result: {
exc_type: " ",
exc_message: [""],
exc_module: "",
},
},
},
});
expect(details).toBeNull();
});
});