Files
openclaw/test/qa-convex-credential-payload-validation.test.ts
Patrick Erichsen 84e8e09725 Add WhatsApp live QA lane (#77704)
* feat(qa): add whatsapp live lane

* ci: add gated whatsapp and discord qa live lanes

* ci: honor qa live env gates in release selection

* test: update qa live workflow gate assertion

* ci: split live QA release gates
2026-05-05 12:09:28 -07:00

86 lines
2.7 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
CredentialPayloadValidationError,
normalizeCredentialPayloadForKind,
} from "../qa/convex-credential-broker/convex/payload-validation.js";
describe("QA Convex credential payload validation", () => {
it("normalizes Discord credential payloads", () => {
expect(
normalizeCredentialPayloadForKind("discord", {
guildId: " 1496962067029299350 ",
channelId: "1496962068027281447",
driverBotToken: " driver-token ",
sutBotToken: "sut-token",
sutApplicationId: "1496963665587601428",
ignored: true,
}),
).toEqual({
guildId: "1496962067029299350",
channelId: "1496962068027281447",
driverBotToken: "driver-token",
sutBotToken: "sut-token",
sutApplicationId: "1496963665587601428",
});
});
it("rejects malformed Discord snowflakes", () => {
expect(() =>
normalizeCredentialPayloadForKind("discord", {
guildId: "not-a-snowflake",
channelId: "1496962068027281447",
driverBotToken: "driver-token",
sutBotToken: "sut-token",
sutApplicationId: "1496963665587601428",
}),
).toThrow(CredentialPayloadValidationError);
});
it("rejects empty Discord bot tokens", () => {
expect(() =>
normalizeCredentialPayloadForKind("discord", {
guildId: "1496962067029299350",
channelId: "1496962068027281447",
driverBotToken: " ",
sutBotToken: "sut-token",
sutApplicationId: "1496963665587601428",
}),
).toThrow(/driverBotToken/u);
});
it("keeps unknown credential kinds pass-through-compatible", () => {
const payload = { anything: true };
expect(normalizeCredentialPayloadForKind("future-kind", payload)).toBe(payload);
});
it("normalizes WhatsApp credential payloads", () => {
expect(
normalizeCredentialPayloadForKind("whatsapp", {
driverPhoneE164: "+15550000001",
sutPhoneE164: "+15550000002",
driverAuthArchiveBase64: "driver-archive",
sutAuthArchiveBase64: "sut-archive",
groupJid: "120363000000000000@g.us",
}),
).toEqual({
driverPhoneE164: "+15550000001",
sutPhoneE164: "+15550000002",
driverAuthArchiveBase64: "driver-archive",
sutAuthArchiveBase64: "sut-archive",
groupJid: "120363000000000000@g.us",
});
});
it("rejects WhatsApp payloads with duplicate phone numbers", () => {
expect(() =>
normalizeCredentialPayloadForKind("whatsapp", {
driverPhoneE164: "+15550000001",
sutPhoneE164: "+15550000001",
driverAuthArchiveBase64: "driver-archive",
sutAuthArchiveBase64: "sut-archive",
}),
).toThrow("distinct driverPhoneE164 and sutPhoneE164");
});
});