mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 08:10:44 +00:00
* 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
86 lines
2.7 KiB
TypeScript
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");
|
|
});
|
|
});
|