@qwickapps/server 1.3.0 → 1.3.1

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 (132) hide show
  1. package/README.md +154 -0
  2. package/dist/core/control-panel.d.ts.map +1 -1
  3. package/dist/core/control-panel.js +30 -2
  4. package/dist/core/control-panel.js.map +1 -1
  5. package/dist/core/plugin-registry.d.ts +36 -0
  6. package/dist/core/plugin-registry.d.ts.map +1 -1
  7. package/dist/core/plugin-registry.js +26 -0
  8. package/dist/core/plugin-registry.js.map +1 -1
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/plugins/auth/adapters/index.d.ts +1 -0
  14. package/dist/plugins/auth/adapters/index.d.ts.map +1 -1
  15. package/dist/plugins/auth/adapters/index.js +1 -0
  16. package/dist/plugins/auth/adapters/index.js.map +1 -1
  17. package/dist/plugins/auth/adapters/supabase-adapter.d.ts.map +1 -1
  18. package/dist/plugins/auth/adapters/supabase-adapter.js.map +1 -1
  19. package/dist/plugins/auth/adapters/supertokens-adapter.d.ts +18 -0
  20. package/dist/plugins/auth/adapters/supertokens-adapter.d.ts.map +1 -0
  21. package/dist/plugins/auth/adapters/supertokens-adapter.js +267 -0
  22. package/dist/plugins/auth/adapters/supertokens-adapter.js.map +1 -0
  23. package/dist/plugins/auth/env-config.d.ts +88 -0
  24. package/dist/plugins/auth/env-config.d.ts.map +1 -0
  25. package/dist/plugins/auth/env-config.js +489 -0
  26. package/dist/plugins/auth/env-config.js.map +1 -0
  27. package/dist/plugins/auth/index.d.ts +3 -1
  28. package/dist/plugins/auth/index.d.ts.map +1 -1
  29. package/dist/plugins/auth/index.js +3 -0
  30. package/dist/plugins/auth/index.js.map +1 -1
  31. package/dist/plugins/auth/supertokens-adapter.test.d.ts +10 -0
  32. package/dist/plugins/auth/supertokens-adapter.test.d.ts.map +1 -0
  33. package/dist/plugins/auth/supertokens-adapter.test.js +486 -0
  34. package/dist/plugins/auth/supertokens-adapter.test.js.map +1 -0
  35. package/dist/plugins/auth/types.d.ts +70 -0
  36. package/dist/plugins/auth/types.d.ts.map +1 -1
  37. package/dist/plugins/auth/types.js.map +1 -1
  38. package/dist/plugins/cache-plugin.test.js +3 -0
  39. package/dist/plugins/cache-plugin.test.js.map +1 -1
  40. package/dist/plugins/index.d.ts +4 -2
  41. package/dist/plugins/index.d.ts.map +1 -1
  42. package/dist/plugins/index.js +3 -1
  43. package/dist/plugins/index.js.map +1 -1
  44. package/dist/plugins/postgres-plugin.test.js +3 -0
  45. package/dist/plugins/postgres-plugin.test.js.map +1 -1
  46. package/dist/plugins/preferences/__tests__/deep-merge.test.d.ts +7 -0
  47. package/dist/plugins/preferences/__tests__/deep-merge.test.d.ts.map +1 -0
  48. package/dist/plugins/preferences/__tests__/deep-merge.test.js +215 -0
  49. package/dist/plugins/preferences/__tests__/deep-merge.test.js.map +1 -0
  50. package/dist/plugins/preferences/__tests__/preferences-plugin.test.d.ts +7 -0
  51. package/dist/plugins/preferences/__tests__/preferences-plugin.test.d.ts.map +1 -0
  52. package/dist/plugins/preferences/__tests__/preferences-plugin.test.js +265 -0
  53. package/dist/plugins/preferences/__tests__/preferences-plugin.test.js.map +1 -0
  54. package/dist/plugins/preferences/index.d.ts +12 -0
  55. package/dist/plugins/preferences/index.d.ts.map +1 -0
  56. package/dist/plugins/preferences/index.js +13 -0
  57. package/dist/plugins/preferences/index.js.map +1 -0
  58. package/dist/plugins/preferences/preferences-plugin.d.ts +39 -0
  59. package/dist/plugins/preferences/preferences-plugin.d.ts.map +1 -0
  60. package/dist/plugins/preferences/preferences-plugin.js +226 -0
  61. package/dist/plugins/preferences/preferences-plugin.js.map +1 -0
  62. package/dist/plugins/preferences/stores/index.d.ts +9 -0
  63. package/dist/plugins/preferences/stores/index.d.ts.map +1 -0
  64. package/dist/plugins/preferences/stores/index.js +9 -0
  65. package/dist/plugins/preferences/stores/index.js.map +1 -0
  66. package/dist/plugins/preferences/stores/postgres-store.d.ts +41 -0
  67. package/dist/plugins/preferences/stores/postgres-store.d.ts.map +1 -0
  68. package/dist/plugins/preferences/stores/postgres-store.js +181 -0
  69. package/dist/plugins/preferences/stores/postgres-store.js.map +1 -0
  70. package/dist/plugins/preferences/types.d.ts +91 -0
  71. package/dist/plugins/preferences/types.d.ts.map +1 -0
  72. package/dist/plugins/preferences/types.js +10 -0
  73. package/dist/plugins/preferences/types.js.map +1 -0
  74. package/dist/plugins/users/__tests__/users-plugin.test.d.ts +9 -0
  75. package/dist/plugins/users/__tests__/users-plugin.test.d.ts.map +1 -0
  76. package/dist/plugins/users/__tests__/users-plugin.test.js +546 -0
  77. package/dist/plugins/users/__tests__/users-plugin.test.js.map +1 -0
  78. package/dist/plugins/users/index.d.ts +2 -2
  79. package/dist/plugins/users/index.d.ts.map +1 -1
  80. package/dist/plugins/users/index.js +1 -1
  81. package/dist/plugins/users/index.js.map +1 -1
  82. package/dist/plugins/users/types.d.ts +36 -0
  83. package/dist/plugins/users/types.d.ts.map +1 -1
  84. package/dist/plugins/users/users-plugin.d.ts +8 -2
  85. package/dist/plugins/users/users-plugin.d.ts.map +1 -1
  86. package/dist/plugins/users/users-plugin.js +122 -5
  87. package/dist/plugins/users/users-plugin.js.map +1 -1
  88. package/dist-ui/assets/{index-Bsp2ntcw.js → index-BY8OxNgO.js} +112 -112
  89. package/dist-ui/assets/index-BY8OxNgO.js.map +1 -0
  90. package/dist-ui/index.html +1 -1
  91. package/dist-ui-lib/api/controlPanelApi.d.ts +53 -7
  92. package/dist-ui-lib/dashboard/WidgetComponentRegistry.d.ts +9 -5
  93. package/dist-ui-lib/dashboard/builtInWidgets.d.ts +7 -1
  94. package/dist-ui-lib/index.js +2382 -3651
  95. package/dist-ui-lib/index.js.map +1 -1
  96. package/dist-ui-lib/pages/AuthPage.d.ts +1 -0
  97. package/dist-ui-lib/pages/PluginsPage.d.ts +1 -0
  98. package/package.json +7 -2
  99. package/src/core/control-panel.ts +33 -2
  100. package/src/core/plugin-registry.ts +63 -0
  101. package/src/index.ts +7 -0
  102. package/src/plugins/auth/adapters/index.ts +1 -0
  103. package/src/plugins/auth/adapters/supabase-adapter.ts +22 -14
  104. package/src/plugins/auth/adapters/supertokens-adapter.ts +326 -0
  105. package/src/plugins/auth/env-config.ts +572 -0
  106. package/src/plugins/auth/index.ts +9 -0
  107. package/src/plugins/auth/supertokens-adapter.test.ts +621 -0
  108. package/src/plugins/auth/types.ts +80 -0
  109. package/src/plugins/cache-plugin.test.ts +3 -0
  110. package/src/plugins/index.ts +26 -0
  111. package/src/plugins/postgres-plugin.test.ts +3 -0
  112. package/src/plugins/preferences/__tests__/deep-merge.test.ts +242 -0
  113. package/src/plugins/preferences/__tests__/preferences-plugin.test.ts +350 -0
  114. package/src/plugins/preferences/index.ts +30 -0
  115. package/src/plugins/preferences/preferences-plugin.ts +270 -0
  116. package/src/plugins/preferences/stores/index.ts +9 -0
  117. package/src/plugins/preferences/stores/postgres-store.ts +252 -0
  118. package/src/plugins/preferences/types.ts +100 -0
  119. package/src/plugins/users/__tests__/users-plugin.test.ts +690 -0
  120. package/src/plugins/users/index.ts +3 -0
  121. package/src/plugins/users/types.ts +38 -0
  122. package/src/plugins/users/users-plugin.ts +142 -5
  123. package/ui/src/App.tsx +4 -1
  124. package/ui/src/api/controlPanelApi.ts +100 -1
  125. package/ui/src/components/ControlPanelApp.tsx +3 -0
  126. package/ui/src/dashboard/PluginWidgetRenderer.tsx +13 -10
  127. package/ui/src/dashboard/WidgetComponentRegistry.tsx +13 -9
  128. package/ui/src/dashboard/builtInWidgets.tsx +8 -2
  129. package/ui/src/pages/AuthPage.tsx +259 -0
  130. package/ui/src/pages/PluginsPage.tsx +394 -0
  131. package/ui/vite.lib.config.ts +5 -0
  132. package/dist-ui/assets/index-Bsp2ntcw.js.map +0 -1
@@ -0,0 +1,486 @@
1
+ /**
2
+ * Supertokens Adapter Tests
3
+ *
4
+ * Unit tests for the Supertokens authentication adapter.
5
+ * Tests against supertokens-node v20+ API.
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
10
+ import { supertokensAdapter } from './adapters/supertokens-adapter.js';
11
+ // Mock Supertokens modules
12
+ vi.mock('supertokens-node', () => ({
13
+ default: {
14
+ init: vi.fn(),
15
+ getUser: vi.fn(),
16
+ },
17
+ }));
18
+ vi.mock('supertokens-node/recipe/session', () => ({
19
+ default: {
20
+ init: vi.fn(),
21
+ getSession: vi.fn(),
22
+ },
23
+ }));
24
+ vi.mock('supertokens-node/recipe/emailpassword', () => ({
25
+ default: {
26
+ init: vi.fn(),
27
+ },
28
+ }));
29
+ vi.mock('supertokens-node/recipe/thirdparty', () => ({
30
+ default: {
31
+ init: vi.fn(),
32
+ },
33
+ }));
34
+ vi.mock('supertokens-node/framework/express', () => ({
35
+ middleware: vi.fn(() => (_req, _res, next) => next()),
36
+ errorHandler: vi.fn(() => (_req, _res, next) => next()),
37
+ }));
38
+ // Mock request/response helpers
39
+ function createMockRequest(overrides = {}) {
40
+ return {
41
+ headers: {},
42
+ cookies: {},
43
+ path: '/',
44
+ originalUrl: '/',
45
+ ...overrides,
46
+ };
47
+ }
48
+ function createMockResponse() {
49
+ const res = {
50
+ status: vi.fn().mockReturnThis(),
51
+ json: vi.fn().mockReturnThis(),
52
+ setHeader: vi.fn().mockReturnThis(),
53
+ redirect: vi.fn().mockReturnThis(),
54
+ };
55
+ return res;
56
+ }
57
+ describe('supertokensAdapter', () => {
58
+ const validConfig = {
59
+ connectionUri: 'http://localhost:3567',
60
+ appName: 'Test App',
61
+ apiDomain: 'http://localhost:3000',
62
+ websiteDomain: 'http://localhost:3000',
63
+ };
64
+ let adapter;
65
+ beforeEach(() => {
66
+ vi.clearAllMocks();
67
+ adapter = supertokensAdapter(validConfig);
68
+ });
69
+ afterEach(() => {
70
+ vi.resetModules();
71
+ });
72
+ describe('name', () => {
73
+ it('should return "supertokens"', () => {
74
+ expect(adapter.name).toBe('supertokens');
75
+ });
76
+ });
77
+ describe('initialize', () => {
78
+ it('should return an array of middlewares', () => {
79
+ const middlewares = adapter.initialize();
80
+ expect(Array.isArray(middlewares)).toBe(true);
81
+ expect(middlewares).toHaveLength(2); // init middleware + supertokens middleware
82
+ });
83
+ it('should store response on request for later use', async () => {
84
+ const middlewares = adapter.initialize();
85
+ const req = createMockRequest();
86
+ const res = createMockResponse();
87
+ const next = vi.fn();
88
+ // Apply first middleware (init)
89
+ await middlewares[0](req, res, next);
90
+ expect(req._supertokensRes).toBe(res);
91
+ expect(next).toHaveBeenCalled();
92
+ });
93
+ it('should initialize Supertokens SDK on first request', async () => {
94
+ const supertokens = await import('supertokens-node');
95
+ const middlewares = adapter.initialize();
96
+ const req = createMockRequest();
97
+ const res = createMockResponse();
98
+ const next = vi.fn();
99
+ await middlewares[0](req, res, next);
100
+ expect(supertokens.default.init).toHaveBeenCalledWith(expect.objectContaining({
101
+ framework: 'express',
102
+ appInfo: expect.objectContaining({
103
+ appName: 'Test App',
104
+ apiDomain: 'http://localhost:3000',
105
+ websiteDomain: 'http://localhost:3000',
106
+ apiBasePath: '/auth',
107
+ websiteBasePath: '/auth',
108
+ }),
109
+ }));
110
+ });
111
+ it('should use custom apiBasePath when provided', async () => {
112
+ const supertokens = await import('supertokens-node');
113
+ const customAdapter = supertokensAdapter({
114
+ ...validConfig,
115
+ apiBasePath: '/api/auth',
116
+ websiteBasePath: '/auth-ui',
117
+ });
118
+ const middlewares = customAdapter.initialize();
119
+ const req = createMockRequest();
120
+ const res = createMockResponse();
121
+ const next = vi.fn();
122
+ await middlewares[0](req, res, next);
123
+ expect(supertokens.default.init).toHaveBeenCalledWith(expect.objectContaining({
124
+ appInfo: expect.objectContaining({
125
+ apiBasePath: '/api/auth',
126
+ websiteBasePath: '/auth-ui',
127
+ }),
128
+ }));
129
+ });
130
+ it('should initialize EmailPassword recipe by default', async () => {
131
+ const EmailPassword = await import('supertokens-node/recipe/emailpassword');
132
+ const middlewares = adapter.initialize();
133
+ const req = createMockRequest();
134
+ const res = createMockResponse();
135
+ const next = vi.fn();
136
+ await middlewares[0](req, res, next);
137
+ expect(EmailPassword.default.init).toHaveBeenCalled();
138
+ });
139
+ it('should initialize ThirdParty recipe when social providers configured', async () => {
140
+ const ThirdParty = await import('supertokens-node/recipe/thirdparty');
141
+ const adapterWithProviders = supertokensAdapter({
142
+ ...validConfig,
143
+ socialProviders: {
144
+ google: { clientId: 'google-id', clientSecret: 'google-secret' },
145
+ },
146
+ });
147
+ const middlewares = adapterWithProviders.initialize();
148
+ const req = createMockRequest();
149
+ const res = createMockResponse();
150
+ const next = vi.fn();
151
+ await middlewares[0](req, res, next);
152
+ expect(ThirdParty.default.init).toHaveBeenCalledWith(expect.objectContaining({
153
+ signInAndUpFeature: expect.objectContaining({
154
+ providers: expect.arrayContaining([
155
+ expect.objectContaining({
156
+ config: expect.objectContaining({
157
+ thirdPartyId: 'google',
158
+ }),
159
+ }),
160
+ ]),
161
+ }),
162
+ }));
163
+ });
164
+ });
165
+ describe('isAuthenticated', () => {
166
+ it('should return true when session cookie exists', () => {
167
+ const req = createMockRequest({
168
+ cookies: { sAccessToken: 'some-token' },
169
+ });
170
+ expect(adapter.isAuthenticated(req)).toBe(true);
171
+ });
172
+ it('should return true when refresh token exists', () => {
173
+ const req = createMockRequest({
174
+ cookies: { sRefreshToken: 'refresh-token' },
175
+ });
176
+ expect(adapter.isAuthenticated(req)).toBe(true);
177
+ });
178
+ it('should return true when Authorization header exists', () => {
179
+ const req = createMockRequest({
180
+ headers: { authorization: 'Bearer some-token' },
181
+ });
182
+ expect(adapter.isAuthenticated(req)).toBe(true);
183
+ });
184
+ it('should return false when no auth credentials exist', () => {
185
+ const req = createMockRequest();
186
+ expect(adapter.isAuthenticated(req)).toBe(false);
187
+ });
188
+ it('should return true when user is cached on request', () => {
189
+ const req = createMockRequest();
190
+ req._supertokensUser = { id: 'user-123', email: 'test@example.com' };
191
+ expect(adapter.isAuthenticated(req)).toBe(true);
192
+ });
193
+ it('should return true when session is cached on request', () => {
194
+ const req = createMockRequest();
195
+ req._supertokensSession = { getUserId: () => 'user-123' };
196
+ expect(adapter.isAuthenticated(req)).toBe(true);
197
+ });
198
+ });
199
+ describe('getUser', () => {
200
+ beforeEach(async () => {
201
+ // Initialize adapter to set initialized = true
202
+ const middlewares = adapter.initialize();
203
+ const req = createMockRequest();
204
+ const res = createMockResponse();
205
+ const next = vi.fn();
206
+ await middlewares[0](req, res, next);
207
+ });
208
+ it('should return cached user if available', async () => {
209
+ const cachedUser = {
210
+ id: 'user-123',
211
+ email: 'test@example.com',
212
+ name: 'Test User',
213
+ };
214
+ const req = createMockRequest();
215
+ req._supertokensUser = cachedUser;
216
+ req._supertokensRes = createMockResponse();
217
+ const user = await adapter.getUser(req);
218
+ expect(user).toEqual(cachedUser);
219
+ });
220
+ it('should return null when response is not stored on request', async () => {
221
+ const req = createMockRequest();
222
+ const user = await adapter.getUser(req);
223
+ expect(user).toBeNull();
224
+ });
225
+ it('should return null when no session exists', async () => {
226
+ const Session = await import('supertokens-node/recipe/session');
227
+ vi.mocked(Session.default.getSession).mockResolvedValue(null);
228
+ const req = createMockRequest();
229
+ req._supertokensRes = createMockResponse();
230
+ const user = await adapter.getUser(req);
231
+ expect(user).toBeNull();
232
+ });
233
+ it('should return AuthenticatedUser when session is valid', async () => {
234
+ const Session = await import('supertokens-node/recipe/session');
235
+ const supertokens = await import('supertokens-node');
236
+ const mockSession = {
237
+ getUserId: vi.fn().mockReturnValue('user-123'),
238
+ getHandle: vi.fn().mockReturnValue('session-handle'),
239
+ getAccessTokenPayload: vi.fn().mockReturnValue({ roles: ['admin'] }),
240
+ };
241
+ const mockUserInfo = {
242
+ emails: ['test@example.com'],
243
+ thirdParty: [],
244
+ };
245
+ vi.mocked(Session.default.getSession).mockResolvedValue(mockSession);
246
+ vi.mocked(supertokens.default.getUser).mockResolvedValue(mockUserInfo);
247
+ const req = createMockRequest();
248
+ req._supertokensRes = createMockResponse();
249
+ const user = await adapter.getUser(req);
250
+ expect(user).toEqual({
251
+ id: 'user-123',
252
+ email: 'test@example.com',
253
+ name: 'test',
254
+ picture: undefined,
255
+ emailVerified: true,
256
+ roles: ['admin'],
257
+ raw: expect.objectContaining({
258
+ sessionHandle: 'session-handle',
259
+ }),
260
+ });
261
+ });
262
+ it('should cache user on request object', async () => {
263
+ const Session = await import('supertokens-node/recipe/session');
264
+ const supertokens = await import('supertokens-node');
265
+ const mockSession = {
266
+ getUserId: vi.fn().mockReturnValue('user-123'),
267
+ getHandle: vi.fn().mockReturnValue('session-handle'),
268
+ getAccessTokenPayload: vi.fn().mockReturnValue({}),
269
+ };
270
+ const mockUserInfo = {
271
+ emails: ['test@example.com'],
272
+ thirdParty: [],
273
+ };
274
+ vi.mocked(Session.default.getSession).mockResolvedValue(mockSession);
275
+ vi.mocked(supertokens.default.getUser).mockResolvedValue(mockUserInfo);
276
+ const req = createMockRequest();
277
+ req._supertokensRes = createMockResponse();
278
+ await adapter.getUser(req);
279
+ expect(req._supertokensUser).toBeDefined();
280
+ expect(req._supertokensUser?.id).toBe('user-123');
281
+ });
282
+ it('should return null and handle errors gracefully', async () => {
283
+ const Session = await import('supertokens-node/recipe/session');
284
+ vi.mocked(Session.default.getSession).mockRejectedValue(new Error('Session error'));
285
+ const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
286
+ const req = createMockRequest();
287
+ req._supertokensRes = createMockResponse();
288
+ const user = await adapter.getUser(req);
289
+ expect(user).toBeNull();
290
+ expect(consoleSpy).toHaveBeenCalled();
291
+ consoleSpy.mockRestore();
292
+ });
293
+ });
294
+ describe('hasRoles', () => {
295
+ it('should return true if user has the role', () => {
296
+ const req = createMockRequest();
297
+ req._supertokensUser = {
298
+ id: 'user-123',
299
+ email: 'test@example.com',
300
+ roles: ['admin', 'user'],
301
+ };
302
+ expect(adapter.hasRoles(req, ['admin'])).toBe(true);
303
+ });
304
+ it('should return true if user has all required roles', () => {
305
+ const req = createMockRequest();
306
+ req._supertokensUser = {
307
+ id: 'user-123',
308
+ email: 'test@example.com',
309
+ roles: ['admin', 'user', 'editor'],
310
+ };
311
+ expect(adapter.hasRoles(req, ['admin', 'editor'])).toBe(true);
312
+ });
313
+ it('should return false if user does not have the role', () => {
314
+ const req = createMockRequest();
315
+ req._supertokensUser = {
316
+ id: 'user-123',
317
+ email: 'test@example.com',
318
+ roles: ['user'],
319
+ };
320
+ expect(adapter.hasRoles(req, ['admin'])).toBe(false);
321
+ });
322
+ it('should return false if user has no roles', () => {
323
+ const req = createMockRequest();
324
+ req._supertokensUser = {
325
+ id: 'user-123',
326
+ email: 'test@example.com',
327
+ };
328
+ expect(adapter.hasRoles(req, ['admin'])).toBe(false);
329
+ });
330
+ it('should return false if no user on request', () => {
331
+ const req = createMockRequest();
332
+ expect(adapter.hasRoles(req, ['admin'])).toBe(false);
333
+ });
334
+ });
335
+ describe('getAccessToken', () => {
336
+ it('should return null (session-based auth)', () => {
337
+ const req = createMockRequest({
338
+ cookies: { sAccessToken: 'some-token' },
339
+ });
340
+ expect(adapter.getAccessToken(req)).toBeNull();
341
+ });
342
+ });
343
+ describe('onUnauthorized', () => {
344
+ it('should return 401 with JSON response', () => {
345
+ const req = createMockRequest();
346
+ const res = createMockResponse();
347
+ adapter.onUnauthorized(req, res);
348
+ expect(res.status).toHaveBeenCalledWith(401);
349
+ expect(res.json).toHaveBeenCalledWith({
350
+ error: 'Unauthorized',
351
+ message: 'Authentication required. Please sign in.',
352
+ hint: 'Use the /auth endpoints to authenticate',
353
+ });
354
+ });
355
+ });
356
+ describe('shutdown', () => {
357
+ it('should resolve without error', async () => {
358
+ await expect(adapter.shutdown()).resolves.toBeUndefined();
359
+ });
360
+ it('should reset initialization state', async () => {
361
+ // First initialize
362
+ const middlewares = adapter.initialize();
363
+ const req = createMockRequest();
364
+ const res = createMockResponse();
365
+ const next = vi.fn();
366
+ await middlewares[0](req, res, next);
367
+ // Shutdown
368
+ await adapter.shutdown();
369
+ // After shutdown, getUser should return null (not initialized)
370
+ const user = await adapter.getUser(createMockRequest());
371
+ expect(user).toBeNull();
372
+ });
373
+ });
374
+ describe('configuration', () => {
375
+ it('should pass apiKey to Supertokens when provided', async () => {
376
+ const supertokens = await import('supertokens-node');
377
+ const adapterWithApiKey = supertokensAdapter({
378
+ ...validConfig,
379
+ apiKey: 'my-api-key',
380
+ });
381
+ const middlewares = adapterWithApiKey.initialize();
382
+ const req = createMockRequest();
383
+ const res = createMockResponse();
384
+ const next = vi.fn();
385
+ await middlewares[0](req, res, next);
386
+ expect(supertokens.default.init).toHaveBeenCalledWith(expect.objectContaining({
387
+ supertokens: expect.objectContaining({
388
+ apiKey: 'my-api-key',
389
+ }),
390
+ }));
391
+ });
392
+ it('should not initialize EmailPassword when disabled', async () => {
393
+ const EmailPassword = await import('supertokens-node/recipe/emailpassword');
394
+ const adapterNoEmail = supertokensAdapter({
395
+ ...validConfig,
396
+ enableEmailPassword: false,
397
+ });
398
+ const middlewares = adapterNoEmail.initialize();
399
+ const req = createMockRequest();
400
+ const res = createMockResponse();
401
+ const next = vi.fn();
402
+ await middlewares[0](req, res, next);
403
+ expect(EmailPassword.default.init).not.toHaveBeenCalled();
404
+ });
405
+ it('should configure multiple social providers', async () => {
406
+ const ThirdParty = await import('supertokens-node/recipe/thirdparty');
407
+ const adapterWithProviders = supertokensAdapter({
408
+ ...validConfig,
409
+ socialProviders: {
410
+ google: { clientId: 'google-id', clientSecret: 'google-secret' },
411
+ github: { clientId: 'github-id', clientSecret: 'github-secret' },
412
+ },
413
+ });
414
+ const middlewares = adapterWithProviders.initialize();
415
+ const req = createMockRequest();
416
+ const res = createMockResponse();
417
+ const next = vi.fn();
418
+ await middlewares[0](req, res, next);
419
+ expect(ThirdParty.default.init).toHaveBeenCalledWith(expect.objectContaining({
420
+ signInAndUpFeature: expect.objectContaining({
421
+ providers: expect.arrayContaining([
422
+ expect.objectContaining({
423
+ config: expect.objectContaining({
424
+ thirdPartyId: 'google',
425
+ }),
426
+ }),
427
+ expect.objectContaining({
428
+ config: expect.objectContaining({
429
+ thirdPartyId: 'github',
430
+ }),
431
+ }),
432
+ ]),
433
+ }),
434
+ }));
435
+ });
436
+ });
437
+ });
438
+ describe('supertokensAdapter edge cases', () => {
439
+ it('should handle missing cookies object', () => {
440
+ const adapter = supertokensAdapter({
441
+ connectionUri: 'http://localhost:3567',
442
+ appName: 'Test',
443
+ apiDomain: 'http://localhost:3000',
444
+ websiteDomain: 'http://localhost:3000',
445
+ });
446
+ const req = {
447
+ headers: {},
448
+ path: '/',
449
+ originalUrl: '/',
450
+ };
451
+ expect(adapter.isAuthenticated(req)).toBe(false);
452
+ });
453
+ it('should handle empty user emails array', async () => {
454
+ const adapter = supertokensAdapter({
455
+ connectionUri: 'http://localhost:3567',
456
+ appName: 'Test',
457
+ apiDomain: 'http://localhost:3000',
458
+ websiteDomain: 'http://localhost:3000',
459
+ });
460
+ // Initialize first
461
+ const middlewares = adapter.initialize();
462
+ const initReq = createMockRequest();
463
+ const initRes = createMockResponse();
464
+ await middlewares[0](initReq, initRes, vi.fn());
465
+ const Session = await import('supertokens-node/recipe/session');
466
+ const supertokens = await import('supertokens-node');
467
+ const mockSession = {
468
+ getUserId: vi.fn().mockReturnValue('user-123'),
469
+ getHandle: vi.fn().mockReturnValue('session-handle'),
470
+ getAccessTokenPayload: vi.fn().mockReturnValue({}),
471
+ };
472
+ const mockUserInfo = {
473
+ emails: [],
474
+ thirdParty: [{ userId: 'google-user-id' }],
475
+ };
476
+ vi.mocked(Session.default.getSession).mockResolvedValue(mockSession);
477
+ vi.mocked(supertokens.default.getUser).mockResolvedValue(mockUserInfo);
478
+ const req = createMockRequest();
479
+ req._supertokensRes = createMockResponse();
480
+ const user = await adapter.getUser(req);
481
+ expect(user?.email).toBe('');
482
+ expect(user?.name).toBe('google-user-id');
483
+ expect(user?.emailVerified).toBe(false);
484
+ });
485
+ });
486
+ //# sourceMappingURL=supertokens-adapter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supertokens-adapter.test.js","sourceRoot":"","sources":["../../../src/plugins/auth/supertokens-adapter.test.ts"],"names":[],"mappings":"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"}
@@ -113,6 +113,44 @@ export interface BasicAdapterConfig {
113
113
  /** Realm name for the WWW-Authenticate header */
114
114
  realm?: string;
115
115
  }
116
+ /**
117
+ * Supertokens adapter configuration
118
+ */
119
+ export interface SupertokensAdapterConfig {
120
+ /** Supertokens connection URI (e.g., 'http://localhost:3567') */
121
+ connectionUri: string;
122
+ /** Supertokens API key (for managed service) */
123
+ apiKey?: string;
124
+ /** App name for branding */
125
+ appName: string;
126
+ /** API domain (e.g., 'http://localhost:3000') */
127
+ apiDomain: string;
128
+ /** Website domain (e.g., 'http://localhost:3000') */
129
+ websiteDomain: string;
130
+ /** API base path (default: '/auth') */
131
+ apiBasePath?: string;
132
+ /** Website base path (default: '/auth') */
133
+ websiteBasePath?: string;
134
+ /** Enable email/password auth (default: true) */
135
+ enableEmailPassword?: boolean;
136
+ /** Social login providers */
137
+ socialProviders?: {
138
+ google?: {
139
+ clientId: string;
140
+ clientSecret: string;
141
+ };
142
+ apple?: {
143
+ clientId: string;
144
+ clientSecret: string;
145
+ keyId: string;
146
+ teamId: string;
147
+ };
148
+ github?: {
149
+ clientId: string;
150
+ clientSecret: string;
151
+ };
152
+ };
153
+ }
116
154
  /**
117
155
  * Auth plugin configuration
118
156
  */
@@ -145,4 +183,36 @@ export interface AuthenticatedRequest extends Request {
145
183
  * Helper type guard for authenticated requests
146
184
  */
147
185
  export declare function isAuthenticatedRequest(req: Request): req is AuthenticatedRequest;
186
+ /**
187
+ * Auth plugin state
188
+ */
189
+ export type AuthPluginState = 'disabled' | 'enabled' | 'error';
190
+ /**
191
+ * Options for createAuthPluginFromEnv (overrides only)
192
+ */
193
+ export interface AuthEnvPluginOptions {
194
+ /** Paths to exclude from authentication (can also use AUTH_EXCLUDE_PATHS env var) */
195
+ excludePaths?: string[];
196
+ /** Whether auth is required (can also use AUTH_REQUIRED env var, default: true) */
197
+ authRequired?: boolean;
198
+ /** Enable debug logging (can also use AUTH_DEBUG env var) */
199
+ debug?: boolean;
200
+ /** Custom unauthorized handler */
201
+ onUnauthorized?: (req: Request, res: Response) => void;
202
+ }
203
+ /**
204
+ * Auth configuration status returned by getAuthStatus()
205
+ */
206
+ export interface AuthConfigStatus {
207
+ /** Current plugin state */
208
+ state: AuthPluginState;
209
+ /** Active adapter name (null if disabled or error) */
210
+ adapter: string | null;
211
+ /** Error message if state is 'error' */
212
+ error?: string;
213
+ /** List of missing environment variables if state is 'error' */
214
+ missingVars?: string[];
215
+ /** Current configuration with secrets masked */
216
+ config?: Record<string, string>;
217
+ }
148
218
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/auth/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyJH;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,OAAO,MAAM,IAAI,GAAG,IAAK,GAA4B,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/auth/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkMH;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,OAAO,MAAM,IAAI,GAAG,IAAK,GAA4B,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;AACvF,CAAC"}
@@ -67,10 +67,13 @@ describe('Cache Plugin', () => {
67
67
  addMenuItem: vi.fn(),
68
68
  addPage: vi.fn(),
69
69
  addWidget: vi.fn(),
70
+ addConfigComponent: vi.fn(),
70
71
  getRoutes: vi.fn().mockReturnValue([]),
71
72
  getMenuItems: vi.fn().mockReturnValue([]),
72
73
  getPages: vi.fn().mockReturnValue([]),
73
74
  getWidgets: vi.fn().mockReturnValue([]),
75
+ getConfigComponents: vi.fn().mockReturnValue([]),
76
+ getPluginContributions: vi.fn().mockReturnValue({ routes: [], menuItems: [], pages: [], widgets: [], config: undefined }),
74
77
  getConfig: vi.fn().mockReturnValue({}),
75
78
  setConfig: vi.fn().mockResolvedValue(undefined),
76
79
  subscribe: vi.fn().mockReturnValue(() => { }),