test: harden secret file helper coverage

This commit is contained in:
Peter Steinberger 2026-03-13 18:54:43 +00:00
parent d4d7174773
commit 3e9243817e
1 changed files with 34 additions and 0 deletions

View File

@ -4,6 +4,7 @@ import { afterEach, describe, expect, it } from "vitest";
import { createTrackedTempDirs } from "../test-utils/tracked-temp-dirs.js";
import {
DEFAULT_SECRET_FILE_MAX_BYTES,
loadSecretFileSync,
readSecretFileSync,
tryReadSecretFileSync,
} from "./secret-file.js";
@ -16,6 +17,12 @@ afterEach(async () => {
});
describe("readSecretFileSync", () => {
it("rejects blank file paths", () => {
expect(() => readSecretFileSync(" ", "Gateway password")).toThrow(
"Gateway password file path is empty.",
);
});
it("reads and trims a regular secret file", async () => {
const dir = await createTempDir();
const file = path.join(dir, "secret.txt");
@ -56,6 +63,28 @@ describe("readSecretFileSync", () => {
);
});
it("rejects empty secret files after trimming", async () => {
const dir = await createTempDir();
const file = path.join(dir, "secret.txt");
await writeFile(file, " \n\t ", "utf8");
expect(() => readSecretFileSync(file, "Gateway password")).toThrow(
`Gateway password file at ${file} is empty.`,
);
});
it("exposes resolvedPath on non-throwing read failures", async () => {
const dir = await createTempDir();
const file = path.join(dir, "secret.txt");
await writeFile(file, " \n\t ", "utf8");
expect(loadSecretFileSync(file, "Gateway password")).toMatchObject({
ok: false,
resolvedPath: file,
message: `Gateway password file at ${file} is empty.`,
});
});
it("returns undefined from the non-throwing helper for rejected files", async () => {
const dir = await createTempDir();
const target = path.join(dir, "target.txt");
@ -67,4 +96,9 @@ describe("readSecretFileSync", () => {
undefined,
);
});
it("returns undefined from the non-throwing helper for blank file paths", () => {
expect(tryReadSecretFileSync(" ", "Telegram bot token")).toBeUndefined();
expect(tryReadSecretFileSync(undefined, "Telegram bot token")).toBeUndefined();
});
});