real-debrid-downloader/tests/startup-health-check.test.ts
Sucukdeluxe 3ed3877ac9 chore: remove all source code comments and internal artifacts
Strip every comment from the source (parsed with the TypeScript compiler so
strings, template literals, regex literals and JSX are never touched), and drop
internal/working artifacts that do not belong in the public repository
(design mockups, internal analysis docs, a stray backup file and an old log).
No functional change: build is green, the full test suite passes.
2026-06-06 04:53:54 +02:00

135 lines
4.4 KiB
TypeScript

import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { afterEach, describe, expect, it } from "vitest";
import { defaultSettings } from "../src/main/constants";
import { createStoragePaths } from "../src/main/storage";
import { runStartupHealthCheck } from "../src/main/startup-health-check";
const tempDirs: string[] = [];
afterEach(() => {
for (const dir of tempDirs.splice(0)) {
try {
fs.rmSync(dir, { recursive: true, force: true });
} catch {
}
}
});
function makeTempBase(): { baseDir: string; outputDir: string; paths: ReturnType<typeof createStoragePaths> } {
const baseDir = fs.mkdtempSync(path.join(os.tmpdir(), "rd-health-"));
tempDirs.push(baseDir);
const outputDir = path.join(baseDir, "downloads");
fs.mkdirSync(outputDir, { recursive: true });
return {
baseDir: path.join(baseDir, "runtime"),
outputDir,
paths: createStoragePaths(path.join(baseDir, "runtime"))
};
}
describe("runStartupHealthCheck", () => {
it("flags missing download directory", () => {
const { outputDir, paths } = makeTempBase();
fs.mkdirSync(paths.baseDir, { recursive: true });
const settings = {
...defaultSettings(),
token: "rd-token",
outputDir: path.join(outputDir, "does-not-exist-subdir")
};
const report = runStartupHealthCheck(settings, paths);
const codes = report.findings.map((f) => f.code);
expect(codes).toContain("outputDir_not_found");
});
it("flags no-provider-configured when all credentials are empty", () => {
const { outputDir, paths } = makeTempBase();
fs.mkdirSync(paths.baseDir, { recursive: true });
const settings = {
...defaultSettings(),
token: "",
megaLogin: "",
megaPassword: "",
megaCredentials: "",
allDebridToken: "",
bestToken: "",
oneFichierApiKey: "",
debridLinkApiKeys: "",
outputDir
};
const report = runStartupHealthCheck(settings, paths);
const codes = report.findings.map((f) => f.code);
expect(codes).toContain("no_provider_configured");
expect(report.warnCount).toBeGreaterThanOrEqual(1);
});
it("reports configured providers when at least one credential is set", () => {
const { outputDir, paths } = makeTempBase();
fs.mkdirSync(paths.baseDir, { recursive: true });
const settings = {
...defaultSettings(),
token: "rd-token-here",
debridLinkApiKeys: "dl-key-a\ndl-key-b",
outputDir
};
const report = runStartupHealthCheck(settings, paths);
const providersFinding = report.findings.find((f) => f.code === "providers_configured");
expect(providersFinding).toBeDefined();
expect(providersFinding?.message).toContain("Real-Debrid");
expect(providersFinding?.message).toContain("Debrid-Link");
expect(providersFinding?.message).toContain("2 Keys");
});
it("flags large state files", () => {
const { outputDir, paths } = makeTempBase();
fs.mkdirSync(paths.baseDir, { recursive: true });
fs.writeFileSync(paths.sessionFile, Buffer.alloc(60 * 1024 * 1024, 0));
const settings = {
...defaultSettings(),
token: "rd-token",
outputDir
};
const report = runStartupHealthCheck(settings, paths);
const codes = report.findings.map((f) => f.code);
expect(codes).toContain("large_state_file");
});
it("flags missing base dir as ERROR", () => {
const { outputDir, paths } = makeTempBase();
const settings = {
...defaultSettings(),
token: "rd-token",
outputDir
};
const report = runStartupHealthCheck(settings, paths);
const codes = report.findings.map((f) => f.code);
expect(codes).toContain("baseDir_missing");
expect(report.errorCount).toBeGreaterThanOrEqual(1);
});
it("passes cleanly when everything is healthy", () => {
const { outputDir, paths } = makeTempBase();
fs.mkdirSync(paths.baseDir, { recursive: true });
const settings = {
...defaultSettings(),
token: "rd-token-here",
outputDir
};
const report = runStartupHealthCheck(settings, paths);
expect(report.errorCount).toBe(0);
const codes = report.findings.map((f) => f.code);
expect(codes).not.toContain("outputDir_not_found");
expect(codes).not.toContain("outputDir_not_writable");
expect(codes).not.toContain("no_provider_configured");
expect(codes).not.toContain("baseDir_missing");
expect(codes).not.toContain("baseDir_not_writable");
});
});