@deepkit/http 1.0.1-alpha.70 → 1.0.1-alpha.73
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.
- package/dist/cjs/src/decorator.d.ts +8 -6
- package/dist/cjs/src/decorator.js +49 -12
- package/dist/cjs/src/decorator.js.map +1 -1
- package/dist/cjs/src/filter.d.ts +3 -3
- package/dist/cjs/src/filter.js +3 -3
- package/dist/cjs/src/filter.js.map +1 -1
- package/dist/cjs/src/http.d.ts +49 -11
- package/dist/cjs/src/http.js +124 -38
- package/dist/cjs/src/http.js.map +1 -1
- package/dist/cjs/src/kernel.d.ts +3 -3
- package/dist/cjs/src/kernel.js +1 -1
- package/dist/cjs/src/kernel.js.map +1 -1
- package/dist/cjs/src/model.d.ts +11 -3
- package/dist/cjs/src/model.js +58 -26
- package/dist/cjs/src/model.js.map +1 -1
- package/dist/cjs/src/module.js +5 -3
- package/dist/cjs/src/module.js.map +1 -1
- package/dist/cjs/src/router.d.ts +84 -11
- package/dist/cjs/src/router.js +280 -94
- package/dist/cjs/src/router.js.map +1 -1
- package/dist/cjs/src/static-serving.js +15 -8
- package/dist/cjs/src/static-serving.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/src/decorator.d.ts +8 -6
- package/dist/esm/src/decorator.js +47 -11
- package/dist/esm/src/decorator.js.map +1 -1
- package/dist/esm/src/filter.d.ts +3 -3
- package/dist/esm/src/filter.js +4 -4
- package/dist/esm/src/filter.js.map +1 -1
- package/dist/esm/src/http.d.ts +49 -11
- package/dist/esm/src/http.js +111 -38
- package/dist/esm/src/http.js.map +1 -1
- package/dist/esm/src/kernel.d.ts +3 -3
- package/dist/esm/src/kernel.js +2 -2
- package/dist/esm/src/kernel.js.map +1 -1
- package/dist/esm/src/model.d.ts +11 -3
- package/dist/esm/src/model.js +47 -15
- package/dist/esm/src/model.js.map +1 -1
- package/dist/esm/src/module.js +6 -4
- package/dist/esm/src/module.js.map +1 -1
- package/dist/esm/src/router.d.ts +84 -11
- package/dist/esm/src/router.js +278 -94
- package/dist/esm/src/router.js.map +1 -1
- package/dist/esm/src/static-serving.js +16 -9
- package/dist/esm/src/static-serving.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +17 -14
- package/src/decorator.ts +9 -6
- package/src/filter.ts +4 -4
- package/src/http.ts +83 -15
- package/src/kernel.ts +2 -2
- package/src/model.ts +35 -6
- package/src/module.ts +5 -3
- package/src/router.ts +286 -73
- package/src/static-serving.ts +6 -3
- package/coverage/clover.xml +0 -1086
- package/coverage/coverage-final.json +0 -12
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -79
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -126
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -170
- package/coverage/lcov-report/src/controllers.ts.html +0 -113
- package/coverage/lcov-report/src/decorator.ts.html +0 -1280
- package/coverage/lcov-report/src/filter.ts.html +0 -734
- package/coverage/lcov-report/src/http.ts.html +0 -2192
- package/coverage/lcov-report/src/index.html +0 -246
- package/coverage/lcov-report/src/kernel.ts.html +0 -260
- package/coverage/lcov-report/src/middleware.ts.html +0 -428
- package/coverage/lcov-report/src/model.ts.html +0 -937
- package/coverage/lcov-report/src/module.config.ts.html +0 -89
- package/coverage/lcov-report/src/module.ts.html +0 -245
- package/coverage/lcov-report/src/router.ts.html +0 -2318
- package/coverage/lcov-report/tests/index.html +0 -111
- package/coverage/lcov-report/tests/utils.ts.html +0 -176
- package/coverage/lcov.info +0 -2225
- package/dist/cjs/tests/filter.spec.d.ts +0 -1
- package/dist/cjs/tests/filter.spec.js +0 -251
- package/dist/cjs/tests/filter.spec.js.map +0 -1
- package/dist/cjs/tests/middleware.spec.d.ts +0 -1
- package/dist/cjs/tests/middleware.spec.js +0 -471
- package/dist/cjs/tests/middleware.spec.js.map +0 -1
- package/dist/cjs/tests/model.spec.d.ts +0 -1
- package/dist/cjs/tests/model.spec.js +0 -23
- package/dist/cjs/tests/model.spec.js.map +0 -1
- package/dist/cjs/tests/module.spec.d.ts +0 -1
- package/dist/cjs/tests/module.spec.js +0 -46
- package/dist/cjs/tests/module.spec.js.map +0 -1
- package/dist/cjs/tests/router.spec.d.ts +0 -1
- package/dist/cjs/tests/router.spec.js +0 -987
- package/dist/cjs/tests/router.spec.js.map +0 -1
- package/dist/cjs/tests/utils.d.ts +0 -8
- package/dist/cjs/tests/utils.js +0 -30
- package/dist/cjs/tests/utils.js.map +0 -1
- package/dist/esm/tests/filter.spec.d.ts +0 -1
- package/dist/esm/tests/filter.spec.js +0 -249
- package/dist/esm/tests/filter.spec.js.map +0 -1
- package/dist/esm/tests/middleware.spec.d.ts +0 -1
- package/dist/esm/tests/middleware.spec.js +0 -469
- package/dist/esm/tests/middleware.spec.js.map +0 -1
- package/dist/esm/tests/model.spec.d.ts +0 -1
- package/dist/esm/tests/model.spec.js +0 -21
- package/dist/esm/tests/model.spec.js.map +0 -1
- package/dist/esm/tests/module.spec.d.ts +0 -1
- package/dist/esm/tests/module.spec.js +0 -44
- package/dist/esm/tests/module.spec.js.map +0 -1
- package/dist/esm/tests/router.spec.d.ts +0 -1
- package/dist/esm/tests/router.spec.js +0 -985
- package/dist/esm/tests/router.spec.js.map +0 -1
- package/dist/esm/tests/utils.d.ts +0 -8
- package/dist/esm/tests/utils.js +0 -26
- package/dist/esm/tests/utils.js.map +0 -1
- package/tests/filter.spec.ts +0 -181
- package/tests/middleware.spec.ts +0 -440
- package/tests/model.spec.ts +0 -26
- package/tests/module.spec.ts +0 -32
- package/tests/router.spec.ts +0 -781
- package/tests/utils.ts +0 -32
package/tests/middleware.spec.ts
DELETED
|
@@ -1,440 +0,0 @@
|
|
|
1
|
-
import { expect, test } from '@jest/globals';
|
|
2
|
-
import { http } from '../src/decorator';
|
|
3
|
-
import { createHttpKernel } from './utils';
|
|
4
|
-
import { HttpMiddleware, httpMiddleware } from '../src/middleware';
|
|
5
|
-
import { HttpRequest, HttpResponse } from '../src/model';
|
|
6
|
-
import { AppModule } from '@deepkit/app';
|
|
7
|
-
import { sleep } from '@deepkit/core';
|
|
8
|
-
|
|
9
|
-
class Controller {
|
|
10
|
-
@http.GET('user/:name')
|
|
11
|
-
hello(name: string) {
|
|
12
|
-
return name;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
test('middleware empty', async () => {
|
|
17
|
-
const httpKernel = createHttpKernel([Controller], [], [], [httpMiddleware.for((req, res, next) => {
|
|
18
|
-
next();
|
|
19
|
-
})]);
|
|
20
|
-
|
|
21
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
22
|
-
expect(response.statusCode).toEqual(200);
|
|
23
|
-
expect(response.bodyString).toEqual('"name1"');
|
|
24
|
-
expect(response.getHeader('content-type')).toEqual('application/json; charset=utf-8');
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test('middleware async success', async () => {
|
|
28
|
-
const httpKernel = createHttpKernel([Controller], [], [], [httpMiddleware.for(async (req, res, next) => {
|
|
29
|
-
await sleep(0.1);
|
|
30
|
-
res.end('nope');
|
|
31
|
-
})]);
|
|
32
|
-
|
|
33
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
34
|
-
expect(response.statusCode).toEqual(200);
|
|
35
|
-
expect(response.bodyString).toEqual('nope');
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test('middleware async failed', async () => {
|
|
39
|
-
const httpKernel = createHttpKernel([Controller], [], [], [httpMiddleware.for(async (req, res, next) => {
|
|
40
|
-
await sleep(0.1);
|
|
41
|
-
throw new Error('nope');
|
|
42
|
-
})]);
|
|
43
|
-
|
|
44
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
45
|
-
expect(response.statusCode).toEqual(404);
|
|
46
|
-
expect(response.bodyString).toEqual('Not found');
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
test('middleware class async success', async () => {
|
|
50
|
-
class MyMiddleware implements HttpMiddleware {
|
|
51
|
-
async execute(req: HttpRequest, res: HttpResponse, next: (err?: any) => void): Promise<void> {
|
|
52
|
-
await sleep(0.1);
|
|
53
|
-
res.end('nope');
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const httpKernel = createHttpKernel([Controller], [MyMiddleware], [], [httpMiddleware.for(MyMiddleware)]);
|
|
58
|
-
|
|
59
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
60
|
-
expect(response.statusCode).toEqual(200);
|
|
61
|
-
expect(response.bodyString).toEqual('nope');
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
test('middleware class async failed', async () => {
|
|
65
|
-
class MyMiddleware implements HttpMiddleware {
|
|
66
|
-
async execute(req: HttpRequest, res: HttpResponse, next: (err?: any) => void): Promise<void> {
|
|
67
|
-
await sleep(0.1);
|
|
68
|
-
throw new Error('nope');
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const httpKernel = createHttpKernel([Controller], [MyMiddleware], [], [httpMiddleware.for(MyMiddleware)]);
|
|
73
|
-
|
|
74
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
75
|
-
expect(response.statusCode).toEqual(404);
|
|
76
|
-
expect(response.bodyString).toEqual('Not found');
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
test('middleware direct response', async () => {
|
|
80
|
-
const httpKernel = createHttpKernel([Controller], [], [], [httpMiddleware.for((req, res, next) => {
|
|
81
|
-
res.end('nope');
|
|
82
|
-
})]);
|
|
83
|
-
|
|
84
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
85
|
-
expect(response.statusCode).toEqual(200);
|
|
86
|
-
expect(response.bodyString).toEqual('nope');
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
test('middleware for controller', async () => {
|
|
90
|
-
class MyController {
|
|
91
|
-
@http.GET('/another/:name')
|
|
92
|
-
hello(name: string) {
|
|
93
|
-
return name;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const httpKernel = createHttpKernel([Controller, MyController], [], [], [httpMiddleware.for((req, res, next) => {
|
|
98
|
-
res.setHeader('middleware', '1');
|
|
99
|
-
next();
|
|
100
|
-
}).forControllers(MyController)]);
|
|
101
|
-
|
|
102
|
-
{
|
|
103
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
104
|
-
expect(response.statusCode).toEqual(200);
|
|
105
|
-
expect(response.getHeader('middleware')).toEqual(undefined);
|
|
106
|
-
}
|
|
107
|
-
{
|
|
108
|
-
const response = await httpKernel.request(HttpRequest.GET('/another/name1'));
|
|
109
|
-
expect(response.statusCode).toEqual(200);
|
|
110
|
-
expect(response.getHeader('middleware')).toEqual('1');
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
test('middleware excludeControllers', async () => {
|
|
115
|
-
class MyController {
|
|
116
|
-
@http.GET('/another/:name')
|
|
117
|
-
hello(name: string) {
|
|
118
|
-
return name;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
const httpKernel = createHttpKernel([Controller, MyController], [], [], [httpMiddleware.for((req, res, next) => {
|
|
123
|
-
res.setHeader('middleware', '1');
|
|
124
|
-
next();
|
|
125
|
-
}).excludeControllers(Controller)]);
|
|
126
|
-
|
|
127
|
-
{
|
|
128
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
129
|
-
expect(response.statusCode).toEqual(200);
|
|
130
|
-
expect(response.getHeader('middleware')).toEqual(undefined);
|
|
131
|
-
}
|
|
132
|
-
{
|
|
133
|
-
const response = await httpKernel.request(HttpRequest.GET('/another/name1'));
|
|
134
|
-
expect(response.statusCode).toEqual(200);
|
|
135
|
-
expect(response.getHeader('middleware')).toEqual('1');
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
test('middleware for names', async () => {
|
|
140
|
-
class MyController {
|
|
141
|
-
@http.GET('/another/:name').name('another')
|
|
142
|
-
hello(name: string) {
|
|
143
|
-
return name;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
@http.GET('/api/user/:name').name('api_user')
|
|
147
|
-
apiUser(name: string) {
|
|
148
|
-
return name;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
@http.GET('/api/group/:name').name('api_group')
|
|
152
|
-
apiGroup(name: string) {
|
|
153
|
-
return name;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
const httpKernel = createHttpKernel([MyController], [], [], [httpMiddleware.for((req, res, next) => {
|
|
158
|
-
res.setHeader('middleware', '1');
|
|
159
|
-
next();
|
|
160
|
-
}).forRouteNames('api_*').excludeRouteNames('api_group')]);
|
|
161
|
-
|
|
162
|
-
{
|
|
163
|
-
const response = await httpKernel.request(HttpRequest.GET('/api/user/name1'));
|
|
164
|
-
expect(response.statusCode).toEqual(200);
|
|
165
|
-
expect(response.getHeader('middleware')).toEqual('1');
|
|
166
|
-
}
|
|
167
|
-
{
|
|
168
|
-
const response = await httpKernel.request(HttpRequest.GET('/api/group/name1'));
|
|
169
|
-
expect(response.statusCode).toEqual(200);
|
|
170
|
-
expect(response.getHeader('middleware')).toEqual(undefined);
|
|
171
|
-
}
|
|
172
|
-
{
|
|
173
|
-
const response = await httpKernel.request(HttpRequest.GET('/another/name1'));
|
|
174
|
-
expect(response.statusCode).toEqual(200);
|
|
175
|
-
expect(response.getHeader('middleware')).toEqual(undefined);
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
test('middleware for routes', async () => {
|
|
180
|
-
class MyController {
|
|
181
|
-
@http.GET('/another/:name').group('another')
|
|
182
|
-
hello(name: string) {
|
|
183
|
-
return name;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
@http.GET('/api/user/:name').group('api')
|
|
187
|
-
apiUser(name: string) {
|
|
188
|
-
return name;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
@http.GET('/api/group/:name').group('api')
|
|
192
|
-
apiGroup(name: string) {
|
|
193
|
-
return name;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
const httpKernel = createHttpKernel([MyController], [], [], [
|
|
198
|
-
httpMiddleware.for((req, res, next) => {
|
|
199
|
-
res.setHeader('middleware_get', '1');
|
|
200
|
-
next();
|
|
201
|
-
}).forRoutes({ httpMethod: 'GET' }),
|
|
202
|
-
httpMiddleware.for((req, res, next) => {
|
|
203
|
-
res.setHeader('middleware_api_group', '1');
|
|
204
|
-
next();
|
|
205
|
-
}).forRoutes({ group: 'api' }),
|
|
206
|
-
httpMiddleware.for((req, res, next) => {
|
|
207
|
-
res.setHeader('middleware_api_path', '1');
|
|
208
|
-
next();
|
|
209
|
-
}).forRoutes({ path: '/api/*' }),
|
|
210
|
-
httpMiddleware.for((req, res, next) => {
|
|
211
|
-
res.setHeader('middleware_api_user', '1');
|
|
212
|
-
next();
|
|
213
|
-
}).forRoutes({ path: '/api/user/*' }),
|
|
214
|
-
httpMiddleware.for((req, res, next) => {
|
|
215
|
-
res.setHeader('middleware_another', '1');
|
|
216
|
-
next();
|
|
217
|
-
}).forRoutes({ group: 'another' })
|
|
218
|
-
]);
|
|
219
|
-
|
|
220
|
-
{
|
|
221
|
-
const response = await httpKernel.request(HttpRequest.GET('/another/name1'));
|
|
222
|
-
expect(response.statusCode).toEqual(200);
|
|
223
|
-
expect(response.getHeader('middleware_get')).toEqual('1');
|
|
224
|
-
expect(response.getHeader('middleware_another')).toEqual('1');
|
|
225
|
-
expect(response.getHeader('middleware_api_group')).toEqual(undefined);
|
|
226
|
-
expect(response.getHeader('middleware_api_path')).toEqual(undefined);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
{
|
|
230
|
-
const response = await httpKernel.request(HttpRequest.GET('/api/group/name1'));
|
|
231
|
-
expect(response.statusCode).toEqual(200);
|
|
232
|
-
expect(response.getHeader('middleware_api_group')).toEqual('1');
|
|
233
|
-
expect(response.getHeader('middleware_api_path')).toEqual('1');
|
|
234
|
-
expect(response.getHeader('middleware_get')).toEqual('1');
|
|
235
|
-
expect(response.getHeader('middleware_another')).toEqual(undefined);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
{
|
|
239
|
-
const response = await httpKernel.request(HttpRequest.GET('/api/user/name1'));
|
|
240
|
-
expect(response.statusCode).toEqual(200);
|
|
241
|
-
expect(response.getHeader('middleware_api_group')).toEqual('1');
|
|
242
|
-
expect(response.getHeader('middleware_api_path')).toEqual('1');
|
|
243
|
-
expect(response.getHeader('middleware_api_user')).toEqual('1');
|
|
244
|
-
expect(response.getHeader('middleware_get')).toEqual('1');
|
|
245
|
-
expect(response.getHeader('middleware_another')).toEqual(undefined);
|
|
246
|
-
}
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
test('middleware timeout', async () => {
|
|
250
|
-
const httpKernel = createHttpKernel([Controller], [], [], [httpMiddleware.for((req, res, next) => {
|
|
251
|
-
//do nothing
|
|
252
|
-
}).timeout(1000)]);
|
|
253
|
-
|
|
254
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
255
|
-
expect(response.statusCode).toEqual(200);
|
|
256
|
-
expect(response.bodyString).toEqual('"name1"');
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
test('middleware keep content type', async () => {
|
|
260
|
-
const httpKernel = createHttpKernel([Controller], [], [], [httpMiddleware.for((req, res, next) => {
|
|
261
|
-
res.setHeader('Content-Type', 'text/plain');
|
|
262
|
-
next();
|
|
263
|
-
})]);
|
|
264
|
-
|
|
265
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
266
|
-
expect(response.statusCode).toEqual(200);
|
|
267
|
-
expect(response.bodyString).toEqual('"name1"');
|
|
268
|
-
expect(response.getHeader('content-type')).toEqual('text/plain');
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
test('middleware order natural', async () => {
|
|
272
|
-
const order: number[] = [];
|
|
273
|
-
const httpKernel = createHttpKernel([Controller], [], [], [
|
|
274
|
-
httpMiddleware.for((req, res, next) => {
|
|
275
|
-
order.push(1);
|
|
276
|
-
next();
|
|
277
|
-
}),
|
|
278
|
-
httpMiddleware.for((req, res, next) => {
|
|
279
|
-
order.push(2);
|
|
280
|
-
next();
|
|
281
|
-
}),
|
|
282
|
-
httpMiddleware.for((req, res, next) => {
|
|
283
|
-
order.push(3);
|
|
284
|
-
next();
|
|
285
|
-
})
|
|
286
|
-
]);
|
|
287
|
-
|
|
288
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
289
|
-
expect(response.statusCode).toEqual(200);
|
|
290
|
-
|
|
291
|
-
expect(order).toEqual([1, 2, 3]);
|
|
292
|
-
});
|
|
293
|
-
|
|
294
|
-
test('middleware order changed', async () => {
|
|
295
|
-
const order: number[] = [];
|
|
296
|
-
const httpKernel = createHttpKernel([Controller], [], [], [
|
|
297
|
-
httpMiddleware.for((req, res, next) => {
|
|
298
|
-
order.push(1);
|
|
299
|
-
next();
|
|
300
|
-
}),
|
|
301
|
-
httpMiddleware.for((req, res, next) => {
|
|
302
|
-
order.push(2);
|
|
303
|
-
next();
|
|
304
|
-
}),
|
|
305
|
-
httpMiddleware.for((req, res, next) => {
|
|
306
|
-
order.push(3);
|
|
307
|
-
next();
|
|
308
|
-
}).order(-1)
|
|
309
|
-
]);
|
|
310
|
-
|
|
311
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
312
|
-
expect(response.statusCode).toEqual(200);
|
|
313
|
-
|
|
314
|
-
expect(order).toEqual([3, 1, 2]);
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
test('middleware for module', async () => {
|
|
319
|
-
|
|
320
|
-
class MyControllerA {
|
|
321
|
-
@http.GET('/a/:name')
|
|
322
|
-
hello(name: string) {
|
|
323
|
-
return name;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
class MyControllerB {
|
|
328
|
-
@http.GET('/b/:name')
|
|
329
|
-
hello(name: string) {
|
|
330
|
-
return name;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
const moduleA = new AppModule({controllers: [MyControllerA], providers: [MyControllerA]}, 'a');
|
|
334
|
-
const moduleB = new AppModule({controllers: [MyControllerB], providers: [MyControllerB]}, 'b');
|
|
335
|
-
|
|
336
|
-
const httpKernel = createHttpKernel([
|
|
337
|
-
], [], [], [
|
|
338
|
-
httpMiddleware.for((req, res, next) => {
|
|
339
|
-
res.setHeader('middleware', '1');
|
|
340
|
-
next();
|
|
341
|
-
}).forModules(moduleB),
|
|
342
|
-
], [moduleA, moduleB]);
|
|
343
|
-
|
|
344
|
-
{
|
|
345
|
-
const response = await httpKernel.request(HttpRequest.GET('/a/name1'));
|
|
346
|
-
expect(response.statusCode).toEqual(200);
|
|
347
|
-
expect(response.getHeader('middleware')).toEqual(undefined);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
{
|
|
351
|
-
const response = await httpKernel.request(HttpRequest.GET('/b/name1'));
|
|
352
|
-
expect(response.statusCode).toEqual(200);
|
|
353
|
-
expect(response.getHeader('middleware')).toEqual('1');
|
|
354
|
-
}
|
|
355
|
-
});
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
test('middleware self module', async () => {
|
|
359
|
-
class MyControllerA {
|
|
360
|
-
@http.GET('/a/:name')
|
|
361
|
-
hello(name: string) {
|
|
362
|
-
return name;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
const moduleA = new AppModule({controllers: [MyControllerA]});
|
|
366
|
-
|
|
367
|
-
const httpKernel = createHttpKernel([Controller], [], [], [httpMiddleware.for((req, res, next) => {
|
|
368
|
-
res.setHeader('middleware', '1');
|
|
369
|
-
next();
|
|
370
|
-
}).forSelfModules()], [moduleA]);
|
|
371
|
-
|
|
372
|
-
{
|
|
373
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
374
|
-
expect(response.statusCode).toEqual(200);
|
|
375
|
-
expect(response.getHeader('middleware')).toEqual('1');
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
{
|
|
379
|
-
const response = await httpKernel.request(HttpRequest.GET('/a/name1'));
|
|
380
|
-
expect(response.statusCode).toEqual(200);
|
|
381
|
-
expect(response.getHeader('middleware')).toEqual(undefined);
|
|
382
|
-
}
|
|
383
|
-
});
|
|
384
|
-
|
|
385
|
-
test('middleware class type', async () => {
|
|
386
|
-
class MyMiddleware {
|
|
387
|
-
execute(request: HttpRequest, response: HttpResponse, next: (error?: any) => void) {
|
|
388
|
-
response.setHeader('middleware', '1');
|
|
389
|
-
next();
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
const httpKernel = createHttpKernel([Controller], [MyMiddleware], [], [httpMiddleware.for(MyMiddleware)]);
|
|
394
|
-
|
|
395
|
-
const response = await httpKernel.request(HttpRequest.GET('/user/name1'));
|
|
396
|
-
expect(response.statusCode).toEqual(200);
|
|
397
|
-
expect(response.getHeader('middleware')).toEqual('1');
|
|
398
|
-
});
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
test('middleware on http controller', async () => {
|
|
402
|
-
class MyMiddleware {
|
|
403
|
-
execute(request: HttpRequest, response: HttpResponse, next: (error?: any) => void) {
|
|
404
|
-
response.setHeader('middleware_a', '1');
|
|
405
|
-
next();
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
@http.middleware(MyMiddleware)
|
|
410
|
-
class MyControllerA {
|
|
411
|
-
@http.GET('/a/:name')
|
|
412
|
-
a(name: string) {
|
|
413
|
-
return name;
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
@http.GET('/b/:name').middleware((req, res, next) => {
|
|
417
|
-
res.setHeader('middleware_b', '1');
|
|
418
|
-
next();
|
|
419
|
-
})
|
|
420
|
-
b(name: string) {
|
|
421
|
-
return name;
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
const httpKernel = createHttpKernel([MyControllerA], [MyMiddleware]);
|
|
426
|
-
|
|
427
|
-
{
|
|
428
|
-
const response = await httpKernel.request(HttpRequest.GET('/a/name1'));
|
|
429
|
-
expect(response.statusCode).toEqual(200);
|
|
430
|
-
expect(response.getHeader('middleware_a')).toEqual('1');
|
|
431
|
-
expect(response.getHeader('middleware_b')).toEqual(undefined);
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
{
|
|
435
|
-
const response = await httpKernel.request(HttpRequest.GET('/b/name1'));
|
|
436
|
-
expect(response.statusCode).toEqual(200);
|
|
437
|
-
expect(response.getHeader('middleware_a')).toEqual('1');
|
|
438
|
-
expect(response.getHeader('middleware_b')).toEqual('1');
|
|
439
|
-
}
|
|
440
|
-
});
|
package/tests/model.spec.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { expect, test } from '@jest/globals';
|
|
2
|
-
import { HttpRequest } from '../src/model';
|
|
3
|
-
|
|
4
|
-
test('request model json', async () => {
|
|
5
|
-
const request = HttpRequest.POST('/').json({ hello: 'world' }).build();
|
|
6
|
-
const buffers = [];
|
|
7
|
-
|
|
8
|
-
for await (const chunk of request) {
|
|
9
|
-
buffers.push(chunk);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const bodyBuffer = Buffer.concat(buffers).toString();
|
|
13
|
-
expect(bodyBuffer).toBe('{"hello":"world"}');
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
test('request model body', async () => {
|
|
17
|
-
const request = HttpRequest.POST('/').body("hello").build();
|
|
18
|
-
const buffers = [];
|
|
19
|
-
|
|
20
|
-
for await (const chunk of request) {
|
|
21
|
-
buffers.push(chunk);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const bodyBuffer = Buffer.concat(buffers).toString();
|
|
25
|
-
expect(bodyBuffer).toBe('hello');
|
|
26
|
-
});
|
package/tests/module.spec.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { App } from '@deepkit/app';
|
|
2
|
-
import { expect, test } from '@jest/globals';
|
|
3
|
-
import { HttpModule } from '../src/module';
|
|
4
|
-
import { HttpKernel } from '../src/kernel';
|
|
5
|
-
import { HttpRequest } from '../src/model';
|
|
6
|
-
import { http } from '../src/decorator';
|
|
7
|
-
|
|
8
|
-
test('module basic functionality', async () => {
|
|
9
|
-
class Controller {
|
|
10
|
-
@http.GET('hello')
|
|
11
|
-
hello() {
|
|
12
|
-
return 'hi';
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const app = new App({
|
|
17
|
-
controllers: [
|
|
18
|
-
Controller,
|
|
19
|
-
],
|
|
20
|
-
imports: [
|
|
21
|
-
new HttpModule()
|
|
22
|
-
]
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
const httpKernel = app.get(HttpKernel);
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
const response = await httpKernel.request(HttpRequest.GET('/hello'));
|
|
29
|
-
expect(response.statusCode).toBe(200);
|
|
30
|
-
expect(response.json).toContain('hi');
|
|
31
|
-
}
|
|
32
|
-
});
|