| import { describe, expect, it, vi } from "vitest"; |
| import { resolveSlackUserAllowlist } from "./resolve-users.js"; |
|
|
| describe("resolveSlackUserAllowlist", () => { |
| it("resolves by email and prefers active human users", async () => { |
| const client = { |
| users: { |
| list: vi.fn().mockResolvedValue({ |
| members: [ |
| { |
| id: "U1", |
| name: "bot-user", |
| is_bot: true, |
| deleted: false, |
| profile: { email: "person@example.com" }, |
| }, |
| { |
| id: "U2", |
| name: "person", |
| is_bot: false, |
| deleted: false, |
| profile: { email: "person@example.com", display_name: "Person" }, |
| }, |
| ], |
| }), |
| }, |
| }; |
|
|
| const res = await resolveSlackUserAllowlist({ |
| token: "xoxb-test", |
| entries: ["person@example.com"], |
| client: client as never, |
| }); |
|
|
| expect(res[0]).toMatchObject({ |
| resolved: true, |
| id: "U2", |
| name: "Person", |
| email: "person@example.com", |
| isBot: false, |
| }); |
| }); |
|
|
| it("keeps unresolved users", async () => { |
| const client = { |
| users: { |
| list: vi.fn().mockResolvedValue({ members: [] }), |
| }, |
| }; |
|
|
| const res = await resolveSlackUserAllowlist({ |
| token: "xoxb-test", |
| entries: ["@missing-user"], |
| client: client as never, |
| }); |
|
|
| expect(res[0]).toEqual({ input: "@missing-user", resolved: false }); |
| }); |
| }); |
|
|