58 lines
2.4 KiB
TypeScript
58 lines
2.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
getRealDebridAccountIds,
|
|
getRealDebridAccounts,
|
|
parseRealDebridApiAccounts,
|
|
serializeRealDebridApiAccounts
|
|
} from "../src/shared/real-debrid-accounts";
|
|
|
|
describe("Real-Debrid account pool", () => {
|
|
it("reads persisted opaque API identities and removes duplicate tokens", () => {
|
|
const raw = serializeRealDebridApiAccounts([
|
|
{ id: "rda_firstOpaque", token: "first-secret-token" },
|
|
{ id: "rda_secondOpaque", token: "second-secret-token" },
|
|
{ id: "rda_duplicateOpaque", token: "first-secret-token" }
|
|
]);
|
|
const accounts = parseRealDebridApiAccounts(raw);
|
|
|
|
expect(accounts).toHaveLength(2);
|
|
expect(accounts.map((entry) => entry.id)).toEqual(["rda_firstOpaque", "rda_secondOpaque"]);
|
|
expect(accounts.map((entry) => entry.token)).toEqual(["first-secret-token", "second-secret-token"]);
|
|
});
|
|
|
|
it("keeps opaque IDs independent from token material", () => {
|
|
const token = "private-real-debrid-token";
|
|
const raw = serializeRealDebridApiAccounts([{ id: "rda_opaqueAccount42", token }]);
|
|
const account = parseRealDebridApiAccounts(raw)[0];
|
|
|
|
expect(account.id).toBe("rda_opaqueAccount42");
|
|
expect(account.id).not.toContain(token);
|
|
expect(account.label).not.toContain(token);
|
|
expect(account.maskedLogin).not.toContain(token);
|
|
});
|
|
|
|
it("serializes the versioned pool idempotently", () => {
|
|
const serialized = serializeRealDebridApiAccounts([
|
|
{ id: "rda_firstOpaque", token: " first-secret-token " },
|
|
{ id: "rda_secondOpaque", token: "second-secret-token" }
|
|
]);
|
|
|
|
expect(serializeRealDebridApiAccounts(parseRealDebridApiAccounts(serialized))).toBe(serialized);
|
|
});
|
|
|
|
it("combines API and opaque Web accounts and marks disabled entries", () => {
|
|
const settings = {
|
|
realDebridApiTokens: serializeRealDebridApiAccounts([{ id: "rda_apiOpaque", token: "api-secret" }]),
|
|
realDebridWebAccountIds: ["rdw_legacy", "rdw_second"],
|
|
realDebridDisabledAccountIds: ["rda_apiOpaque", "rdw_second"]
|
|
};
|
|
|
|
expect(getRealDebridAccounts(settings)).toEqual([
|
|
expect.objectContaining({ id: "rda_apiOpaque", kind: "api", enabled: false }),
|
|
expect.objectContaining({ id: "rdw_legacy", kind: "web", enabled: true }),
|
|
expect.objectContaining({ id: "rdw_second", kind: "web", enabled: false })
|
|
]);
|
|
expect(getRealDebridAccountIds(settings)).toEqual(["rda_apiOpaque", "rdw_legacy", "rdw_second"]);
|
|
});
|
|
});
|