openclaw/extensions/googlechat/src/channel.security.test.ts

42 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import type { OpenClawConfig } from "../runtime-api.js";
import { googlechatPlugin } from "./channel.js";
describe("googlechatPlugin security", () => {
it("normalizes prefixed DM allowlist entries to lowercase user ids", () => {
const security = googlechatPlugin.security;
if (!security) {
throw new Error("googlechat security unavailable");
}
const resolveDmPolicy = security.resolveDmPolicy;
const normalizeAllowEntry = googlechatPlugin.pairing?.normalizeAllowEntry;
expect(resolveDmPolicy).toBeTypeOf("function");
expect(normalizeAllowEntry).toBeTypeOf("function");
const cfg = {
channels: {
googlechat: {
serviceAccount: { client_email: "bot@example.com" },
dm: {
policy: "allowlist",
allowFrom: [" googlechat:user:Bob@Example.com "],
},
},
},
} as OpenClawConfig;
const account = googlechatPlugin.config.resolveAccount(cfg, "default");
const resolved = resolveDmPolicy!({ cfg, account });
if (!resolved) {
throw new Error("googlechat resolveDmPolicy returned null");
}
expect(resolved.policy).toBe("allowlist");
expect(resolved.allowFrom).toEqual([" googlechat:user:Bob@Example.com "]);
expect(resolved.normalizeEntry?.(" googlechat:user:Bob@Example.com ")).toBe(
"bob@example.com",
);
expect(normalizeAllowEntry!(" users/Alice@Example.com ")).toBe("alice@example.com");
});
});