mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-03 15:33:40 +00:00
87 lines
2.4 KiB
TypeScript
87 lines
2.4 KiB
TypeScript
import eimsConfigFactory from "./eims.config";
|
|
|
|
const REQUIRED = {
|
|
EIMS_ENABLED: "true",
|
|
EIMS_CLIENT_ID: "cid",
|
|
EIMS_CLIENT_SECRET: "secret",
|
|
EIMS_API_KEY: "apikey",
|
|
EIMS_TIN: "0000000000",
|
|
};
|
|
|
|
const withEnv = (vars: Record<string, string | undefined>, fn: () => void) => {
|
|
const prior: Record<string, string | undefined> = {};
|
|
for (const [key, value] of Object.entries(vars)) {
|
|
prior[key] = process.env[key];
|
|
if (value === undefined) delete process.env[key];
|
|
else process.env[key] = value;
|
|
}
|
|
try {
|
|
fn();
|
|
} finally {
|
|
for (const [key, value] of Object.entries(prior)) {
|
|
if (value === undefined) delete process.env[key];
|
|
else process.env[key] = value;
|
|
}
|
|
}
|
|
};
|
|
|
|
describe("eims.config — private key / certificate resolution", () => {
|
|
it("requires EIMS_API_KEY when EIMS is enabled without exposing a value", () => {
|
|
withEnv(
|
|
{
|
|
...REQUIRED,
|
|
EIMS_API_KEY: undefined,
|
|
EIMS_PRIVATE_KEY: "private-key-present",
|
|
EIMS_CERTIFICATE: "certificate-present",
|
|
},
|
|
() => {
|
|
expect(() => eimsConfigFactory()).toThrow(/env vars are missing: EIMS_API_KEY/);
|
|
},
|
|
);
|
|
});
|
|
|
|
it("unescapes a literal \\n when the PEM was pasted without real newlines", () => {
|
|
withEnv(
|
|
{ ...REQUIRED, EIMS_PRIVATE_KEY: "line1\\nline2", EIMS_CERTIFICATE_PATH: "/dev/null" },
|
|
() => {
|
|
expect(eimsConfigFactory().privateKeyPem).toBe("line1\nline2");
|
|
},
|
|
);
|
|
});
|
|
|
|
it("leaves a PEM with real newlines untouched", () => {
|
|
withEnv(
|
|
{ ...REQUIRED, EIMS_PRIVATE_KEY: "line1\nline2", EIMS_CERTIFICATE_PATH: "/dev/null" },
|
|
() => {
|
|
expect(eimsConfigFactory().privateKeyPem).toBe("line1\nline2");
|
|
},
|
|
);
|
|
});
|
|
|
|
it("throws naming all three key/cert options when none are set", () => {
|
|
withEnv(
|
|
{
|
|
...REQUIRED,
|
|
EIMS_PRIVATE_KEY_PATH: undefined,
|
|
EIMS_PRIVATE_KEY_BASE64: undefined,
|
|
EIMS_PRIVATE_KEY: undefined,
|
|
EIMS_CERTIFICATE_PATH: "/dev/null",
|
|
},
|
|
() => {
|
|
expect(() => eimsConfigFactory()).toThrow(
|
|
/EIMS_PRIVATE_KEY_PATH or EIMS_PRIVATE_KEY_BASE64 or EIMS_PRIVATE_KEY/,
|
|
);
|
|
},
|
|
);
|
|
});
|
|
|
|
it("is satisfied by any single one of the three key options", () => {
|
|
withEnv(
|
|
{ ...REQUIRED, EIMS_PRIVATE_KEY: "x", EIMS_CERTIFICATE_PATH: "/dev/null" },
|
|
() => {
|
|
expect(() => eimsConfigFactory()).not.toThrow();
|
|
},
|
|
);
|
|
});
|
|
});
|