mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-14 11:30:41 +00:00
67 lines
2.4 KiB
TypeScript
67 lines
2.4 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
import { searchGraphUsers } from "./graph-users.js";
|
|
import { fetchGraphJson } from "./graph.js";
|
|
|
|
vi.mock("./graph.js", () => ({
|
|
escapeOData: vi.fn((value: string) => value.replace(/'/g, "''")),
|
|
fetchGraphJson: vi.fn(),
|
|
}));
|
|
|
|
describe("searchGraphUsers", () => {
|
|
beforeEach(() => {
|
|
vi.mocked(fetchGraphJson).mockReset();
|
|
});
|
|
|
|
it("returns empty array for blank queries", async () => {
|
|
await expect(searchGraphUsers({ token: "token-1", query: " " })).resolves.toEqual([]);
|
|
expect(fetchGraphJson).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("uses exact mail/upn filter lookup for email-like queries", async () => {
|
|
vi.mocked(fetchGraphJson).mockResolvedValueOnce({
|
|
value: [{ id: "user-1", displayName: "User One" }],
|
|
} as never);
|
|
|
|
const result = await searchGraphUsers({
|
|
token: "token-2",
|
|
query: "alice.o'hara@example.com",
|
|
});
|
|
|
|
expect(fetchGraphJson).toHaveBeenCalledWith({
|
|
token: "token-2",
|
|
path: "/users?$filter=(mail%20eq%20'alice.o''hara%40example.com'%20or%20userPrincipalName%20eq%20'alice.o''hara%40example.com')&$select=id,displayName,mail,userPrincipalName",
|
|
});
|
|
expect(result).toEqual([{ id: "user-1", displayName: "User One" }]);
|
|
});
|
|
|
|
it("uses displayName search with eventual consistency and custom top", async () => {
|
|
vi.mocked(fetchGraphJson).mockResolvedValueOnce({
|
|
value: [{ id: "user-2", displayName: "Bob" }],
|
|
} as never);
|
|
|
|
const result = await searchGraphUsers({
|
|
token: "token-3",
|
|
query: "bob",
|
|
top: 25,
|
|
});
|
|
|
|
expect(fetchGraphJson).toHaveBeenCalledWith({
|
|
token: "token-3",
|
|
path: "/users?$search=%22displayName%3Abob%22&$select=id,displayName,mail,userPrincipalName&$top=25",
|
|
headers: { ConsistencyLevel: "eventual" },
|
|
});
|
|
expect(result).toEqual([{ id: "user-2", displayName: "Bob" }]);
|
|
});
|
|
|
|
it("falls back to default top and empty value handling", async () => {
|
|
vi.mocked(fetchGraphJson).mockResolvedValueOnce({} as never);
|
|
|
|
await expect(searchGraphUsers({ token: "token-4", query: "carol" })).resolves.toEqual([]);
|
|
expect(fetchGraphJson).toHaveBeenCalledWith({
|
|
token: "token-4",
|
|
path: "/users?$search=%22displayName%3Acarol%22&$select=id,displayName,mail,userPrincipalName&$top=10",
|
|
headers: { ConsistencyLevel: "eventual" },
|
|
});
|
|
});
|
|
});
|