mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-04 06:20:22 +00:00
* Discord: add PluralKit sender identity resolver * fix: resolve PluralKit sender identities (#5838) (thanks @thewilloftheshadow)
68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import { fetchPluralKitMessageInfo } from "./pluralkit.js";
|
|
|
|
type MockResponse = {
|
|
status: number;
|
|
ok: boolean;
|
|
text: () => Promise<string>;
|
|
json: () => Promise<unknown>;
|
|
};
|
|
|
|
const buildResponse = (params: { status: number; body?: unknown }): MockResponse => {
|
|
const body = params.body;
|
|
const textPayload = typeof body === "string" ? body : body == null ? "" : JSON.stringify(body);
|
|
return {
|
|
status: params.status,
|
|
ok: params.status >= 200 && params.status < 300,
|
|
text: async () => textPayload,
|
|
json: async () => body ?? {},
|
|
};
|
|
};
|
|
|
|
describe("fetchPluralKitMessageInfo", () => {
|
|
it("returns null when disabled", async () => {
|
|
const fetcher = vi.fn();
|
|
const result = await fetchPluralKitMessageInfo({
|
|
messageId: "123",
|
|
config: { enabled: false },
|
|
fetcher: fetcher as unknown as typeof fetch,
|
|
});
|
|
expect(result).toBeNull();
|
|
expect(fetcher).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("returns null on 404", async () => {
|
|
const fetcher = vi.fn(async () => buildResponse({ status: 404 }));
|
|
const result = await fetchPluralKitMessageInfo({
|
|
messageId: "missing",
|
|
config: { enabled: true },
|
|
fetcher: fetcher as unknown as typeof fetch,
|
|
});
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it("returns payload and sends token when configured", async () => {
|
|
let receivedHeaders: Record<string, string> | undefined;
|
|
const fetcher = vi.fn(async (_url: string, init?: RequestInit) => {
|
|
receivedHeaders = init?.headers as Record<string, string> | undefined;
|
|
return buildResponse({
|
|
status: 200,
|
|
body: {
|
|
id: "123",
|
|
member: { id: "mem_1", name: "Alex" },
|
|
system: { id: "sys_1", name: "System" },
|
|
},
|
|
});
|
|
});
|
|
|
|
const result = await fetchPluralKitMessageInfo({
|
|
messageId: "123",
|
|
config: { enabled: true, token: "pk_test" },
|
|
fetcher: fetcher as unknown as typeof fetch,
|
|
});
|
|
|
|
expect(result?.member?.id).toBe("mem_1");
|
|
expect(receivedHeaders?.Authorization).toBe("pk_test");
|
|
});
|
|
});
|