mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-11 17:21:13 +00:00
80 lines
2.1 KiB
TypeScript
80 lines
2.1 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import { createMSTeamsAdapter, type MSTeamsTeamsSdk } from "./sdk.js";
|
|
import type { MSTeamsCredentials } from "./token.js";
|
|
|
|
const originalFetch = globalThis.fetch;
|
|
|
|
afterEach(() => {
|
|
globalThis.fetch = originalFetch;
|
|
vi.restoreAllMocks();
|
|
});
|
|
|
|
function createSdkStub(): MSTeamsTeamsSdk {
|
|
class AppStub {
|
|
async getBotToken() {
|
|
return {
|
|
toString() {
|
|
return "bot-token";
|
|
},
|
|
};
|
|
}
|
|
}
|
|
|
|
class ClientStub {
|
|
constructor(_serviceUrl: string, _options: unknown) {}
|
|
|
|
conversations = {
|
|
activities: (_conversationId: string) => ({
|
|
create: async (_activity: unknown) => ({ id: "created" }),
|
|
}),
|
|
};
|
|
}
|
|
|
|
return {
|
|
App: AppStub as unknown as MSTeamsTeamsSdk["App"],
|
|
Client: ClientStub as unknown as MSTeamsTeamsSdk["Client"],
|
|
};
|
|
}
|
|
|
|
describe("createMSTeamsAdapter", () => {
|
|
it("provides deleteActivity in proactive continueConversation contexts", async () => {
|
|
const fetchMock = vi.fn(async () => new Response(null, { status: 204 }));
|
|
globalThis.fetch = fetchMock as unknown as typeof fetch;
|
|
|
|
const creds = {
|
|
appId: "app-id",
|
|
appPassword: "secret",
|
|
tenantId: "tenant-id",
|
|
} satisfies MSTeamsCredentials;
|
|
const sdk = createSdkStub();
|
|
const app = new sdk.App({
|
|
clientId: creds.appId,
|
|
clientSecret: creds.appPassword,
|
|
tenantId: creds.tenantId,
|
|
});
|
|
const adapter = createMSTeamsAdapter(app, sdk);
|
|
|
|
await adapter.continueConversation(
|
|
creds.appId,
|
|
{
|
|
serviceUrl: "https://service.example.com/",
|
|
conversation: { id: "19:conversation@thread.tacv2" },
|
|
channelId: "msteams",
|
|
},
|
|
async (ctx) => {
|
|
await ctx.deleteActivity("activity-123");
|
|
},
|
|
);
|
|
|
|
expect(fetchMock).toHaveBeenCalledWith(
|
|
"https://service.example.com/v3/conversations/19%3Aconversation%40thread.tacv2/activities/activity-123",
|
|
expect.objectContaining({
|
|
method: "DELETE",
|
|
headers: expect.objectContaining({
|
|
Authorization: "Bearer bot-token",
|
|
}),
|
|
}),
|
|
);
|
|
});
|
|
});
|