Skip to content

Commit 5f17362

Browse files
committed
fix: honor slack default channel-type account
1 parent 4578351 commit 5f17362

2 files changed

Lines changed: 70 additions & 3 deletions

File tree

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { beforeEach, describe, expect, it, vi } from "vitest";
2+
import {
3+
__resetSlackChannelTypeCacheForTest,
4+
resolveSlackChannelType,
5+
} from "./channel-type.js";
6+
7+
const conversationsInfoMock = vi.fn();
8+
9+
vi.mock("./client.js", () => ({
10+
createSlackWebClient: vi.fn(() => ({
11+
conversations: {
12+
info: conversationsInfoMock,
13+
},
14+
})),
15+
}));
16+
17+
describe("resolveSlackChannelType", () => {
18+
beforeEach(() => {
19+
conversationsInfoMock.mockReset();
20+
__resetSlackChannelTypeCacheForTest();
21+
});
22+
23+
it("uses configured defaultAccount for omitted-account cache keys", async () => {
24+
const channelId = "C123";
25+
26+
await expect(
27+
resolveSlackChannelType({
28+
cfg: {
29+
channels: {
30+
slack: {
31+
enabled: true,
32+
},
33+
},
34+
} as never,
35+
channelId,
36+
}),
37+
).resolves.toBe("unknown");
38+
39+
await expect(
40+
resolveSlackChannelType({
41+
cfg: {
42+
channels: {
43+
slack: {
44+
enabled: true,
45+
defaultAccount: "work",
46+
accounts: {
47+
work: {
48+
botToken: "xoxb-work",
49+
appToken: "xapp-work",
50+
dm: {
51+
groupChannels: [channelId],
52+
},
53+
},
54+
},
55+
},
56+
},
57+
} as never,
58+
channelId,
59+
}),
60+
).resolves.toBe("group");
61+
62+
expect(conversationsInfoMock).not.toHaveBeenCalled();
63+
});
64+
});

extensions/slack/src/channel-type.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,12 @@ export async function resolveSlackChannelType(params: {
1414
if (!channelId) {
1515
return "unknown";
1616
}
17-
const cacheKey = `${params.accountId ?? "default"}:${channelId}`;
17+
const account = resolveSlackAccount({ cfg: params.cfg, accountId: params.accountId });
18+
const cacheKey = `${account.accountId}:${channelId}`;
1819
const cached = SLACK_CHANNEL_TYPE_CACHE.get(cacheKey);
1920
if (cached) {
2021
return cached;
2122
}
22-
23-
const account = resolveSlackAccount({ cfg: params.cfg, accountId: params.accountId });
2423
const groupChannels = normalizeAllowListLower(account.dm?.groupChannels);
2524
const channelIdLower = channelId.toLowerCase();
2625
if (
@@ -67,3 +66,7 @@ export async function resolveSlackChannelType(params: {
6766
return "unknown";
6867
}
6968
}
69+
70+
export function __resetSlackChannelTypeCacheForTest(): void {
71+
SLACK_CHANNEL_TYPE_CACHE.clear();
72+
}

0 commit comments

Comments
 (0)