nestlens 0.4.1 → 0.4.2

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 (80) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/api/dashboard.controller.spec.js +103 -419
  3. package/dist/__tests__/api/dashboard.controller.spec.js.map +1 -1
  4. package/dist/__tests__/docs-consistency.spec.d.ts +2 -0
  5. package/dist/__tests__/docs-consistency.spec.d.ts.map +1 -0
  6. package/dist/__tests__/docs-consistency.spec.js +74 -0
  7. package/dist/__tests__/docs-consistency.spec.js.map +1 -0
  8. package/dist/__tests__/integration/adapter-compat.integration.spec.d.ts +2 -0
  9. package/dist/__tests__/integration/adapter-compat.integration.spec.d.ts.map +1 -0
  10. package/dist/__tests__/integration/adapter-compat.integration.spec.js +139 -0
  11. package/dist/__tests__/integration/adapter-compat.integration.spec.js.map +1 -0
  12. package/dist/__tests__/integration/schedule-watcher.integration.spec.d.ts +2 -0
  13. package/dist/__tests__/integration/schedule-watcher.integration.spec.d.ts.map +1 -0
  14. package/dist/__tests__/integration/schedule-watcher.integration.spec.js +87 -0
  15. package/dist/__tests__/integration/schedule-watcher.integration.spec.js.map +1 -0
  16. package/dist/__tests__/integration/watcher-coexistence.integration.spec.d.ts +2 -0
  17. package/dist/__tests__/integration/watcher-coexistence.integration.spec.d.ts.map +1 -0
  18. package/dist/__tests__/integration/watcher-coexistence.integration.spec.js +88 -0
  19. package/dist/__tests__/integration/watcher-coexistence.integration.spec.js.map +1 -0
  20. package/dist/__tests__/watchers/exception.watcher.spec.js +10 -0
  21. package/dist/__tests__/watchers/exception.watcher.spec.js.map +1 -1
  22. package/dist/__tests__/watchers/request.watcher.spec.js +30 -0
  23. package/dist/__tests__/watchers/request.watcher.spec.js.map +1 -1
  24. package/dist/__tests__/watchers/schedule.watcher.spec.js +32 -27
  25. package/dist/__tests__/watchers/schedule.watcher.spec.js.map +1 -1
  26. package/dist/api/dashboard.controller.d.ts +51 -43
  27. package/dist/api/dashboard.controller.d.ts.map +1 -1
  28. package/dist/api/dashboard.controller.js +222 -248
  29. package/dist/api/dashboard.controller.js.map +1 -1
  30. package/dist/api/filters/api-exception.filter.d.ts +3 -0
  31. package/dist/api/filters/api-exception.filter.d.ts.map +1 -1
  32. package/dist/api/filters/api-exception.filter.js +9 -3
  33. package/dist/api/filters/api-exception.filter.js.map +1 -1
  34. package/dist/dashboard/public/assets/{BatchesPage-DrFl64wj.js → BatchesPage-BqqMGRhb.js} +1 -1
  35. package/dist/dashboard/public/assets/{CachePage-C57Pkxm0.js → CachePage-4XesQGrB.js} +1 -1
  36. package/dist/dashboard/public/assets/{ClickableBadge-BNUq-FXI.js → ClickableBadge-CULXhkUR.js} +1 -1
  37. package/dist/dashboard/public/assets/{CommandsPage-BdD-ojDk.js → CommandsPage-qA9zZJLY.js} +1 -1
  38. package/dist/dashboard/public/assets/{DashboardPage-DCophLiw.js → DashboardPage-6gpSO6p8.js} +1 -1
  39. package/dist/dashboard/public/assets/{DumpsPage-DtXeYPpQ.js → DumpsPage-BJUH8RX8.js} +1 -1
  40. package/dist/dashboard/public/assets/{EntryDetailPage-qlWzdnXs.js → EntryDetailPage-BybD_jd2.js} +1 -1
  41. package/dist/dashboard/public/assets/{EventsPage-BHpLjHZj.js → EventsPage-Bk5E2ZLC.js} +1 -1
  42. package/dist/dashboard/public/assets/{ExceptionsPage-Ww3jIO29.js → ExceptionsPage-eCyE84NP.js} +1 -1
  43. package/dist/dashboard/public/assets/{GatesPage-beRehq6b.js → GatesPage-CE9Sa3BN.js} +1 -1
  44. package/dist/dashboard/public/assets/{GraphQLPage-BZt0nDmS.js → GraphQLPage-B2XmilbU.js} +1 -1
  45. package/dist/dashboard/public/assets/{HttpClientPage-Dac8U41f.js → HttpClientPage-DMdyMJmo.js} +1 -1
  46. package/dist/dashboard/public/assets/{JobsPage-zLQH5Skv.js → JobsPage-Cza23TpJ.js} +1 -1
  47. package/dist/dashboard/public/assets/{LogsPage-Dj7YEZlz.js → LogsPage-BfFjxmzL.js} +1 -1
  48. package/dist/dashboard/public/assets/{MailPage-C45lv85q.js → MailPage-C7qOueDJ.js} +1 -1
  49. package/dist/dashboard/public/assets/{ModelsPage-CveFVTw3.js → ModelsPage-CdnaDoYH.js} +1 -1
  50. package/dist/dashboard/public/assets/{NotificationsPage-CVAGh1SG.js → NotificationsPage-t0AlQJeY.js} +1 -1
  51. package/dist/dashboard/public/assets/{PageHeader-BhUyZtbe.js → PageHeader-CcbxBdii.js} +1 -1
  52. package/dist/dashboard/public/assets/{QueriesPage-BMpvUeTX.js → QueriesPage-Da9Zl09P.js} +1 -1
  53. package/dist/dashboard/public/assets/{RedisPage-FPrKgNrc.js → RedisPage-C8Elpfq1.js} +1 -1
  54. package/dist/dashboard/public/assets/{RequestsPage-6JVqr7xE.js → RequestsPage-Bobnh4sB.js} +1 -1
  55. package/dist/dashboard/public/assets/{SchedulePage-DOt6jqTT.js → SchedulePage-vBUwBEW5.js} +1 -1
  56. package/dist/dashboard/public/assets/{ViewsPage-RG6Ze2rn.js → ViewsPage-DO70tKip.js} +1 -1
  57. package/dist/dashboard/public/assets/{calendar-CEjtgImi.js → calendar-36iGdS4K.js} +1 -1
  58. package/dist/dashboard/public/assets/{circle-check-big-BnRBDUDo.js → circle-check-big--KQSq_oR.js} +1 -1
  59. package/dist/dashboard/public/assets/{eye-tfj-u8EL.js → eye-B9uY1FJW.js} +1 -1
  60. package/dist/dashboard/public/assets/{index-OMQZjJAo.js → index-C1yiPBCx.js} +2 -2
  61. package/dist/dashboard/public/assets/{types-Cubd9hBF.js → types-DM4HdBI5.js} +1 -1
  62. package/dist/dashboard/public/assets/{zap-Bh7DgMLC.js → zap-ChtSEZU9.js} +1 -1
  63. package/dist/dashboard/public/index.html +1 -1
  64. package/dist/nestlens.module.d.ts.map +1 -1
  65. package/dist/nestlens.module.js +20 -2
  66. package/dist/nestlens.module.js.map +1 -1
  67. package/dist/watchers/exception.watcher.d.ts +5 -2
  68. package/dist/watchers/exception.watcher.d.ts.map +1 -1
  69. package/dist/watchers/exception.watcher.js +22 -10
  70. package/dist/watchers/exception.watcher.js.map +1 -1
  71. package/dist/watchers/graphql/graphql.watcher.d.ts +1 -1
  72. package/dist/watchers/request.watcher.d.ts +4 -1
  73. package/dist/watchers/request.watcher.d.ts.map +1 -1
  74. package/dist/watchers/request.watcher.js +24 -8
  75. package/dist/watchers/request.watcher.js.map +1 -1
  76. package/dist/watchers/schedule.watcher.d.ts +8 -8
  77. package/dist/watchers/schedule.watcher.d.ts.map +1 -1
  78. package/dist/watchers/schedule.watcher.js +30 -13
  79. package/dist/watchers/schedule.watcher.js.map +1 -1
  80. package/package.json +6 -2
package/README.md CHANGED
@@ -54,7 +54,7 @@ Watch requests, queries, and exceptions as they happen. No more console.log debu
54
54
 
55
55
  ### ✨ Zero Configuration
56
56
 
57
- Import and go. Auto-detects TypeORM, Prisma, Bull, and more. No setup required.
57
+ Import and go. Works with Express & Fastify. Auto-detects TypeORM, Prisma, Bull, and more.
58
58
 
59
59
  </td>
60
60
  <td width="33%" valign="top">
@@ -1,41 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const testing_1 = require("@nestjs/testing");
4
+ const common_1 = require("@nestjs/common");
4
5
  const dashboard_controller_1 = require("../../api/dashboard.controller");
5
6
  const nestlens_config_1 = require("../../nestlens.config");
6
- // Mock fs module
7
- jest.mock('fs', () => ({
8
- existsSync: jest.fn(),
9
- }));
7
+ // Mock fs module (createReadStream returns a real Readable so StreamableFile accepts it)
8
+ jest.mock('fs', () => {
9
+ const { Readable } = require('stream');
10
+ return {
11
+ existsSync: jest.fn(),
12
+ createReadStream: jest.fn(() => Readable.from(['<html></html>'])),
13
+ readFileSync: jest.fn(() => Buffer.from('<html></html>')),
14
+ };
15
+ });
10
16
  const fs_1 = require("fs");
11
17
  describe('DashboardController', () => {
12
18
  let controller;
13
19
  let mockConfig;
14
- let mockRequest;
15
- let mockResponse;
16
20
  beforeEach(async () => {
17
- // Arrange
18
- mockConfig = {
19
- enabled: true,
20
- };
21
- mockRequest = {
22
- originalUrl: '/nestlens/',
23
- };
24
- mockResponse = {
25
- redirect: jest.fn().mockReturnThis(),
26
- sendFile: jest.fn().mockReturnThis(),
27
- status: jest.fn().mockReturnThis(),
28
- json: jest.fn().mockReturnThis(),
29
- };
21
+ mockConfig = { enabled: true };
30
22
  fs_1.existsSync.mockReset();
23
+ fs_1.existsSync.mockReturnValue(true);
31
24
  const module = await testing_1.Test.createTestingModule({
32
25
  controllers: [dashboard_controller_1.DashboardController],
33
- providers: [
34
- {
35
- provide: nestlens_config_1.NESTLENS_CONFIG,
36
- useValue: mockConfig,
37
- },
38
- ],
26
+ providers: [{ provide: nestlens_config_1.NESTLENS_CONFIG, useValue: mockConfig }],
39
27
  }).compile();
40
28
  controller = module.get(dashboard_controller_1.DashboardController);
41
29
  });
@@ -44,431 +32,127 @@ describe('DashboardController', () => {
44
32
  });
45
33
  describe('constructor', () => {
46
34
  it('should be defined', () => {
47
- // Assert
48
35
  expect(controller).toBeDefined();
49
36
  });
50
37
  it('should set dashboard path correctly', () => {
51
- // Assert
52
38
  expect(controller['dashboardPath']).toContain('dashboard');
53
39
  expect(controller['dashboardPath']).toContain('public');
54
40
  });
55
41
  });
56
42
  describe('serveDashboard', () => {
57
- describe('URL Redirection', () => {
58
- it('should redirect to trailing slash when URL does not end with /', () => {
59
- // Arrange
60
- mockRequest.originalUrl = '/nestlens';
61
- fs_1.existsSync.mockReturnValue(true);
62
- // Act
63
- controller.serveDashboard(mockRequest, mockResponse);
64
- // Assert
65
- expect(mockResponse.redirect).toHaveBeenCalledWith(301, '/nestlens/');
66
- expect(mockResponse.sendFile).not.toHaveBeenCalled();
67
- });
68
- it('should not redirect when URL already ends with /', () => {
69
- // Arrange
70
- mockRequest.originalUrl = '/nestlens/';
71
- fs_1.existsSync.mockReturnValue(true);
72
- // Act
73
- controller.serveDashboard(mockRequest, mockResponse);
74
- // Assert
75
- expect(mockResponse.redirect).not.toHaveBeenCalled();
76
- expect(mockResponse.sendFile).toHaveBeenCalled();
77
- });
43
+ it('should serve index.html as a StreamableFile with the correct content type', () => {
44
+ const result = controller.serveDashboard();
45
+ expect(result).toBeInstanceOf(common_1.StreamableFile);
46
+ expect(result.getHeaders().type).toBe('text/html; charset=utf-8');
78
47
  });
79
- describe('File Serving', () => {
80
- it('should serve index.html when it exists', () => {
81
- // Arrange
82
- mockRequest.originalUrl = '/nestlens/';
83
- fs_1.existsSync.mockReturnValue(true);
84
- // Act
85
- controller.serveDashboard(mockRequest, mockResponse);
86
- // Assert
87
- expect(mockResponse.sendFile).toHaveBeenCalledWith('index.html', expect.objectContaining({ root: expect.stringContaining('dashboard') }));
88
- });
89
- it('should return 404 when index.html does not exist', () => {
90
- // Arrange
91
- mockRequest.originalUrl = '/nestlens/';
92
- fs_1.existsSync.mockReturnValue(false);
93
- // Act
94
- controller.serveDashboard(mockRequest, mockResponse);
95
- // Assert
96
- expect(mockResponse.status).toHaveBeenCalledWith(404);
97
- expect(mockResponse.json).toHaveBeenCalledWith({ error: 'Dashboard not found' });
98
- });
48
+ it('should throw NotFoundException when index.html does not exist', () => {
49
+ fs_1.existsSync.mockReturnValue(false);
50
+ expect(() => controller.serveDashboard()).toThrow(common_1.NotFoundException);
99
51
  });
100
52
  });
101
53
  describe('serveAssets', () => {
102
- it('should serve asset file when it exists', () => {
103
- // Arrange
104
- const filename = 'main.js';
105
- fs_1.existsSync.mockReturnValue(true);
106
- // Act
107
- controller.serveAssets(filename, mockResponse);
108
- // Assert
109
- expect(mockResponse.sendFile).toHaveBeenCalledWith(filename, expect.objectContaining({ root: expect.stringContaining('assets') }));
54
+ it('should return a StreamableFile when the asset exists', () => {
55
+ const result = controller.serveAssets('main.js');
56
+ expect(result).toBeInstanceOf(common_1.StreamableFile);
110
57
  });
111
- it('should return 404 when asset file does not exist', () => {
112
- // Arrange
113
- const filename = 'nonexistent.js';
114
- fs_1.existsSync.mockReturnValue(false);
115
- // Act
116
- controller.serveAssets(filename, mockResponse);
117
- // Assert
118
- expect(mockResponse.status).toHaveBeenCalledWith(404);
119
- expect(mockResponse.json).toHaveBeenCalledWith({ error: 'Asset not found' });
58
+ it('should set the JS content type', () => {
59
+ const result = controller.serveAssets('main.js');
60
+ expect(result.getHeaders().type).toBe('application/javascript; charset=utf-8');
120
61
  });
121
- it('should handle CSS files', () => {
122
- // Arrange
123
- const filename = 'styles.css';
124
- fs_1.existsSync.mockReturnValue(true);
125
- // Act
126
- controller.serveAssets(filename, mockResponse);
127
- // Assert
128
- expect(mockResponse.sendFile).toHaveBeenCalledWith(filename, expect.objectContaining({ root: expect.stringContaining('assets') }));
62
+ it('should set the CSS content type', () => {
63
+ const result = controller.serveAssets('styles.css');
64
+ expect(result.getHeaders().type).toBe('text/css; charset=utf-8');
129
65
  });
130
- it('should handle font files', () => {
131
- // Arrange
132
- const filename = 'font.woff2';
133
- fs_1.existsSync.mockReturnValue(true);
134
- // Act
135
- controller.serveAssets(filename, mockResponse);
136
- // Assert
137
- expect(mockResponse.sendFile).toHaveBeenCalledWith(filename, expect.objectContaining({ root: expect.stringContaining('assets') }));
66
+ it('should set the font content type', () => {
67
+ const result = controller.serveAssets('font.woff2');
68
+ expect(result.getHeaders().type).toBe('font/woff2');
138
69
  });
139
- });
140
- describe('serveStaticFile (SVG)', () => {
141
- it('should serve SVG file when it exists', () => {
142
- // Arrange
143
- const filename = 'favicon';
144
- fs_1.existsSync.mockReturnValue(true);
145
- // Act
146
- controller.serveStaticFile(filename, mockResponse);
147
- // Assert
148
- expect(mockResponse.sendFile).toHaveBeenCalledWith(`${filename}.svg`, expect.objectContaining({ root: expect.stringContaining('dashboard') }));
149
- });
150
- it('should return 404 when SVG file does not exist', () => {
151
- // Arrange
152
- const filename = 'nonexistent';
70
+ it('should throw NotFoundException when the asset does not exist', () => {
153
71
  fs_1.existsSync.mockReturnValue(false);
154
- // Act
155
- controller.serveStaticFile(filename, mockResponse);
156
- // Assert
157
- expect(mockResponse.status).toHaveBeenCalledWith(404);
158
- expect(mockResponse.json).toHaveBeenCalledWith({ error: 'File not found' });
159
- });
160
- it('should handle logo SVG', () => {
161
- // Arrange
162
- const filename = 'logo';
163
- fs_1.existsSync.mockReturnValue(true);
164
- // Act
165
- controller.serveStaticFile(filename, mockResponse);
166
- // Assert
167
- expect(mockResponse.sendFile).toHaveBeenCalledWith(`${filename}.svg`, expect.objectContaining({ root: expect.stringContaining('dashboard') }));
168
- });
169
- });
170
- describe('SPA Routes - List Views', () => {
171
- beforeEach(() => {
172
- fs_1.existsSync.mockReturnValue(true);
173
- });
174
- it('should serve index.html for /requests route', () => {
175
- // Act
176
- controller.serveRequestsRoute(mockResponse);
177
- // Assert
178
- expect(mockResponse.sendFile).toHaveBeenCalledWith('index.html', expect.objectContaining({ root: expect.stringContaining('dashboard') }));
179
- });
180
- it('should serve index.html for /queries route', () => {
181
- // Act
182
- controller.serveQueriesRoute(mockResponse);
183
- // Assert
184
- expect(mockResponse.sendFile).toHaveBeenCalled();
185
- });
186
- it('should serve index.html for /exceptions route', () => {
187
- // Act
188
- controller.serveExceptionsRoute(mockResponse);
189
- // Assert
190
- expect(mockResponse.sendFile).toHaveBeenCalled();
191
- });
192
- it('should serve index.html for /logs route', () => {
193
- // Act
194
- controller.serveLogsRoute(mockResponse);
195
- // Assert
196
- expect(mockResponse.sendFile).toHaveBeenCalled();
197
- });
198
- it('should serve index.html for /events route', () => {
199
- // Act
200
- controller.serveEventsRoute(mockResponse);
201
- // Assert
202
- expect(mockResponse.sendFile).toHaveBeenCalled();
203
- });
204
- it('should serve index.html for /jobs route', () => {
205
- // Act
206
- controller.serveJobsRoute(mockResponse);
207
- // Assert
208
- expect(mockResponse.sendFile).toHaveBeenCalled();
209
- });
210
- it('should serve index.html for /cache route', () => {
211
- // Act
212
- controller.serveCacheRoute(mockResponse);
213
- // Assert
214
- expect(mockResponse.sendFile).toHaveBeenCalled();
215
- });
216
- it('should serve index.html for /mail route', () => {
217
- // Act
218
- controller.serveMailRoute(mockResponse);
219
- // Assert
220
- expect(mockResponse.sendFile).toHaveBeenCalled();
221
- });
222
- it('should serve index.html for /schedule route', () => {
223
- // Act
224
- controller.serveScheduleRoute(mockResponse);
225
- // Assert
226
- expect(mockResponse.sendFile).toHaveBeenCalled();
227
- });
228
- it('should serve index.html for /http-client route', () => {
229
- // Act
230
- controller.serveHttpClientRoute(mockResponse);
231
- // Assert
232
- expect(mockResponse.sendFile).toHaveBeenCalled();
233
- });
234
- it('should serve index.html for /redis route', () => {
235
- // Act
236
- controller.serveRedisRoute(mockResponse);
237
- // Assert
238
- expect(mockResponse.sendFile).toHaveBeenCalled();
239
- });
240
- it('should serve index.html for /models route', () => {
241
- // Act
242
- controller.serveModelsRoute(mockResponse);
243
- // Assert
244
- expect(mockResponse.sendFile).toHaveBeenCalled();
245
- });
246
- it('should serve index.html for /notifications route', () => {
247
- // Act
248
- controller.serveNotificationsRoute(mockResponse);
249
- // Assert
250
- expect(mockResponse.sendFile).toHaveBeenCalled();
251
- });
252
- it('should serve index.html for /views route', () => {
253
- // Act
254
- controller.serveViewsRoute(mockResponse);
255
- // Assert
256
- expect(mockResponse.sendFile).toHaveBeenCalled();
257
- });
258
- it('should serve index.html for /commands route', () => {
259
- // Act
260
- controller.serveCommandsRoute(mockResponse);
261
- // Assert
262
- expect(mockResponse.sendFile).toHaveBeenCalled();
263
- });
264
- it('should serve index.html for /gates route', () => {
265
- // Act
266
- controller.serveGatesRoute(mockResponse);
267
- // Assert
268
- expect(mockResponse.sendFile).toHaveBeenCalled();
269
- });
270
- it('should serve index.html for /batches route', () => {
271
- // Act
272
- controller.serveBatchesRoute(mockResponse);
273
- // Assert
274
- expect(mockResponse.sendFile).toHaveBeenCalled();
275
- });
276
- it('should serve index.html for /dumps route', () => {
277
- // Act
278
- controller.serveDumpsRoute(mockResponse);
279
- // Assert
280
- expect(mockResponse.sendFile).toHaveBeenCalled();
72
+ expect(() => controller.serveAssets('nonexistent.js')).toThrow(common_1.NotFoundException);
281
73
  });
282
74
  });
283
- describe('SPA Routes - Detail Views', () => {
284
- beforeEach(() => {
285
- fs_1.existsSync.mockReturnValue(true);
286
- });
287
- it('should serve index.html for /entries/:id route', () => {
288
- // Act
289
- controller.serveEntryDetailRoute(mockResponse);
290
- // Assert
291
- expect(mockResponse.sendFile).toHaveBeenCalled();
292
- });
293
- it('should serve index.html for /requests/:id route', () => {
294
- // Act
295
- controller.serveRequestDetailRoute(mockResponse);
296
- // Assert
297
- expect(mockResponse.sendFile).toHaveBeenCalled();
298
- });
299
- it('should serve index.html for /queries/:id route', () => {
300
- // Act
301
- controller.serveQueryDetailRoute(mockResponse);
302
- // Assert
303
- expect(mockResponse.sendFile).toHaveBeenCalled();
304
- });
305
- it('should serve index.html for /exceptions/:id route', () => {
306
- // Act
307
- controller.serveExceptionDetailRoute(mockResponse);
308
- // Assert
309
- expect(mockResponse.sendFile).toHaveBeenCalled();
310
- });
311
- it('should serve index.html for /logs/:id route', () => {
312
- // Act
313
- controller.serveLogDetailRoute(mockResponse);
314
- // Assert
315
- expect(mockResponse.sendFile).toHaveBeenCalled();
316
- });
317
- it('should serve index.html for /events/:id route', () => {
318
- // Act
319
- controller.serveEventDetailRoute(mockResponse);
320
- // Assert
321
- expect(mockResponse.sendFile).toHaveBeenCalled();
322
- });
323
- it('should serve index.html for /jobs/:id route', () => {
324
- // Act
325
- controller.serveJobDetailRoute(mockResponse);
326
- // Assert
327
- expect(mockResponse.sendFile).toHaveBeenCalled();
328
- });
329
- it('should serve index.html for /cache/:id route', () => {
330
- // Act
331
- controller.serveCacheDetailRoute(mockResponse);
332
- // Assert
333
- expect(mockResponse.sendFile).toHaveBeenCalled();
334
- });
335
- it('should serve index.html for /mail/:id route', () => {
336
- // Act
337
- controller.serveMailDetailRoute(mockResponse);
338
- // Assert
339
- expect(mockResponse.sendFile).toHaveBeenCalled();
340
- });
341
- it('should serve index.html for /schedule/:id route', () => {
342
- // Act
343
- controller.serveScheduleDetailRoute(mockResponse);
344
- // Assert
345
- expect(mockResponse.sendFile).toHaveBeenCalled();
346
- });
347
- it('should serve index.html for /http-client/:id route', () => {
348
- // Act
349
- controller.serveHttpClientDetailRoute(mockResponse);
350
- // Assert
351
- expect(mockResponse.sendFile).toHaveBeenCalled();
352
- });
353
- it('should serve index.html for /redis/:id route', () => {
354
- // Act
355
- controller.serveRedisDetailRoute(mockResponse);
356
- // Assert
357
- expect(mockResponse.sendFile).toHaveBeenCalled();
358
- });
359
- it('should serve index.html for /models/:id route', () => {
360
- // Act
361
- controller.serveModelDetailRoute(mockResponse);
362
- // Assert
363
- expect(mockResponse.sendFile).toHaveBeenCalled();
364
- });
365
- it('should serve index.html for /notifications/:id route', () => {
366
- // Act
367
- controller.serveNotificationDetailRoute(mockResponse);
368
- // Assert
369
- expect(mockResponse.sendFile).toHaveBeenCalled();
370
- });
371
- it('should serve index.html for /views/:id route', () => {
372
- // Act
373
- controller.serveViewDetailRoute(mockResponse);
374
- // Assert
375
- expect(mockResponse.sendFile).toHaveBeenCalled();
376
- });
377
- it('should serve index.html for /commands/:id route', () => {
378
- // Act
379
- controller.serveCommandDetailRoute(mockResponse);
380
- // Assert
381
- expect(mockResponse.sendFile).toHaveBeenCalled();
382
- });
383
- it('should serve index.html for /gates/:id route', () => {
384
- // Act
385
- controller.serveGateDetailRoute(mockResponse);
386
- // Assert
387
- expect(mockResponse.sendFile).toHaveBeenCalled();
388
- });
389
- it('should serve index.html for /batches/:id route', () => {
390
- // Act
391
- controller.serveBatchDetailRoute(mockResponse);
392
- // Assert
393
- expect(mockResponse.sendFile).toHaveBeenCalled();
75
+ describe('serveStaticFile (SVG)', () => {
76
+ it('should return a StreamableFile with the SVG content type', () => {
77
+ const result = controller.serveStaticFile('favicon');
78
+ expect(result).toBeInstanceOf(common_1.StreamableFile);
79
+ expect(result.getHeaders().type).toBe('image/svg+xml');
394
80
  });
395
- it('should serve index.html for /dumps/:id route', () => {
396
- // Act
397
- controller.serveDumpDetailRoute(mockResponse);
398
- // Assert
399
- expect(mockResponse.sendFile).toHaveBeenCalled();
81
+ it('should throw NotFoundException when the SVG does not exist', () => {
82
+ fs_1.existsSync.mockReturnValue(false);
83
+ expect(() => controller.serveStaticFile('nonexistent')).toThrow(common_1.NotFoundException);
400
84
  });
401
85
  });
402
- describe('SPA Routes - 404 Fallback', () => {
403
- beforeEach(() => {
86
+ describe('SPA Routes', () => {
87
+ const spaRoutes = [
88
+ 'serveRequestsRoute',
89
+ 'serveQueriesRoute',
90
+ 'serveExceptionsRoute',
91
+ 'serveLogsRoute',
92
+ 'serveEntryDetailRoute',
93
+ 'serveEventsRoute',
94
+ 'serveEventDetailRoute',
95
+ 'serveJobsRoute',
96
+ 'serveJobDetailRoute',
97
+ 'serveCacheRoute',
98
+ 'serveCacheDetailRoute',
99
+ 'serveMailRoute',
100
+ 'serveMailDetailRoute',
101
+ 'serveScheduleRoute',
102
+ 'serveScheduleDetailRoute',
103
+ 'serveHttpClientRoute',
104
+ 'serveHttpClientDetailRoute',
105
+ 'serveRequestDetailRoute',
106
+ 'serveQueryDetailRoute',
107
+ 'serveExceptionDetailRoute',
108
+ 'serveLogDetailRoute',
109
+ 'serveRedisRoute',
110
+ 'serveRedisDetailRoute',
111
+ 'serveModelsRoute',
112
+ 'serveModelDetailRoute',
113
+ 'serveNotificationsRoute',
114
+ 'serveNotificationDetailRoute',
115
+ 'serveViewsRoute',
116
+ 'serveViewDetailRoute',
117
+ 'serveCommandsRoute',
118
+ 'serveCommandDetailRoute',
119
+ 'serveGatesRoute',
120
+ 'serveGateDetailRoute',
121
+ 'serveBatchesRoute',
122
+ 'serveBatchDetailRoute',
123
+ 'serveDumpsRoute',
124
+ 'serveDumpDetailRoute',
125
+ 'serveGraphQLRoute',
126
+ 'serveGraphQLDetailRoute',
127
+ ];
128
+ it.each(spaRoutes)('%s should return index.html as a StreamableFile', (method) => {
129
+ const result = controller[method]();
130
+ expect(result).toBeInstanceOf(common_1.StreamableFile);
131
+ expect(result.getHeaders().type).toBe('text/html; charset=utf-8');
132
+ });
133
+ it('should throw NotFoundException for SPA routes when index.html is missing', () => {
404
134
  fs_1.existsSync.mockReturnValue(false);
405
- });
406
- it('should return 404 for list routes when index.html missing', () => {
407
- // Act
408
- controller.serveRequestsRoute(mockResponse);
409
- // Assert
410
- expect(mockResponse.status).toHaveBeenCalledWith(404);
411
- expect(mockResponse.json).toHaveBeenCalledWith({ error: 'Dashboard not found' });
412
- });
413
- it('should return 404 for detail routes when index.html missing', () => {
414
- // Act
415
- controller.serveEntryDetailRoute(mockResponse);
416
- // Assert
417
- expect(mockResponse.status).toHaveBeenCalledWith(404);
418
- expect(mockResponse.json).toHaveBeenCalledWith({ error: 'Dashboard not found' });
135
+ expect(() => controller.serveRequestsRoute()).toThrow(common_1.NotFoundException);
136
+ expect(() => controller.serveEntryDetailRoute()).toThrow(common_1.NotFoundException);
419
137
  });
420
138
  });
421
- describe('serveIndexHtml (private method behavior)', () => {
422
- it('should correctly build path to index.html', () => {
423
- // Arrange
424
- fs_1.existsSync.mockReturnValue(true);
425
- // Act
426
- controller.serveRequestsRoute(mockResponse);
427
- // Assert
428
- const sendFileMock = mockResponse.sendFile;
429
- const firstArg = sendFileMock.mock.calls[0][0];
430
- const secondArg = sendFileMock.mock.calls[0][1];
431
- expect(firstArg).toBe('index.html');
432
- expect(secondArg.root).toContain('dashboard');
433
- expect(secondArg.root).toContain('public');
139
+ describe('Security - Path Traversal', () => {
140
+ it('should reject traversal in assets even if the file resolves to an existing path', () => {
141
+ // existsSync would return true, but the resolved path escapes the dashboard root
142
+ expect(() => controller.serveAssets('../../../etc/passwd')).toThrow(common_1.NotFoundException);
143
+ });
144
+ it('should reject traversal in SVG route', () => {
145
+ expect(() => controller.serveStaticFile('../../../etc/passwd')).toThrow(common_1.NotFoundException);
434
146
  });
435
147
  });
436
148
  describe('Edge Cases', () => {
437
- it('should handle empty filename for assets', () => {
438
- // Arrange
439
- const filename = '';
149
+ it('should throw NotFoundException for an empty asset filename', () => {
440
150
  fs_1.existsSync.mockReturnValue(false);
441
- // Act
442
- controller.serveAssets(filename, mockResponse);
443
- // Assert
444
- expect(mockResponse.status).toHaveBeenCalledWith(404);
151
+ expect(() => controller.serveAssets('')).toThrow(common_1.NotFoundException);
445
152
  });
446
153
  it('should handle special characters in filename', () => {
447
- // Arrange
448
- const filename = 'file%20name.js';
449
- fs_1.existsSync.mockReturnValue(true);
450
- // Act
451
- controller.serveAssets(filename, mockResponse);
452
- // Assert
453
- expect(mockResponse.sendFile).toHaveBeenCalled();
454
- });
455
- it('should handle path traversal attempt in assets', () => {
456
- // Arrange
457
- const filename = '../../../etc/passwd';
458
- fs_1.existsSync.mockReturnValue(false);
459
- // Act
460
- controller.serveAssets(filename, mockResponse);
461
- // Assert
462
- expect(mockResponse.status).toHaveBeenCalledWith(404);
463
- });
464
- it('should handle path traversal attempt in SVG', () => {
465
- // Arrange
466
- const filename = '../../../etc/passwd';
467
- fs_1.existsSync.mockReturnValue(false);
468
- // Act
469
- controller.serveStaticFile(filename, mockResponse);
470
- // Assert
471
- expect(mockResponse.status).toHaveBeenCalledWith(404);
154
+ const result = controller.serveAssets('file%20name.js');
155
+ expect(result).toBeInstanceOf(common_1.StreamableFile);
472
156
  });
473
157
  });
474
158
  });
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.controller.spec.js","sourceRoot":"","sources":["../../../src/__tests__/api/dashboard.controller.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.controller.spec.js","sourceRoot":"","sources":["../../../src/__tests__/api/dashboard.controller.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=docs-consistency.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-consistency.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/docs-consistency.spec.ts"],"names":[],"mappings":""}