@deepkit/http 1.0.1-alpha.16 → 1.0.1-alpha.160
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/CHANGELOG.md +236 -0
- package/dist/cjs/index.d.ts +14 -10
- package/dist/cjs/index.js +19 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/src/controllers.d.ts +10 -3
- package/dist/cjs/src/controllers.js +7 -3
- package/dist/cjs/src/controllers.js.map +1 -1
- package/dist/cjs/src/decorator.d.ts +144 -70
- package/dist/cjs/src/decorator.js +277 -102
- package/dist/cjs/src/decorator.js.map +1 -1
- package/dist/cjs/src/filter.d.ts +49 -0
- package/dist/cjs/src/filter.js +215 -0
- package/dist/cjs/src/filter.js.map +1 -0
- package/dist/cjs/src/http-app.d.ts +8 -0
- package/dist/cjs/src/http-app.js +16 -0
- package/dist/cjs/src/http-app.js.map +1 -0
- package/dist/cjs/src/http.d.ts +131 -32
- package/dist/cjs/src/http.js +523 -122
- package/dist/cjs/src/http.js.map +1 -1
- package/dist/cjs/src/kernel.d.ts +50 -9
- package/dist/cjs/src/kernel.js +109 -98
- package/dist/cjs/src/kernel.js.map +1 -1
- package/dist/cjs/src/logger.d.ts +3 -3
- package/dist/cjs/src/logger.js +9 -12
- package/dist/cjs/src/logger.js.map +1 -1
- package/dist/cjs/src/middleware.d.ts +61 -0
- package/dist/cjs/src/middleware.js +95 -0
- package/dist/cjs/src/middleware.js.map +1 -0
- package/dist/cjs/src/model.d.ts +270 -4
- package/dist/cjs/src/model.js +401 -3
- package/dist/cjs/src/model.js.map +1 -1
- package/dist/cjs/src/module.config.d.ts +149 -4
- package/dist/cjs/src/module.config.js +11 -6
- package/dist/cjs/src/module.config.js.map +1 -1
- package/dist/cjs/src/module.d.ts +14 -32
- package/dist/cjs/src/module.js +122 -7
- package/dist/cjs/src/module.js.map +1 -1
- package/dist/cjs/src/request-parser.d.ts +37 -0
- package/dist/cjs/src/request-parser.js +382 -0
- package/dist/cjs/src/request-parser.js.map +1 -0
- package/dist/cjs/src/router.d.ts +174 -75
- package/dist/cjs/src/router.js +469 -288
- package/dist/cjs/src/router.js.map +1 -1
- package/dist/cjs/src/static-serving.d.ts +32 -4
- package/dist/cjs/src/static-serving.js +115 -71
- package/dist/cjs/src/static-serving.js.map +1 -1
- package/dist/cjs/src/utils.js +2 -2
- package/dist/cjs/src/utils.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -2916
- package/dist/esm/index.d.ts +14 -10
- package/dist/esm/index.js +14 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/src/controllers.d.ts +10 -3
- package/dist/esm/src/controllers.js +7 -3
- package/dist/esm/src/controllers.js.map +1 -1
- package/dist/esm/src/decorator.d.ts +144 -70
- package/dist/esm/src/decorator.js +272 -99
- package/dist/esm/src/decorator.js.map +1 -1
- package/dist/esm/src/filter.d.ts +49 -0
- package/dist/esm/src/filter.js +209 -0
- package/dist/esm/src/filter.js.map +1 -0
- package/dist/esm/src/http-app.d.ts +8 -0
- package/dist/esm/src/http-app.js +12 -0
- package/dist/esm/src/http-app.js.map +1 -0
- package/dist/esm/src/http.d.ts +131 -32
- package/dist/esm/src/http.js +504 -121
- package/dist/esm/src/http.js.map +1 -1
- package/dist/esm/src/kernel.d.ts +50 -9
- package/dist/esm/src/kernel.js +110 -100
- package/dist/esm/src/kernel.js.map +1 -1
- package/dist/esm/src/logger.d.ts +3 -3
- package/dist/esm/src/logger.js +7 -11
- package/dist/esm/src/logger.js.map +1 -1
- package/dist/esm/src/middleware.d.ts +61 -0
- package/dist/esm/src/middleware.js +90 -0
- package/dist/esm/src/middleware.js.map +1 -0
- package/dist/esm/src/model.d.ts +270 -4
- package/dist/esm/src/model.js +357 -1
- package/dist/esm/src/model.js.map +1 -1
- package/dist/esm/src/module.config.d.ts +149 -4
- package/dist/esm/src/module.config.js +9 -5
- package/dist/esm/src/module.config.js.map +1 -1
- package/dist/esm/src/module.d.ts +14 -32
- package/dist/esm/src/module.js +121 -7
- package/dist/esm/src/module.js.map +1 -1
- package/dist/esm/src/request-parser.d.ts +37 -0
- package/dist/esm/src/request-parser.js +372 -0
- package/dist/esm/src/request-parser.js.map +1 -0
- package/dist/esm/src/router.d.ts +174 -75
- package/dist/esm/src/router.js +463 -285
- package/dist/esm/src/router.js.map +1 -1
- package/dist/esm/src/static-serving.d.ts +32 -4
- package/dist/esm/src/static-serving.js +107 -65
- package/dist/esm/src/static-serving.js.map +1 -1
- package/dist/esm/src/utils.js +1 -0
- package/dist/esm/src/utils.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -2916
- package/index.ts +14 -10
- package/package.json +30 -19
- package/src/controllers.ts +4 -3
- package/src/decorator.ts +242 -104
- package/src/filter.ts +224 -0
- package/src/http-app.ts +11 -0
- package/src/http.ts +501 -100
- package/src/kernel.ts +128 -80
- package/src/logger.ts +4 -6
- package/src/middleware.ts +116 -0
- package/src/model.ts +516 -5
- package/src/module.config.ts +168 -5
- package/src/module.ts +120 -7
- package/src/request-parser.ts +430 -0
- package/src/router.ts +546 -317
- package/src/static-serving.ts +120 -50
- package/src/utils.ts +0 -2
- package/tsconfig.esm.json +7 -7
- package/tsconfig.json +18 -11
- package/tsconfig.spec.json +8 -0
- package/dist/cjs/tests/router.spec.d.ts +0 -1
- package/dist/cjs/tests/router.spec.js +0 -481
- package/dist/cjs/tests/router.spec.js.map +0 -1
- package/dist/esm/tests/router.spec.d.ts +0 -1
- package/dist/esm/tests/router.spec.js +0 -479
- package/dist/esm/tests/router.spec.js.map +0 -1
- package/tests/router.spec.ts +0 -347
package/tests/router.spec.ts
DELETED
|
@@ -1,347 +0,0 @@
|
|
|
1
|
-
import { expect, test } from '@jest/globals';
|
|
2
|
-
import 'reflect-metadata';
|
|
3
|
-
import { dotToUrlPath, RouteParameterResolverContext, RouteParameterResolverTag, Router } from '../src/router';
|
|
4
|
-
import { http, httpClass } from '../src/decorator';
|
|
5
|
-
import { t } from '@deepkit/type';
|
|
6
|
-
import { HttpListener, JSONResponse } from '../src/http';
|
|
7
|
-
import { HttpKernel } from '../src/kernel';
|
|
8
|
-
import { EventDispatcher } from '@deepkit/event';
|
|
9
|
-
import { InjectorContext, ProviderWithScope, Tag } from '@deepkit/injector';
|
|
10
|
-
import { Logger } from '@deepkit/logger';
|
|
11
|
-
import { HttpRequest } from '../src/model';
|
|
12
|
-
import { ClassType } from '@deepkit/core';
|
|
13
|
-
import { TagProviders } from '@deepkit/app';
|
|
14
|
-
|
|
15
|
-
function createHttpKernel(controllers: ClassType[], providers: ProviderWithScope[] = []) {
|
|
16
|
-
const tagProviders = new TagProviders();
|
|
17
|
-
for (const provider of providers) if (provider instanceof Tag) tagProviders.tags.push(provider);
|
|
18
|
-
const router = Router.forControllers(controllers, tagProviders);
|
|
19
|
-
const injector = InjectorContext.forProviders([{ provide: Router, useValue: router }, ...controllers, HttpListener, Logger, ...providers]);
|
|
20
|
-
const eventDispatcher = new EventDispatcher(injector);
|
|
21
|
-
eventDispatcher.registerListener(HttpListener);
|
|
22
|
-
return new HttpKernel(router, eventDispatcher, injector, new Logger(), false);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
test('router', async () => {
|
|
26
|
-
class Controller {
|
|
27
|
-
@http.GET()
|
|
28
|
-
helloWorld() {
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@http.GET(':name')
|
|
32
|
-
hello(name: string) {
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@http.GET('/user/:id/static')
|
|
36
|
-
userStatic(id: string) {
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
@http.GET('/user2/:id/static/:id2')
|
|
40
|
-
userStatic2(id: string, id2: string) {
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
@http.GET('/static')
|
|
44
|
-
static() {
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const router = Router.forControllers([Controller]);
|
|
49
|
-
|
|
50
|
-
expect((await router.resolve('GET', '/'))?.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'helloWorld' });
|
|
51
|
-
expect((await router.resolve('GET', '/peter'))?.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'hello' });
|
|
52
|
-
expect((await router.resolve('GET', '/peter'))?.parameters!(undefined as any)).toEqual(['peter']);
|
|
53
|
-
|
|
54
|
-
const userStatic = await router.resolve('GET', '/user/1233/static');
|
|
55
|
-
expect(userStatic?.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'userStatic' });
|
|
56
|
-
expect(userStatic?.parameters!(undefined as any)).toEqual(['1233']);
|
|
57
|
-
|
|
58
|
-
const userStatic2 = await router.resolve('GET', '/user2/1233/static/123');
|
|
59
|
-
expect(userStatic2?.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'userStatic2' });
|
|
60
|
-
expect(userStatic2?.parameters!(undefined as any)).toEqual(['1233', '123']);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
test('router parameters', async () => {
|
|
64
|
-
class Controller {
|
|
65
|
-
@http.GET('/user/:name')
|
|
66
|
-
string(name: string) {
|
|
67
|
-
return new JSONResponse(name);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
@http.GET('/user-id/:id')
|
|
71
|
-
number(id: number) {
|
|
72
|
-
return new JSONResponse(id);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
@http.GET('/boolean/:yes')
|
|
76
|
-
boolean(yes: boolean) {
|
|
77
|
-
return new JSONResponse(yes);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
@http.GET(':path').regexp('path', '.*')
|
|
81
|
-
any(path: string) {
|
|
82
|
-
return new JSONResponse(path);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const router = Router.forControllers([Controller]);
|
|
87
|
-
expect((await router.resolve('GET', '/user/peter'))?.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'string' });
|
|
88
|
-
|
|
89
|
-
const httpKernel = createHttpKernel([Controller]);
|
|
90
|
-
|
|
91
|
-
expect(await httpKernel.handleRequestFor('GET', '/user/peter')).toBe('peter');
|
|
92
|
-
expect(await httpKernel.handleRequestFor('GET', '/user-id/123')).toBe(123);
|
|
93
|
-
expect(await httpKernel.handleRequestFor('GET', '/user-id/asd')).toMatchObject({ message: 'Validation failed: id(No number given): invalid_number' });
|
|
94
|
-
expect(await httpKernel.handleRequestFor('GET', '/boolean/1')).toBe(true);
|
|
95
|
-
expect(await httpKernel.handleRequestFor('GET', '/boolean/false')).toBe(false);
|
|
96
|
-
|
|
97
|
-
expect(await httpKernel.handleRequestFor('GET', '/any')).toBe('any');
|
|
98
|
-
expect(await httpKernel.handleRequestFor('GET', '/any/path')).toBe('any/path');
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
test('router HttpRequest', async () => {
|
|
102
|
-
class Controller {
|
|
103
|
-
@http.GET(':path').regexp('path', '.*')
|
|
104
|
-
anyReq(req: HttpRequest, path: string) {
|
|
105
|
-
return [req.url, path];
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const httpKernel = createHttpKernel([Controller]);
|
|
110
|
-
|
|
111
|
-
expect(await httpKernel.handleRequestFor('GET', '/req/any/path')).toEqual(['/req/any/path', 'req/any/path']);
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
test('router parameterResolver', async () => {
|
|
115
|
-
class User {
|
|
116
|
-
constructor(public username: string) {
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
class Controller {
|
|
121
|
-
@http.GET('user/:username')
|
|
122
|
-
route1(user: User) {
|
|
123
|
-
return [user.username];
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
@http.GET('group')
|
|
127
|
-
route2(user: User) {
|
|
128
|
-
return [user.username];
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
class MyRouteParameterResolver {
|
|
133
|
-
resolve(context: RouteParameterResolverContext): any | Promise<any> {
|
|
134
|
-
if (!context.parameters.username) throw new Error('No :username specified');
|
|
135
|
-
return new User(context.parameters.username);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
const httpKernel = createHttpKernel([Controller], [RouteParameterResolverTag.provide(MyRouteParameterResolver).forClassType(User)]);
|
|
140
|
-
|
|
141
|
-
expect(await httpKernel.handleRequestFor('GET', '/user/peter')).toEqual(['peter']);
|
|
142
|
-
expect(await httpKernel.handleRequestFor('GET', '/group')).toEqual('Internal error');
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
test('router body', async () => {
|
|
146
|
-
class Body {
|
|
147
|
-
@t username!: string;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
class Controller {
|
|
151
|
-
@http.POST()
|
|
152
|
-
anyReq(@http.body() body: Body, req: HttpRequest) {
|
|
153
|
-
return [body.username, body instanceof Body, req.url];
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
const httpKernel = createHttpKernel([Controller]);
|
|
158
|
-
|
|
159
|
-
expect(await httpKernel.handleRequestFor('POST', '/', { username: 'Peter' })).toEqual(['Peter', true, '/']);
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
test('router body double', async () => {
|
|
164
|
-
class Body {
|
|
165
|
-
@t username!: string;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
class Controller {
|
|
169
|
-
@http.POST()
|
|
170
|
-
anyReq(@http.body() body: Body, @http.body() body2: Body, req: HttpRequest) {
|
|
171
|
-
return [body2.username, body2 instanceof Body && body instanceof Body, req.url];
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
const httpData = httpClass._fetch(Controller);
|
|
176
|
-
if (!httpData) throw new Error('httpClass undefined');
|
|
177
|
-
const action = [...httpData.getActions()][0];
|
|
178
|
-
expect(action.methodName).toBe('anyReq');
|
|
179
|
-
expect(action.httpMethod).toBe('POST');
|
|
180
|
-
expect(action.parameters['body']).not.toBeUndefined();
|
|
181
|
-
expect(action.parameters['body'].name).toBe('body');
|
|
182
|
-
expect(action.parameters['body2']).not.toBeUndefined();
|
|
183
|
-
expect(action.parameters['body2'].name).toBe('body2');
|
|
184
|
-
|
|
185
|
-
const httpKernel = createHttpKernel([Controller]);
|
|
186
|
-
|
|
187
|
-
expect(await httpKernel.handleRequestFor('POST', '/', { username: 'Peter' })).toEqual(['Peter', true, '/']);
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
test('router groups', async () => {
|
|
191
|
-
{
|
|
192
|
-
class Controller {
|
|
193
|
-
@http.GET('a').group('a')
|
|
194
|
-
a() {
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
@http.GET('b')
|
|
198
|
-
b() {
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
@http.GET('c').group('c')
|
|
202
|
-
c() {
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
const httpData = httpClass._fetch(Controller);
|
|
207
|
-
if (!httpData) throw new Error('httpClass undefined');
|
|
208
|
-
expect(httpData.getAction('a').groups).toEqual(['a']);
|
|
209
|
-
expect(httpData.getAction('b').groups).toEqual([]);
|
|
210
|
-
expect(httpData.getAction('c').groups).toEqual(['c']);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
{
|
|
214
|
-
@http.groupAll('all')
|
|
215
|
-
class Controller {
|
|
216
|
-
@http.GET('a').group('a')
|
|
217
|
-
a() {
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
@http.GET('b')
|
|
221
|
-
b() {
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
@http.GET('c').group('c')
|
|
225
|
-
c() {
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
const httpData = httpClass._fetch(Controller);
|
|
230
|
-
if (!httpData) throw new Error('httpClass undefined');
|
|
231
|
-
expect(httpData.getAction('a').groups).toEqual(['a', 'all']);
|
|
232
|
-
expect(httpData.getAction('b').groups).toEqual(['all']);
|
|
233
|
-
expect(httpData.getAction('c').groups).toEqual(['c', 'all']);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
expect(() => {
|
|
237
|
-
@http.group('all')
|
|
238
|
-
class ControllerC {
|
|
239
|
-
}
|
|
240
|
-
}).toThrow('Property decorators can only be used on class properties');
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
test('router query', async () => {
|
|
244
|
-
class Controller {
|
|
245
|
-
@http.GET('my-action')
|
|
246
|
-
anyReq(@http.query().optional test?: number) {
|
|
247
|
-
return test;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
const httpData = httpClass._fetch(Controller);
|
|
252
|
-
if (!httpData) throw new Error('httpClass undefined');
|
|
253
|
-
const action = [...httpData.getActions()][0];
|
|
254
|
-
expect(action.methodName).toBe('anyReq');
|
|
255
|
-
expect(action.httpMethod).toBe('GET');
|
|
256
|
-
expect(action.parameters['test']).not.toBeUndefined();
|
|
257
|
-
expect(action.parameters['test'].name).toBe('test');
|
|
258
|
-
expect(action.parameters['test'].type).toBe('query');
|
|
259
|
-
|
|
260
|
-
const httpKernel = createHttpKernel([Controller]);
|
|
261
|
-
|
|
262
|
-
expect(await httpKernel.handleRequestFor('GET', '/my-action?test=123')).toEqual(123);
|
|
263
|
-
expect(await httpKernel.handleRequestFor('GET', '/my-action')).toEqual(undefined);
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
test('router query all', async () => {
|
|
267
|
-
class AnyReqQuery {
|
|
268
|
-
@t.optional test?: string;
|
|
269
|
-
@t.optional filter?: string;
|
|
270
|
-
@t.optional page?: number;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
class Controller {
|
|
274
|
-
@http.GET('my-action')
|
|
275
|
-
anyReq(@http.queries() anyReqQuery: AnyReqQuery) {
|
|
276
|
-
return anyReqQuery;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
const httpKernel = createHttpKernel([Controller]);
|
|
281
|
-
|
|
282
|
-
expect(await httpKernel.handleRequestFor('GET', '/my-action?test=123')).toEqual({ test: '123' });
|
|
283
|
-
expect(await httpKernel.handleRequestFor('GET', '/my-action')).toEqual({});
|
|
284
|
-
expect(await httpKernel.handleRequestFor('GET', '/my-action?filter=page&page=5')).toEqual({ filter: 'page', page: 5 });
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
test('router dotToUrlPath', () => {
|
|
289
|
-
expect(dotToUrlPath('peter')).toBe('peter');
|
|
290
|
-
expect(dotToUrlPath('foo.bar')).toBe('foo[bar]');
|
|
291
|
-
expect(dotToUrlPath('foo.bar.deep')).toBe('foo[bar][deep]');
|
|
292
|
-
expect(dotToUrlPath('foo.bar.deep.very')).toBe('foo[bar][deep][very]');
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
test('router url resolve', async () => {
|
|
296
|
-
class AnyReqQuery {
|
|
297
|
-
@t.optional test?: string;
|
|
298
|
-
@t.optional filter?: string;
|
|
299
|
-
@t.optional page?: number;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
class Controller {
|
|
303
|
-
@http.GET('').name('first')
|
|
304
|
-
first() {
|
|
305
|
-
return '';
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
@http.GET(':peter').name('second')
|
|
309
|
-
second(peter: string) {
|
|
310
|
-
return '';
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
@http.GET('').name('secondQuery')
|
|
314
|
-
secondQuery(@http.query() peter: string) {
|
|
315
|
-
return '';
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
@http.GET('').name('secondQuery2')
|
|
319
|
-
secondQuery2(@http.query('changed') peter: string) {
|
|
320
|
-
return '';
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
@http.GET('third').name('third')
|
|
324
|
-
third(@http.queries() params: AnyReqQuery) {
|
|
325
|
-
return params;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
@http.GET('third2').name('third2')
|
|
329
|
-
third2(@http.queries('deep') params: AnyReqQuery) {
|
|
330
|
-
return params;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
const router = Router.forControllers([Controller]);
|
|
335
|
-
|
|
336
|
-
expect(router.resolveUrl('first')).toBe('/');
|
|
337
|
-
expect(router.resolveUrl('second', { peter: 'foo' })).toBe('/foo');
|
|
338
|
-
expect(router.resolveUrl('secondQuery', { peter: 'foo' })).toBe('/?peter=foo');
|
|
339
|
-
expect(router.resolveUrl('secondQuery2', { peter: 'foo' })).toBe('/?changed=foo');
|
|
340
|
-
expect(router.resolveUrl('third', {})).toBe('/third');
|
|
341
|
-
expect(router.resolveUrl('third', { params: { test: 123 } })).toBe('/third?test=123');
|
|
342
|
-
expect(router.resolveUrl('third', { params: { test: 123, filter: 'peter' } })).toBe('/third?test=123&filter=peter');
|
|
343
|
-
|
|
344
|
-
expect(router.resolveUrl('third2', {})).toBe('/third2');
|
|
345
|
-
expect(router.resolveUrl('third2', { params: { test: 123 } })).toBe('/third2?deep[test]=123');
|
|
346
|
-
expect(router.resolveUrl('third2', { params: { test: 123, filter: 'peter' } })).toBe('/third2?deep[test]=123&deep[filter]=peter');
|
|
347
|
-
});
|