Files
Multi-Debrid-Downloader/tests/proxy-account-errors.test.ts
T

49 lines
2.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { createProxyOnlyAccountError, resolveProxyOnlyAccountErrorCode } from "../src/main/proxy-account-errors";
const enabledSettings = { proxyDownloadEnabled: true, proxyListPath: "C:\\proxy.txt" };
describe("Proxy-only account errors", () => {
it("distinguishes missing, unreadable, empty and unavailable fixed proxy settings", () => {
expect(resolveProxyOnlyAccountErrorCode(
{ proxyDownloadEnabled: true, proxyListPath: "" },
{ status: "blocked", reason: "proxy_file_unavailable" }
)).toBe("proxy_list_missing");
expect(resolveProxyOnlyAccountErrorCode(
enabledSettings,
{ status: "blocked", reason: "proxy_file_unavailable" }
)).toBe("proxy_list_unreadable");
expect(resolveProxyOnlyAccountErrorCode(
enabledSettings,
{ status: "blocked", reason: "no_valid_proxies" }
)).toBe("proxy_list_empty");
expect(resolveProxyOnlyAccountErrorCode(
enabledSettings,
{ status: "blocked", reason: "proxy_index_unavailable" }
)).toBe("proxy_index_unavailable");
});
it("maps only transport failures from an active fixed proxy", () => {
const active = { status: "active", selectedIndex: 1, proxyCount: 20 } as const;
expect(resolveProxyOnlyAccountErrorCode(enabledSettings, active, "Prüfung fehlgeschlagen: fetch failed"))
.toBe("proxy_unreachable");
expect(resolveProxyOnlyAccountErrorCode(enabledSettings, active, "Prüfung fehlgeschlagen: The operation was aborted due to timeout"))
.toBe("proxy_unreachable");
expect(resolveProxyOnlyAccountErrorCode(enabledSettings, active, "Prüfung fehlgeschlagen (HTTP 407)"))
.toBe("proxy_unreachable");
expect(resolveProxyOnlyAccountErrorCode(enabledSettings, active, "Prüfung fehlgeschlagen (HTTP 503)"))
.toBeNull();
expect(resolveProxyOnlyAccountErrorCode(enabledSettings, active, "Ungültiger API-Token"))
.toBeNull();
});
it("does not classify errors while Proxy-only is disabled", () => {
expect(resolveProxyOnlyAccountErrorCode(
{ proxyDownloadEnabled: false, proxyListPath: "" },
{ status: "disabled" },
"fetch failed"
)).toBeNull();
expect(createProxyOnlyAccountError("proxy_list_missing").message).toBe("proxy_only_account:proxy_list_missing");
});
});