mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-04 19:21:51 +00:00
92 lines
2.4 KiB
TypeScript
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();
|
|
});
|
|
});
|