openclaw/extensions/msteams/src/token.test.ts

73 lines
2.0 KiB
TypeScript

import { afterEach, describe, expect, it } from "vitest";
import { hasConfiguredMSTeamsCredentials, resolveMSTeamsCredentials } from "./token.js";
const ORIGINAL_ENV = {
appId: process.env.MSTEAMS_APP_ID,
appPassword: process.env.MSTEAMS_APP_PASSWORD,
tenantId: process.env.MSTEAMS_TENANT_ID,
};
afterEach(() => {
if (ORIGINAL_ENV.appId === undefined) {
delete process.env.MSTEAMS_APP_ID;
} else {
process.env.MSTEAMS_APP_ID = ORIGINAL_ENV.appId;
}
if (ORIGINAL_ENV.appPassword === undefined) {
delete process.env.MSTEAMS_APP_PASSWORD;
} else {
process.env.MSTEAMS_APP_PASSWORD = ORIGINAL_ENV.appPassword;
}
if (ORIGINAL_ENV.tenantId === undefined) {
delete process.env.MSTEAMS_TENANT_ID;
} else {
process.env.MSTEAMS_TENANT_ID = ORIGINAL_ENV.tenantId;
}
});
describe("resolveMSTeamsCredentials", () => {
it("returns configured credentials for plaintext values", () => {
const resolved = resolveMSTeamsCredentials({
appId: " app-id ",
appPassword: " app-password ",
tenantId: " tenant-id ",
});
expect(resolved).toEqual({
appId: "app-id",
appPassword: "app-password",
tenantId: "tenant-id",
});
});
it("throws when appPassword remains an unresolved SecretRef object", () => {
expect(() =>
resolveMSTeamsCredentials({
appId: "app-id",
appPassword: {
source: "env",
provider: "default",
id: "MSTEAMS_APP_PASSWORD",
},
tenantId: "tenant-id",
}),
).toThrow(/channels\.msteams\.appPassword: unresolved SecretRef/i);
});
});
describe("hasConfiguredMSTeamsCredentials", () => {
it("treats SecretRef appPassword as configured", () => {
const configured = hasConfiguredMSTeamsCredentials({
appId: "app-id",
appPassword: {
source: "env",
provider: "default",
id: "MSTEAMS_APP_PASSWORD",
},
tenantId: "tenant-id",
});
expect(configured).toBe(true);
});
});