@antelopejs/api 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,739 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.TestWebsocketController1 = exports.TestExecutionController3 = exports.TestExecutionController2 = exports.TestExecutionController1 = exports.TestRoutingController3 = exports.TestRoutingController2 = exports.TestRoutingController1 = exports.TestRoutingController0 = void 0;
19
- const beta_1 = require("@ajs/api/beta");
20
- const decorators_1 = require("@ajs/core/beta/decorators");
21
- const assert_1 = __importDefault(require("assert"));
22
- const sinon_1 = __importDefault(require("sinon"));
23
- const stream_1 = require("stream");
24
- const ws_1 = __importDefault(require("ws"));
25
- const SpyMethod = (0, decorators_1.MakeMethodDecorator)((_target, _key, descriptor) => {
26
- descriptor.value = sinon_1.default.spy(descriptor.value);
27
- });
28
- const URL_BASE = 'http://127.0.0.1:5010';
29
- function FetchTest(name, options) {
30
- it(`${name}: ${options.method ?? 'GET'} ${options.route}`, async function () {
31
- const init = { method: options.method ?? 'GET' };
32
- if (options.prepare) {
33
- await options.prepare.apply(this, [init, options]);
34
- }
35
- const res = await fetch(URL_BASE + options.route, init);
36
- if (res.status !== options.status) {
37
- throw new Error(`Wrong response status (expected ${options.status}, got ${res.status}): ${await res.text()}`);
38
- }
39
- if (options.result !== undefined) {
40
- assert_1.default.equal(await res.text(), options.result, 'Incorrect response body');
41
- }
42
- if (options.callCount) {
43
- sinon_1.default.assert.callCount(options.callCount[0], options.callCount[1]);
44
- }
45
- if (options.postCheck) {
46
- await options.postCheck.apply(this, [res, options]);
47
- }
48
- });
49
- }
50
- class TestRoutingController0 extends (0, beta_1.Controller)('/') {
51
- test() { }
52
- testPrefixHigh() { }
53
- testPrefixLow() { }
54
- testPriority() { }
55
- testPostfixHigh() { }
56
- testPostfixLow() { }
57
- testPrefixEarlyReturn() {
58
- return 'Ok Early';
59
- }
60
- testEarlyReturn() {
61
- return 'Not Ok';
62
- }
63
- testOverride() {
64
- return 'Not Ok';
65
- }
66
- testPostfixOverride() {
67
- return 'Ok Override';
68
- }
69
- }
70
- exports.TestRoutingController0 = TestRoutingController0;
71
- __decorate([
72
- (0, beta_1.Get)(),
73
- __metadata("design:type", Function),
74
- __metadata("design:paramtypes", []),
75
- __metadata("design:returntype", void 0)
76
- ], TestRoutingController0.prototype, "test", null);
77
- __decorate([
78
- (0, beta_1.Prefix)('get', 'testPriority', beta_1.HandlerPriority.HIGH),
79
- SpyMethod(),
80
- __metadata("design:type", Function),
81
- __metadata("design:paramtypes", []),
82
- __metadata("design:returntype", void 0)
83
- ], TestRoutingController0.prototype, "testPrefixHigh", null);
84
- __decorate([
85
- (0, beta_1.Prefix)('get', 'testPriority', beta_1.HandlerPriority.LOW),
86
- SpyMethod(),
87
- __metadata("design:type", Function),
88
- __metadata("design:paramtypes", []),
89
- __metadata("design:returntype", void 0)
90
- ], TestRoutingController0.prototype, "testPrefixLow", null);
91
- __decorate([
92
- (0, beta_1.Get)(),
93
- SpyMethod(),
94
- __metadata("design:type", Function),
95
- __metadata("design:paramtypes", []),
96
- __metadata("design:returntype", void 0)
97
- ], TestRoutingController0.prototype, "testPriority", null);
98
- __decorate([
99
- (0, beta_1.Postfix)('get', 'testPriority', beta_1.HandlerPriority.HIGH),
100
- SpyMethod(),
101
- __metadata("design:type", Function),
102
- __metadata("design:paramtypes", []),
103
- __metadata("design:returntype", void 0)
104
- ], TestRoutingController0.prototype, "testPostfixHigh", null);
105
- __decorate([
106
- (0, beta_1.Postfix)('get', 'testPriority', beta_1.HandlerPriority.LOW),
107
- SpyMethod(),
108
- __metadata("design:type", Function),
109
- __metadata("design:paramtypes", []),
110
- __metadata("design:returntype", void 0)
111
- ], TestRoutingController0.prototype, "testPostfixLow", null);
112
- __decorate([
113
- (0, beta_1.Prefix)('get', 'testEarlyReturn'),
114
- SpyMethod(),
115
- __metadata("design:type", Function),
116
- __metadata("design:paramtypes", []),
117
- __metadata("design:returntype", void 0)
118
- ], TestRoutingController0.prototype, "testPrefixEarlyReturn", null);
119
- __decorate([
120
- (0, beta_1.Get)(),
121
- SpyMethod(),
122
- __metadata("design:type", Function),
123
- __metadata("design:paramtypes", []),
124
- __metadata("design:returntype", void 0)
125
- ], TestRoutingController0.prototype, "testEarlyReturn", null);
126
- __decorate([
127
- (0, beta_1.Get)(),
128
- SpyMethod(),
129
- __metadata("design:type", Function),
130
- __metadata("design:paramtypes", []),
131
- __metadata("design:returntype", void 0)
132
- ], TestRoutingController0.prototype, "testOverride", null);
133
- __decorate([
134
- (0, beta_1.Postfix)('get', 'testOverride'),
135
- SpyMethod(),
136
- __metadata("design:type", Function),
137
- __metadata("design:paramtypes", []),
138
- __metadata("design:returntype", void 0)
139
- ], TestRoutingController0.prototype, "testPostfixOverride", null);
140
- class TestRoutingController1 extends (0, beta_1.Controller)('/routing/controller1') {
141
- test() {
142
- return 'Ok';
143
- }
144
- testPost() {
145
- return 'Ok Post';
146
- }
147
- testPut() {
148
- return 'Ok Put';
149
- }
150
- testDelete() {
151
- return 'Ok Delete';
152
- }
153
- testCustom() {
154
- return 'Ok Patch';
155
- }
156
- }
157
- exports.TestRoutingController1 = TestRoutingController1;
158
- __decorate([
159
- (0, beta_1.Get)(),
160
- SpyMethod(),
161
- __metadata("design:type", Function),
162
- __metadata("design:paramtypes", []),
163
- __metadata("design:returntype", void 0)
164
- ], TestRoutingController1.prototype, "test", null);
165
- __decorate([
166
- (0, beta_1.Post)('test'),
167
- SpyMethod(),
168
- __metadata("design:type", Function),
169
- __metadata("design:paramtypes", []),
170
- __metadata("design:returntype", void 0)
171
- ], TestRoutingController1.prototype, "testPost", null);
172
- __decorate([
173
- (0, beta_1.Put)('test'),
174
- SpyMethod(),
175
- __metadata("design:type", Function),
176
- __metadata("design:paramtypes", []),
177
- __metadata("design:returntype", void 0)
178
- ], TestRoutingController1.prototype, "testPut", null);
179
- __decorate([
180
- (0, beta_1.Delete)('test'),
181
- SpyMethod(),
182
- __metadata("design:type", Function),
183
- __metadata("design:paramtypes", []),
184
- __metadata("design:returntype", void 0)
185
- ], TestRoutingController1.prototype, "testDelete", null);
186
- __decorate([
187
- (0, beta_1.Route)('handler', 'patch', 'test'),
188
- SpyMethod(),
189
- __metadata("design:type", Function),
190
- __metadata("design:paramtypes", []),
191
- __metadata("design:returntype", void 0)
192
- ], TestRoutingController1.prototype, "testCustom", null);
193
- class TestRoutingController2 extends TestRoutingController1.extend('/explicit') {
194
- test() {
195
- return 'Ok 2';
196
- }
197
- }
198
- exports.TestRoutingController2 = TestRoutingController2;
199
- __decorate([
200
- (0, beta_1.Get)(),
201
- __metadata("design:type", Function),
202
- __metadata("design:paramtypes", []),
203
- __metadata("design:returntype", void 0)
204
- ], TestRoutingController2.prototype, "test", null);
205
- class TestRoutingController3 extends (0, beta_1.Controller)('///routing///controller2///') {
206
- test() { }
207
- }
208
- exports.TestRoutingController3 = TestRoutingController3;
209
- __decorate([
210
- (0, beta_1.Get)(),
211
- __metadata("design:type", Function),
212
- __metadata("design:paramtypes", []),
213
- __metadata("design:returntype", void 0)
214
- ], TestRoutingController3.prototype, "test", null);
215
- describe('Routing', () => {
216
- describe('Controller', () => {
217
- FetchTest('Root Controller', { route: '/test', method: 'GET', status: 200 });
218
- FetchTest('Normal Controller', {
219
- route: '/routing/controller1/test',
220
- method: 'GET',
221
- status: 200,
222
- result: 'Ok',
223
- });
224
- FetchTest('Extended Controller', {
225
- route: '/routing/controller1/explicit/test',
226
- method: 'GET',
227
- status: 200,
228
- result: 'Ok 2',
229
- });
230
- FetchTest('Redundant Slash Controller', { route: '/routing/controller2/test', method: 'GET', status: 200 });
231
- });
232
- describe('Handler', () => {
233
- const testRoute1 = TestRoutingController1.prototype.test;
234
- FetchTest('Normal Call', {
235
- route: '/routing/controller1/test',
236
- method: 'GET',
237
- status: 200,
238
- callCount: [testRoute1, 1],
239
- prepare: () => testRoute1.resetHistory(),
240
- });
241
- FetchTest('Options Call', {
242
- route: '/routing/controller1/test',
243
- method: 'OPTIONS',
244
- status: 404,
245
- callCount: [testRoute1, 0],
246
- prepare: () => testRoute1.resetHistory(),
247
- });
248
- FetchTest('Head Call', {
249
- route: '/routing/controller1/test',
250
- method: 'HEAD',
251
- status: 200,
252
- result: '',
253
- callCount: [testRoute1, 1],
254
- prepare: () => testRoute1.resetHistory(),
255
- });
256
- FetchTest('Post Call', {
257
- route: '/routing/controller1/test',
258
- method: 'POST',
259
- status: 200,
260
- result: 'Ok Post',
261
- });
262
- FetchTest('Put Call', {
263
- route: '/routing/controller1/test',
264
- method: 'PUT',
265
- status: 200,
266
- result: 'Ok Put',
267
- });
268
- FetchTest('Delete Call', {
269
- route: '/routing/controller1/test',
270
- method: 'DELETE',
271
- status: 200,
272
- result: 'Ok Delete',
273
- });
274
- FetchTest('Custom Call (PATCH)', {
275
- route: '/routing/controller1/test',
276
- method: 'PATCH',
277
- status: 200,
278
- result: 'Ok Patch',
279
- });
280
- FetchTest('Prefix Priority', {
281
- route: '/testPriority',
282
- method: 'GET',
283
- status: 200,
284
- postCheck: () => {
285
- sinon_1.default.assert.callOrder(TestRoutingController0.prototype.testPrefixHigh, TestRoutingController0.prototype.testPrefixLow, TestRoutingController0.prototype.testPriority);
286
- },
287
- });
288
- FetchTest('Prefix Early Return', {
289
- route: '/testEarlyReturn',
290
- method: 'GET',
291
- status: 200,
292
- result: 'Ok Early',
293
- callCount: [TestRoutingController0.prototype.testEarlyReturn, 0],
294
- });
295
- FetchTest('Postfix Priority', {
296
- route: '/testPriority',
297
- method: 'GET',
298
- status: 200,
299
- postCheck: () => {
300
- sinon_1.default.assert.callOrder(TestRoutingController0.prototype.testPriority, TestRoutingController0.prototype.testPostfixHigh, TestRoutingController0.prototype.testPostfixLow);
301
- },
302
- });
303
- FetchTest('Postfix Override', {
304
- route: '/testOverride',
305
- method: 'GET',
306
- status: 200,
307
- result: 'Ok Override',
308
- callCount: [TestRoutingController0.prototype.testOverride, 1],
309
- });
310
- });
311
- });
312
- const ConstantProvider = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, index, value) => (0, beta_1.SetParameterProvider)(target, key, index, () => value));
313
- class TestExecutionController1 extends (0, beta_1.Controller)('/execution/controller1') {
314
- testProperty() {
315
- return this.prop;
316
- }
317
- testParameter(param) {
318
- return param;
319
- }
320
- }
321
- exports.TestExecutionController1 = TestExecutionController1;
322
- __decorate([
323
- ConstantProvider('Ok'),
324
- __metadata("design:type", String)
325
- ], TestExecutionController1.prototype, "prop", void 0);
326
- __decorate([
327
- (0, beta_1.Get)(),
328
- SpyMethod(),
329
- __metadata("design:type", Function),
330
- __metadata("design:paramtypes", []),
331
- __metadata("design:returntype", void 0)
332
- ], TestExecutionController1.prototype, "testProperty", null);
333
- __decorate([
334
- (0, beta_1.Get)(),
335
- SpyMethod(),
336
- __param(0, ConstantProvider('Ok')),
337
- __metadata("design:type", Function),
338
- __metadata("design:paramtypes", [String]),
339
- __metadata("design:returntype", void 0)
340
- ], TestExecutionController1.prototype, "testParameter", null);
341
- class TestExecutionController2 extends (0, beta_1.Controller)('/execution/controller2') {
342
- testProviderContext(_ctx) { }
343
- testProviderRawBody(_body) { }
344
- testProviderParameterParam(_param) { }
345
- testProviderParameterHeader(_param) { }
346
- testProviderParameterQuery(_param) { }
347
- testProviderMultiParameterHeader(_params) { }
348
- testProviderMultiParameterQuery(_params) { }
349
- testProviderWriteStream(param) {
350
- param.write('Ok');
351
- param.end();
352
- }
353
- testProviderResult() {
354
- return 'Ok';
355
- }
356
- testProviderResultPostfix(_res) { }
357
- testModifierTransform(_param) { }
358
- }
359
- exports.TestExecutionController2 = TestExecutionController2;
360
- __decorate([
361
- (0, beta_1.Get)(),
362
- SpyMethod(),
363
- __param(0, (0, beta_1.Context)()),
364
- __metadata("design:type", Function),
365
- __metadata("design:paramtypes", [Object]),
366
- __metadata("design:returntype", void 0)
367
- ], TestExecutionController2.prototype, "testProviderContext", null);
368
- __decorate([
369
- (0, beta_1.Post)(),
370
- SpyMethod(),
371
- __param(0, (0, beta_1.RawBody)()),
372
- __metadata("design:type", Function),
373
- __metadata("design:paramtypes", [Buffer]),
374
- __metadata("design:returntype", void 0)
375
- ], TestExecutionController2.prototype, "testProviderRawBody", null);
376
- __decorate([
377
- (0, beta_1.Get)('testProviderParameterParam/:key'),
378
- SpyMethod(),
379
- __param(0, (0, beta_1.Parameter)('key', 'param')),
380
- __metadata("design:type", Function),
381
- __metadata("design:paramtypes", [String]),
382
- __metadata("design:returntype", void 0)
383
- ], TestExecutionController2.prototype, "testProviderParameterParam", null);
384
- __decorate([
385
- (0, beta_1.Get)(),
386
- SpyMethod(),
387
- __param(0, (0, beta_1.Parameter)('key', 'header')),
388
- __metadata("design:type", Function),
389
- __metadata("design:paramtypes", [String]),
390
- __metadata("design:returntype", void 0)
391
- ], TestExecutionController2.prototype, "testProviderParameterHeader", null);
392
- __decorate([
393
- (0, beta_1.Get)(),
394
- SpyMethod(),
395
- __param(0, (0, beta_1.Parameter)('key', 'query')),
396
- __metadata("design:type", Function),
397
- __metadata("design:paramtypes", [String]),
398
- __metadata("design:returntype", void 0)
399
- ], TestExecutionController2.prototype, "testProviderParameterQuery", null);
400
- __decorate([
401
- (0, beta_1.Get)(),
402
- SpyMethod(),
403
- __param(0, (0, beta_1.MultiParameter)('key', 'header')),
404
- __metadata("design:type", Function),
405
- __metadata("design:paramtypes", [Array]),
406
- __metadata("design:returntype", void 0)
407
- ], TestExecutionController2.prototype, "testProviderMultiParameterHeader", null);
408
- __decorate([
409
- (0, beta_1.Get)(),
410
- SpyMethod(),
411
- __param(0, (0, beta_1.MultiParameter)('key', 'query')),
412
- __metadata("design:type", Function),
413
- __metadata("design:paramtypes", [Array]),
414
- __metadata("design:returntype", void 0)
415
- ], TestExecutionController2.prototype, "testProviderMultiParameterQuery", null);
416
- __decorate([
417
- (0, beta_1.Get)(),
418
- SpyMethod(),
419
- __param(0, (0, beta_1.WriteStream)()),
420
- __metadata("design:type", Function),
421
- __metadata("design:paramtypes", [stream_1.PassThrough]),
422
- __metadata("design:returntype", void 0)
423
- ], TestExecutionController2.prototype, "testProviderWriteStream", null);
424
- __decorate([
425
- (0, beta_1.Get)(),
426
- __metadata("design:type", Function),
427
- __metadata("design:paramtypes", []),
428
- __metadata("design:returntype", void 0)
429
- ], TestExecutionController2.prototype, "testProviderResult", null);
430
- __decorate([
431
- (0, beta_1.Postfix)('get', 'testProviderResult'),
432
- SpyMethod(),
433
- __param(0, (0, beta_1.Result)()),
434
- __metadata("design:type", Function),
435
- __metadata("design:paramtypes", [String]),
436
- __metadata("design:returntype", void 0)
437
- ], TestExecutionController2.prototype, "testProviderResultPostfix", null);
438
- __decorate([
439
- (0, beta_1.Get)(),
440
- SpyMethod(),
441
- __param(0, ConstantProvider('O')),
442
- __param(0, (0, beta_1.Transform)((_ctx, val) => val + 'k')),
443
- __metadata("design:type", Function),
444
- __metadata("design:paramtypes", [String]),
445
- __metadata("design:returntype", void 0)
446
- ], TestExecutionController2.prototype, "testModifierTransform", null);
447
- class TestExecutionController3 extends (0, beta_1.Controller)('/execution/controller3') {
448
- test() {
449
- return new beta_1.HTTPResult();
450
- }
451
- testThrow() {
452
- throw new beta_1.HTTPResult();
453
- }
454
- testStatus() {
455
- return new beta_1.HTTPResult(201);
456
- }
457
- testHeader() {
458
- const res = new beta_1.HTTPResult(200);
459
- res.addHeader('key', 'Ok');
460
- return res;
461
- }
462
- testBody() {
463
- return new beta_1.HTTPResult(200, 'Ok', 'text/plain');
464
- }
465
- testConsistencyPrefix(res) {
466
- res.addHeader('key1', 'Ok');
467
- }
468
- testConsistency(res) {
469
- res.addHeader('key2', 'Ok');
470
- res.setStatus(200);
471
- res.setBody('Ok', 'text/plain');
472
- return res;
473
- }
474
- testConsistencyPostfix(res) {
475
- res.addHeader('key3', 'Ok');
476
- }
477
- async testControllerInstance(ctx) {
478
- const controller1 = await (0, beta_1.GetControllerInstance)(TestExecutionController1, ctx);
479
- return controller1.prop;
480
- }
481
- }
482
- exports.TestExecutionController3 = TestExecutionController3;
483
- __decorate([
484
- (0, beta_1.Get)(),
485
- __metadata("design:type", Function),
486
- __metadata("design:paramtypes", []),
487
- __metadata("design:returntype", void 0)
488
- ], TestExecutionController3.prototype, "test", null);
489
- __decorate([
490
- (0, beta_1.Get)(),
491
- __metadata("design:type", Function),
492
- __metadata("design:paramtypes", []),
493
- __metadata("design:returntype", void 0)
494
- ], TestExecutionController3.prototype, "testThrow", null);
495
- __decorate([
496
- (0, beta_1.Get)(),
497
- __metadata("design:type", Function),
498
- __metadata("design:paramtypes", []),
499
- __metadata("design:returntype", void 0)
500
- ], TestExecutionController3.prototype, "testStatus", null);
501
- __decorate([
502
- (0, beta_1.Get)(),
503
- __metadata("design:type", Function),
504
- __metadata("design:paramtypes", []),
505
- __metadata("design:returntype", void 0)
506
- ], TestExecutionController3.prototype, "testHeader", null);
507
- __decorate([
508
- (0, beta_1.Get)(),
509
- __metadata("design:type", Function),
510
- __metadata("design:paramtypes", []),
511
- __metadata("design:returntype", void 0)
512
- ], TestExecutionController3.prototype, "testBody", null);
513
- __decorate([
514
- (0, beta_1.Postfix)('get', 'testConsistency'),
515
- __param(0, (0, beta_1.Result)()),
516
- __metadata("design:type", Function),
517
- __metadata("design:paramtypes", [beta_1.HTTPResult]),
518
- __metadata("design:returntype", void 0)
519
- ], TestExecutionController3.prototype, "testConsistencyPrefix", null);
520
- __decorate([
521
- (0, beta_1.Get)(),
522
- __param(0, (0, beta_1.Result)()),
523
- __metadata("design:type", Function),
524
- __metadata("design:paramtypes", [beta_1.HTTPResult]),
525
- __metadata("design:returntype", void 0)
526
- ], TestExecutionController3.prototype, "testConsistency", null);
527
- __decorate([
528
- (0, beta_1.Postfix)('get', 'testConsistency'),
529
- __param(0, (0, beta_1.Result)()),
530
- __metadata("design:type", Function),
531
- __metadata("design:paramtypes", [beta_1.HTTPResult]),
532
- __metadata("design:returntype", void 0)
533
- ], TestExecutionController3.prototype, "testConsistencyPostfix", null);
534
- __decorate([
535
- (0, beta_1.Get)(),
536
- SpyMethod(),
537
- __param(0, (0, beta_1.Context)()),
538
- __metadata("design:type", Function),
539
- __metadata("design:paramtypes", [Object]),
540
- __metadata("design:returntype", Promise)
541
- ], TestExecutionController3.prototype, "testControllerInstance", null);
542
- describe('Execution', () => {
543
- FetchTest('Property Access', {
544
- route: '/execution/controller1/testProperty',
545
- method: 'GET',
546
- status: 200,
547
- result: 'Ok',
548
- });
549
- FetchTest('Parameter Access', {
550
- route: '/execution/controller1/testParameter',
551
- method: 'GET',
552
- status: 200,
553
- result: 'Ok',
554
- });
555
- FetchTest('GetControllerInstance', {
556
- route: '/execution/controller3/testControllerInstance',
557
- method: 'GET',
558
- status: 200,
559
- result: 'Ok',
560
- });
561
- describe('Providers', () => {
562
- FetchTest('Context', {
563
- route: '/execution/controller2/testProviderContext',
564
- method: 'GET',
565
- status: 200,
566
- postCheck() {
567
- const res = TestExecutionController2.prototype.testProviderContext.lastCall
568
- .args[0];
569
- assert_1.default.equal(typeof res, 'object', 'Context object type');
570
- (0, assert_1.default)(res.rawRequest, 'Context object');
571
- },
572
- });
573
- FetchTest('RawBody', {
574
- route: '/execution/controller2/testProviderRawBody',
575
- method: 'POST',
576
- status: 200,
577
- prepare(init) {
578
- init.body = 'Test';
579
- },
580
- postCheck() {
581
- const res = TestExecutionController2.prototype.testProviderRawBody.lastCall.args[0];
582
- (0, assert_1.default)(Buffer.isBuffer(res), 'Buffer object');
583
- assert_1.default.equal(res.toString(), 'Test');
584
- },
585
- });
586
- FetchTest('Parameter (param)', {
587
- route: '/execution/controller2/testProviderParameterParam/Ok',
588
- method: 'GET',
589
- status: 200,
590
- postCheck() {
591
- assert_1.default.equal(TestExecutionController2.prototype.testProviderParameterParam.lastCall.args[0], 'Ok', 'Parameter value');
592
- },
593
- });
594
- FetchTest('Parameter (header)', {
595
- route: '/execution/controller2/testProviderParameterHeader',
596
- method: 'GET',
597
- status: 200,
598
- prepare(init) {
599
- init.headers = { key: 'Ok' };
600
- },
601
- postCheck() {
602
- assert_1.default.equal(TestExecutionController2.prototype.testProviderParameterHeader.lastCall.args[0], 'Ok', 'Parameter value');
603
- },
604
- });
605
- FetchTest('Parameter (query)', {
606
- route: '/execution/controller2/testProviderParameterQuery?key=Ok',
607
- method: 'GET',
608
- status: 200,
609
- postCheck() {
610
- assert_1.default.equal(TestExecutionController2.prototype.testProviderParameterQuery.lastCall.args[0], 'Ok', 'Parameter value');
611
- },
612
- });
613
- FetchTest('MultiParameter (header)', {
614
- route: '/execution/controller2/testProviderMultiParameterHeader',
615
- method: 'GET',
616
- status: 200,
617
- prepare(init) {
618
- init.headers = { key: ['Ok 1', 'Ok 2'] };
619
- },
620
- postCheck() {
621
- assert_1.default.equal(TestExecutionController2.prototype.testProviderMultiParameterHeader.lastCall.args[0].toString(), ['Ok 1', 'Ok 2'].toString(), 'Parameter value');
622
- },
623
- });
624
- FetchTest('MultiParameter (query)', {
625
- route: '/execution/controller2/testProviderMultiParameterQuery?key=Ok1&key=Ok2',
626
- method: 'GET',
627
- status: 200,
628
- postCheck() {
629
- assert_1.default.equal(TestExecutionController2.prototype.testProviderMultiParameterQuery.lastCall.args[0].toString(), ['Ok1', 'Ok2'].toString(), 'Parameter value');
630
- },
631
- });
632
- FetchTest('Result', {
633
- route: '/execution/controller2/testProviderResult',
634
- method: 'GET',
635
- status: 200,
636
- postCheck() {
637
- const res = TestExecutionController2.prototype.testProviderResultPostfix.lastCall
638
- .args[0];
639
- (0, assert_1.default)(res instanceof beta_1.HTTPResult, 'HTTPResult object');
640
- assert_1.default.equal(res.getBody(), 'Ok', 'HTTPResult value');
641
- },
642
- });
643
- FetchTest('WriteStream', {
644
- route: '/execution/controller2/testProviderWriteStream',
645
- method: 'Get',
646
- status: 200,
647
- result: 'Ok',
648
- postCheck() {
649
- const res = TestExecutionController2.prototype.testProviderWriteStream.lastCall
650
- .args[0];
651
- (0, assert_1.default)(res instanceof stream_1.PassThrough, 'Stream object');
652
- },
653
- });
654
- });
655
- describe('Modifiers', () => {
656
- FetchTest('Transform', {
657
- route: '/execution/controller2/testModifierTransform',
658
- method: 'GET',
659
- status: 200,
660
- postCheck() {
661
- assert_1.default.equal(TestExecutionController2.prototype.testModifierTransform.lastCall.args[0], 'Ok', 'Parameter value');
662
- },
663
- });
664
- });
665
- describe('HTTPResult', () => {
666
- FetchTest('Normal Return', { route: '/execution/controller3/test', method: 'GET', status: 200 });
667
- FetchTest('Throw', { route: '/execution/controller3/testThrow', method: 'GET', status: 200 });
668
- FetchTest('Status', { route: '/execution/controller3/testStatus', method: 'GET', status: 201 });
669
- FetchTest('Header', {
670
- route: '/execution/controller3/testHeader',
671
- method: 'GET',
672
- status: 200,
673
- postCheck(res) {
674
- assert_1.default.equal(res.headers.get('key'), 'Ok', 'Header value');
675
- },
676
- });
677
- FetchTest('Body', { route: '/execution/controller3/testBody', method: 'GET', status: 200, result: 'Ok' });
678
- FetchTest('Prefix/Postfix Consistency', {
679
- route: '/execution/controller3/testConsistency',
680
- method: 'GET',
681
- status: 200,
682
- result: 'Ok',
683
- postCheck(res) {
684
- assert_1.default.equal(res.headers.get('key1'), 'Ok', 'Prefix Header value');
685
- assert_1.default.equal(res.headers.get('key2'), 'Ok', 'Handler Header value');
686
- assert_1.default.equal(res.headers.get('key3'), 'Ok', 'Postfix Header value');
687
- },
688
- });
689
- });
690
- });
691
- const testWSReceiver = sinon_1.default.spy();
692
- let testWSSocket;
693
- class TestWebsocketController1 extends (0, beta_1.Controller)('/websocket/controller1') {
694
- test(connection) {
695
- testWSSocket = connection;
696
- connection.on('message', testWSReceiver);
697
- }
698
- }
699
- exports.TestWebsocketController1 = TestWebsocketController1;
700
- __decorate([
701
- (0, beta_1.WebsocketHandler)(),
702
- SpyMethod(),
703
- __param(0, (0, beta_1.Connection)()),
704
- __metadata("design:type", Function),
705
- __metadata("design:paramtypes", [ws_1.default]),
706
- __metadata("design:returntype", void 0)
707
- ], TestWebsocketController1.prototype, "test", null);
708
- describe('WebSocket', () => {
709
- let ws;
710
- const clientReceiver = sinon_1.default.spy();
711
- after(() => ws && ws.close());
712
- it('Connect', async () => {
713
- ws = new ws_1.default(URL_BASE + '/websocket/controller1/test');
714
- ws.on('message', clientReceiver);
715
- await new Promise((resolve, reject) => {
716
- ws.on('open', resolve);
717
- ws.on('error', reject);
718
- });
719
- });
720
- it('Client -> Server', async () => {
721
- ws.send('Ok');
722
- await new Promise((resolve) => setTimeout(resolve, 10));
723
- sinon_1.default.assert.calledOnce(testWSReceiver);
724
- assert_1.default.equal(testWSReceiver.lastCall.firstArg.toString(), 'Ok');
725
- });
726
- it('Client <- Server', async () => {
727
- testWSSocket.send('Ok');
728
- await new Promise((resolve) => setTimeout(resolve, 10));
729
- sinon_1.default.assert.calledOnce(clientReceiver);
730
- assert_1.default.equal(clientReceiver.lastCall.firstArg.toString(), 'Ok');
731
- });
732
- it('Close', async () => {
733
- await new Promise((resolve) => {
734
- ws.on('close', resolve);
735
- testWSSocket.close();
736
- });
737
- });
738
- });
739
- //# sourceMappingURL=api.js.map