@channel.io/app-sdk-server 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/__tests__/native-client.test.d.ts +2 -0
  2. package/dist/__tests__/native-client.test.d.ts.map +1 -0
  3. package/dist/__tests__/native-client.test.js +256 -0
  4. package/dist/__tests__/native-client.test.js.map +1 -0
  5. package/dist/__tests__/proxy-api.test.d.ts +2 -0
  6. package/dist/__tests__/proxy-api.test.d.ts.map +1 -0
  7. package/dist/__tests__/proxy-api.test.js +273 -0
  8. package/dist/__tests__/proxy-api.test.js.map +1 -0
  9. package/dist/__tests__/signature.test.d.ts +2 -0
  10. package/dist/__tests__/signature.test.d.ts.map +1 -0
  11. package/dist/__tests__/signature.test.js +172 -0
  12. package/dist/__tests__/signature.test.js.map +1 -0
  13. package/dist/__tests__/token-manager.test.d.ts +2 -0
  14. package/dist/__tests__/token-manager.test.d.ts.map +1 -0
  15. package/dist/__tests__/token-manager.test.js +624 -0
  16. package/dist/__tests__/token-manager.test.js.map +1 -0
  17. package/dist/guards/signature.middleware.d.ts +25 -16
  18. package/dist/guards/signature.middleware.d.ts.map +1 -1
  19. package/dist/guards/signature.middleware.js +35 -19
  20. package/dist/guards/signature.middleware.js.map +1 -1
  21. package/dist/native/client.d.ts +55 -1
  22. package/dist/native/client.d.ts.map +1 -1
  23. package/dist/native/client.js +89 -0
  24. package/dist/native/client.js.map +1 -1
  25. package/dist/native/index.d.ts +2 -0
  26. package/dist/native/index.d.ts.map +1 -1
  27. package/dist/native/index.js +2 -0
  28. package/dist/native/index.js.map +1 -1
  29. package/dist/native/proxy-api.d.ts +110 -0
  30. package/dist/native/proxy-api.d.ts.map +1 -0
  31. package/dist/native/proxy-api.js +159 -0
  32. package/dist/native/proxy-api.js.map +1 -0
  33. package/dist/native/proxy-api.types.d.ts +232 -0
  34. package/dist/native/proxy-api.types.d.ts.map +1 -0
  35. package/dist/native/proxy-api.types.js +10 -0
  36. package/dist/native/proxy-api.types.js.map +1 -0
  37. package/dist/native/types.d.ts +108 -0
  38. package/dist/native/types.d.ts.map +1 -1
  39. package/dist/nestjs/channel-app.service.d.ts +21 -2
  40. package/dist/nestjs/channel-app.service.d.ts.map +1 -1
  41. package/dist/nestjs/channel-app.service.js +73 -36
  42. package/dist/nestjs/channel-app.service.js.map +1 -1
  43. package/dist/nestjs/channel-app.service.test.d.ts +2 -0
  44. package/dist/nestjs/channel-app.service.test.d.ts.map +1 -0
  45. package/dist/nestjs/channel-app.service.test.js +240 -0
  46. package/dist/nestjs/channel-app.service.test.js.map +1 -0
  47. package/dist/token/manager.d.ts +33 -1
  48. package/dist/token/manager.d.ts.map +1 -1
  49. package/dist/token/manager.js +75 -13
  50. package/dist/token/manager.js.map +1 -1
  51. package/package.json +2 -2
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=native-client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-client.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/native-client.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,256 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
+ import { NativeFunctionClient, NativeFunctionError } from "../native/client.js";
3
+ /**
4
+ * Helper to create a mock fetch Response
5
+ */
6
+ function mockFetchResponse(body, status = 200) {
7
+ return {
8
+ ok: status >= 200 && status < 300,
9
+ status,
10
+ statusText: status === 200 ? "OK" : "Error",
11
+ json: () => Promise.resolve(body),
12
+ text: () => Promise.resolve(JSON.stringify(body)),
13
+ };
14
+ }
15
+ function parseFetchBody(mockFetch, callIndex = 0) {
16
+ const call = mockFetch.mock.calls[callIndex];
17
+ return JSON.parse(call[1].body);
18
+ }
19
+ function getFetchUrl(mockFetch, callIndex = 0) {
20
+ const call = mockFetch.mock.calls[callIndex];
21
+ return call[0];
22
+ }
23
+ function getFetchInit(mockFetch, callIndex = 0) {
24
+ const call = mockFetch.mock.calls[callIndex];
25
+ return call[1];
26
+ }
27
+ describe("NativeFunctionClient", () => {
28
+ const APP_ID = "test-app-id";
29
+ const APP_SECRET = "test-app-secret";
30
+ let client;
31
+ let mockFetch;
32
+ beforeEach(() => {
33
+ client = new NativeFunctionClient({
34
+ appId: APP_ID,
35
+ appSecret: APP_SECRET,
36
+ appStoreUrl: "https://test-app-store.example.com",
37
+ });
38
+ mockFetch = vi.fn();
39
+ globalThis.fetch = mockFetch;
40
+ });
41
+ afterEach(() => {
42
+ vi.restoreAllMocks();
43
+ });
44
+ // ============================================
45
+ // Auth Functions
46
+ // ============================================
47
+ describe("issueToken", () => {
48
+ it("should call issueToken with secret only (app-scoped)", async () => {
49
+ const tokenResult = {
50
+ accessToken: "access-123",
51
+ refreshToken: "refresh-456",
52
+ expiresIn: 3600,
53
+ };
54
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: tokenResult }));
55
+ const result = await client.issueToken();
56
+ expect(mockFetch).toHaveBeenCalledOnce();
57
+ const url = getFetchUrl(mockFetch);
58
+ expect(url).toBe("https://test-app-store.example.com/general/v1/native/functions");
59
+ const init = getFetchInit(mockFetch);
60
+ expect(init.method).toBe("PUT");
61
+ const body = parseFetchBody(mockFetch);
62
+ expect(body.method).toBe("issueToken");
63
+ expect(body.params["secret"]).toBe(APP_SECRET);
64
+ expect(body.params["channelId"]).toBeUndefined();
65
+ expect(result).toEqual(tokenResult);
66
+ });
67
+ it("should call issueToken with channelId (channel-scoped)", async () => {
68
+ const tokenResult = {
69
+ accessToken: "access-789",
70
+ refreshToken: "refresh-012",
71
+ expiresIn: 3600,
72
+ };
73
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: tokenResult }));
74
+ const result = await client.issueToken({ channelId: "ch-123" });
75
+ const body = parseFetchBody(mockFetch);
76
+ expect(body.params["channelId"]).toBe("ch-123");
77
+ expect(result).toEqual(tokenResult);
78
+ });
79
+ });
80
+ describe("refreshToken", () => {
81
+ it("should call refreshToken with the refresh token", async () => {
82
+ const tokenResult = {
83
+ accessToken: "new-access",
84
+ refreshToken: "new-refresh",
85
+ expiresIn: 3600,
86
+ };
87
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: tokenResult }));
88
+ const result = await client.refreshToken("old-refresh-token");
89
+ const body = parseFetchBody(mockFetch);
90
+ expect(body.method).toBe("refreshToken");
91
+ expect(body.params["refreshToken"]).toBe("old-refresh-token");
92
+ expect(result).toEqual(tokenResult);
93
+ });
94
+ });
95
+ // ============================================
96
+ // Command Functions
97
+ // ============================================
98
+ describe("registerCommands", () => {
99
+ it("should call registerCommands with appId and commands", async () => {
100
+ const registerResult = { success: true };
101
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: registerResult }));
102
+ const commands = [
103
+ {
104
+ name: "hello",
105
+ scope: "desk",
106
+ actionFunctionName: "hello.action",
107
+ alfMode: "disable",
108
+ },
109
+ ];
110
+ const result = await client.registerCommands(commands);
111
+ const body = parseFetchBody(mockFetch);
112
+ expect(body.method).toBe("registerCommands");
113
+ expect(body.params["appId"]).toBe(APP_ID);
114
+ expect(body.params["commands"]).toEqual(commands);
115
+ expect(result).toEqual(registerResult);
116
+ });
117
+ });
118
+ // ============================================
119
+ // Extension Functions
120
+ // ============================================
121
+ describe("registerExtension", () => {
122
+ it("should call registerExtension with appId, extensionName, and systemVersion", async () => {
123
+ const registerResult = {
124
+ success: true,
125
+ extensions: [{ name: "calendar", systemVersion: "v1" }],
126
+ };
127
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: registerResult }));
128
+ const result = await client.registerExtension("calendar", "v1");
129
+ const body = parseFetchBody(mockFetch);
130
+ expect(body.method).toBe("registerExtension");
131
+ expect(body.params).toEqual({
132
+ appId: APP_ID,
133
+ systemVersion: "v1",
134
+ extensionName: "calendar",
135
+ });
136
+ expect(result).toEqual(registerResult);
137
+ });
138
+ it("should return validation errors when registration fails", async () => {
139
+ const failResult = {
140
+ success: false,
141
+ errorMessage: "Invalid extension",
142
+ validationErrors: ["Extension name is not allowed"],
143
+ };
144
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: failResult }));
145
+ const result = await client.registerExtension("invalid", "v1");
146
+ expect(result.success).toBe(false);
147
+ expect(result.errorMessage).toBe("Invalid extension");
148
+ expect(result.validationErrors).toContain("Extension name is not allowed");
149
+ });
150
+ });
151
+ describe("unregisterExtension", () => {
152
+ it("should call unregisterExtension with appId, extensionName, and systemVersion", async () => {
153
+ const unregisterResult = { success: true };
154
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: unregisterResult }));
155
+ const result = await client.unregisterExtension("calendar", "v1");
156
+ const body = parseFetchBody(mockFetch);
157
+ expect(body.method).toBe("unregisterExtension");
158
+ expect(body.params).toEqual({
159
+ appId: APP_ID,
160
+ systemVersion: "v1",
161
+ extensionName: "calendar",
162
+ });
163
+ expect(result).toEqual(unregisterResult);
164
+ });
165
+ it("should return error when unregistration fails", async () => {
166
+ const failResult = {
167
+ success: false,
168
+ errorMessage: "Extension not found",
169
+ };
170
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: failResult }));
171
+ const result = await client.unregisterExtension("nonexistent", "v1");
172
+ expect(result.success).toBe(false);
173
+ expect(result.errorMessage).toBe("Extension not found");
174
+ });
175
+ });
176
+ // ============================================
177
+ // ALF Task Functions
178
+ // ============================================
179
+ describe("registerAlfTasks", () => {
180
+ it("should call registerAlfTasks with appId", async () => {
181
+ const registerResult = {
182
+ success: true,
183
+ totalTasks: 5,
184
+ createdCount: 3,
185
+ updatedCount: 1,
186
+ deletedCount: 1,
187
+ };
188
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: registerResult }));
189
+ const result = await client.registerAlfTasks();
190
+ const body = parseFetchBody(mockFetch);
191
+ expect(body.method).toBe("registerAlfTasks");
192
+ expect(body.params).toEqual({ appId: APP_ID });
193
+ expect(result).toEqual(registerResult);
194
+ });
195
+ it("should return error message when registration fails", async () => {
196
+ const failResult = {
197
+ success: false,
198
+ errorMessage: "App not found",
199
+ totalTasks: 0,
200
+ createdCount: 0,
201
+ updatedCount: 0,
202
+ deletedCount: 0,
203
+ };
204
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: failResult }));
205
+ const result = await client.registerAlfTasks();
206
+ expect(result.success).toBe(false);
207
+ expect(result.errorMessage).toBe("App not found");
208
+ });
209
+ });
210
+ describe("getAlfTaskVersions", () => {
211
+ it("should call getAlfTaskVersions with appId", async () => {
212
+ const versionsResult = {
213
+ success: true,
214
+ tasks: [
215
+ { id: "task-1", name: "Auto-categorize", version: "v1.0.0" },
216
+ { id: "task-2", name: "Auto-reply", version: "v2.1.0" },
217
+ ],
218
+ };
219
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: versionsResult }));
220
+ const result = await client.getAlfTaskVersions();
221
+ const body = parseFetchBody(mockFetch);
222
+ expect(body.method).toBe("getAlfTaskVersions");
223
+ expect(body.params).toEqual({ appId: APP_ID });
224
+ expect(result).toEqual(versionsResult);
225
+ expect(result.tasks).toHaveLength(2);
226
+ expect(result.tasks[0]?.name).toBe("Auto-categorize");
227
+ });
228
+ it("should return empty tasks on error", async () => {
229
+ const failResult = {
230
+ success: false,
231
+ errorMessage: "App not found",
232
+ tasks: [],
233
+ };
234
+ mockFetch.mockResolvedValueOnce(mockFetchResponse({ result: failResult }));
235
+ const result = await client.getAlfTaskVersions();
236
+ expect(result.success).toBe(false);
237
+ expect(result.tasks).toEqual([]);
238
+ });
239
+ });
240
+ // ============================================
241
+ // Error Handling
242
+ // ============================================
243
+ describe("error handling", () => {
244
+ it("should throw NativeFunctionError on HTTP error", async () => {
245
+ mockFetch.mockResolvedValue(mockFetchResponse({ error: "not found" }, 404));
246
+ await expect(client.issueToken()).rejects.toThrow(NativeFunctionError);
247
+ });
248
+ it("should throw NativeFunctionError on API error response", async () => {
249
+ mockFetch.mockResolvedValue(mockFetchResponse({
250
+ error: { code: 400, message: "Invalid params" },
251
+ }));
252
+ await expect(client.registerAlfTasks()).rejects.toThrow("Invalid params");
253
+ });
254
+ });
255
+ });
256
+ //# sourceMappingURL=native-client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-client.test.js","sourceRoot":"","sources":["../../src/__tests__/native-client.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=proxy-api.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-api.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/proxy-api.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,273 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ import { NativeFunctionClient } from "../native/client.js";
3
+ import { ProxyApi } from "../native/proxy-api.js";
4
+ describe("ProxyApi", () => {
5
+ let client;
6
+ let api;
7
+ const accessToken = "test-access-token";
8
+ beforeEach(() => {
9
+ client = new NativeFunctionClient({
10
+ appId: "test-app-id",
11
+ appSecret: "test-app-secret",
12
+ });
13
+ api = client.createProxyApi(accessToken);
14
+ });
15
+ /**
16
+ * Helper to spy on callNativeFunctionWithToken and verify it's called correctly
17
+ */
18
+ function mockCall(result) {
19
+ return vi.spyOn(client, "callNativeFunctionWithToken").mockResolvedValue(result);
20
+ }
21
+ // ============================================
22
+ // Factory method
23
+ // ============================================
24
+ describe("createProxyApi", () => {
25
+ it("should return a ProxyApi instance", () => {
26
+ expect(api).toBeInstanceOf(ProxyApi);
27
+ });
28
+ });
29
+ // ============================================
30
+ // Message API
31
+ // ============================================
32
+ describe("Message API", () => {
33
+ it("writeGroupMessage should call with correct method and params", async () => {
34
+ const params = {
35
+ channelId: "ch-1",
36
+ groupId: "grp-1",
37
+ dto: { plainText: "Hello" },
38
+ };
39
+ const expected = { message: { id: "msg-1", plainText: "Hello" } };
40
+ const spy = mockCall(expected);
41
+ const result = await api.writeGroupMessage(params);
42
+ expect(spy).toHaveBeenCalledWith("writeGroupMessage", params, accessToken);
43
+ expect(result).toEqual(expected);
44
+ });
45
+ it("writeGroupMessage should pass optional fields", async () => {
46
+ const params = {
47
+ channelId: "ch-1",
48
+ groupId: "grp-1",
49
+ rootMessageId: "root-1",
50
+ broadcast: true,
51
+ dto: {
52
+ plainText: "Thread reply",
53
+ buttons: [{ title: "Click" }],
54
+ botName: "TestBot",
55
+ },
56
+ };
57
+ const spy = mockCall({ message: { id: "msg-2" } });
58
+ await api.writeGroupMessage(params);
59
+ expect(spy).toHaveBeenCalledWith("writeGroupMessage", params, accessToken);
60
+ });
61
+ it("writeUserChatMessage should call with correct method and params", async () => {
62
+ const params = {
63
+ channelId: "ch-1",
64
+ userChatId: "uc-1",
65
+ dto: { plainText: "Hi user" },
66
+ };
67
+ const expected = { message: { id: "msg-3" } };
68
+ const spy = mockCall(expected);
69
+ const result = await api.writeUserChatMessage(params);
70
+ expect(spy).toHaveBeenCalledWith("writeUserChatMessage", params, accessToken);
71
+ expect(result).toEqual(expected);
72
+ });
73
+ it("writeDirectChatMessageAsManager should call with correct method and params", async () => {
74
+ const params = {
75
+ directChatId: "dc-1",
76
+ channelId: "ch-1",
77
+ dto: { plainText: "DM" },
78
+ };
79
+ const expected = { message: { id: "msg-4" } };
80
+ const spy = mockCall(expected);
81
+ const result = await api.writeDirectChatMessageAsManager(params);
82
+ expect(spy).toHaveBeenCalledWith("writeDirectChatMessageAsManager", params, accessToken);
83
+ expect(result).toEqual(expected);
84
+ });
85
+ it("patchMessage should call with correct method and params", async () => {
86
+ const params = {
87
+ channelId: "ch-1",
88
+ chatId: "chat-1",
89
+ chatType: "group",
90
+ messageId: "msg-1",
91
+ body: { options: [{ key: "value" }], state: "active" },
92
+ updateMask: ["options", "state"],
93
+ };
94
+ const expected = { message: { id: "msg-1", state: "active" } };
95
+ const spy = mockCall(expected);
96
+ const result = await api.patchMessage(params);
97
+ expect(spy).toHaveBeenCalledWith("patchMessage", params, accessToken);
98
+ expect(result).toEqual(expected);
99
+ });
100
+ });
101
+ // ============================================
102
+ // Manager API
103
+ // ============================================
104
+ describe("Manager API", () => {
105
+ it("getManager should call with correct method and params", async () => {
106
+ const params = {
107
+ channelId: "ch-1",
108
+ managerId: "mgr-1",
109
+ };
110
+ const expected = { manager: { id: "mgr-1", name: "Alice" } };
111
+ const spy = mockCall(expected);
112
+ const result = await api.getManager(params);
113
+ expect(spy).toHaveBeenCalledWith("getManager", params, accessToken);
114
+ expect(result).toEqual(expected);
115
+ });
116
+ it("batchGetManagers should call with correct method and params", async () => {
117
+ const params = {
118
+ channelId: "ch-1",
119
+ managerIds: ["mgr-1", "mgr-2"],
120
+ };
121
+ const expected = {
122
+ managers: [
123
+ { id: "mgr-1", name: "Alice" },
124
+ { id: "mgr-2", name: "Bob" },
125
+ ],
126
+ };
127
+ const spy = mockCall(expected);
128
+ const result = await api.batchGetManagers(params);
129
+ expect(spy).toHaveBeenCalledWith("batchGetManagers", params, accessToken);
130
+ expect(result).toEqual(expected);
131
+ });
132
+ it("searchManagers should call with correct method and params", async () => {
133
+ const params = {
134
+ channelId: "ch-1",
135
+ pagination: { limit: 10 },
136
+ };
137
+ const expected = {
138
+ managers: [{ id: "mgr-1", name: "Alice" }],
139
+ next: "cursor-abc",
140
+ };
141
+ const spy = mockCall(expected);
142
+ const result = await api.searchManagers(params);
143
+ expect(spy).toHaveBeenCalledWith("searchManagers", params, accessToken);
144
+ expect(result).toEqual(expected);
145
+ });
146
+ });
147
+ // ============================================
148
+ // User API
149
+ // ============================================
150
+ describe("User API", () => {
151
+ it("getUser should call with correct method and params", async () => {
152
+ const params = {
153
+ channelId: "ch-1",
154
+ userId: "user-1",
155
+ };
156
+ const expected = { user: { id: "user-1", name: "Charlie" } };
157
+ const spy = mockCall(expected);
158
+ const result = await api.getUser(params);
159
+ expect(spy).toHaveBeenCalledWith("getUser", params, accessToken);
160
+ expect(result).toEqual(expected);
161
+ });
162
+ it("searchUser should call with correct method and params", async () => {
163
+ const params = {
164
+ channelId: "ch-1",
165
+ memberId: "member-1",
166
+ };
167
+ const expected = { user: { id: "user-1", memberId: "member-1" } };
168
+ const spy = mockCall(expected);
169
+ const result = await api.searchUser(params);
170
+ expect(spy).toHaveBeenCalledWith("searchUser", params, accessToken);
171
+ expect(result).toEqual(expected);
172
+ });
173
+ it("patchUser should call with correct method and params", async () => {
174
+ const params = {
175
+ channelId: "ch-1",
176
+ userId: "user-1",
177
+ body: {
178
+ tags: ["vip", "premium"],
179
+ blocked: false,
180
+ profile: { company: "Acme" },
181
+ },
182
+ updateMask: ["tags", "blocked", "profile"],
183
+ };
184
+ const expected = { user: { id: "user-1", tags: ["vip", "premium"] } };
185
+ const spy = mockCall(expected);
186
+ const result = await api.patchUser(params);
187
+ expect(spy).toHaveBeenCalledWith("patchUser", params, accessToken);
188
+ expect(result).toEqual(expected);
189
+ });
190
+ });
191
+ // ============================================
192
+ // UserChat API
193
+ // ============================================
194
+ describe("UserChat API", () => {
195
+ it("getUserChat should call with correct method and params", async () => {
196
+ const params = {
197
+ channelId: "ch-1",
198
+ userChatId: "uc-1",
199
+ };
200
+ const expected = { userChat: { id: "uc-1", state: "opened" } };
201
+ const spy = mockCall(expected);
202
+ const result = await api.getUserChat(params);
203
+ expect(spy).toHaveBeenCalledWith("getUserChat", params, accessToken);
204
+ expect(result).toEqual(expected);
205
+ });
206
+ it("manageUserChat should call with correct method and params", async () => {
207
+ const params = {
208
+ channelId: "ch-1",
209
+ userChatId: "uc-1",
210
+ };
211
+ const expected = { userChat: { id: "uc-1", state: "managed" } };
212
+ const spy = mockCall(expected);
213
+ const result = await api.manageUserChat(params);
214
+ expect(spy).toHaveBeenCalledWith("manageUserChat", params, accessToken);
215
+ expect(result).toEqual(expected);
216
+ });
217
+ });
218
+ // ============================================
219
+ // Group API
220
+ // ============================================
221
+ describe("Group API", () => {
222
+ it("getGroup should call with correct method and params", async () => {
223
+ const params = {
224
+ channelId: "ch-1",
225
+ groupId: "grp-1",
226
+ };
227
+ const expected = { group: { id: "grp-1", name: "General" } };
228
+ const spy = mockCall(expected);
229
+ const result = await api.getGroup(params);
230
+ expect(spy).toHaveBeenCalledWith("getGroup", params, accessToken);
231
+ expect(result).toEqual(expected);
232
+ });
233
+ it("searchGroups should call with correct method and params", async () => {
234
+ const params = {
235
+ channelId: "ch-1",
236
+ pagination: { limit: 20, since: "cursor-xyz" },
237
+ };
238
+ const expected = {
239
+ groups: [{ id: "grp-1" }, { id: "grp-2" }],
240
+ next: "cursor-next",
241
+ };
242
+ const spy = mockCall(expected);
243
+ const result = await api.searchGroups(params);
244
+ expect(spy).toHaveBeenCalledWith("searchGroups", params, accessToken);
245
+ expect(result).toEqual(expected);
246
+ });
247
+ });
248
+ // ============================================
249
+ // Channel API
250
+ // ============================================
251
+ describe("Channel API", () => {
252
+ it("getChannel should call with correct method and params", async () => {
253
+ const params = {
254
+ channelId: "ch-1",
255
+ };
256
+ const expected = { channel: { id: "ch-1", name: "My Channel" } };
257
+ const spy = mockCall(expected);
258
+ const result = await api.getChannel(params);
259
+ expect(spy).toHaveBeenCalledWith("getChannel", params, accessToken);
260
+ expect(result).toEqual(expected);
261
+ });
262
+ });
263
+ // ============================================
264
+ // Error propagation
265
+ // ============================================
266
+ describe("Error handling", () => {
267
+ it("should propagate errors from callNativeFunctionWithToken", async () => {
268
+ vi.spyOn(client, "callNativeFunctionWithToken").mockRejectedValue(new Error("Native function call failed: 403 Forbidden"));
269
+ await expect(api.getManager({ channelId: "ch-1", managerId: "mgr-1" })).rejects.toThrow("Native function call failed: 403 Forbidden");
270
+ });
271
+ });
272
+ });
273
+ //# sourceMappingURL=proxy-api.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-api.test.js","sourceRoot":"","sources":["../../src/__tests__/proxy-api.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signature.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/signature.test.ts"],"names":[],"mappings":""}