49 lines
2.3 KiB
TypeScript
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");
|
|
});
|
|
});
|