@tsed/platform-test-sdk 7.83.3 → 8.0.0-alpha.10

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 (185) hide show
  1. package/lib/esm/components/PlatformTestSdk.js +1 -1
  2. package/lib/esm/components/PlatformTestSdk.js.map +1 -1
  3. package/lib/esm/modules/feature/FeatureModule.js.map +1 -1
  4. package/lib/esm/modules/feature/controllers/FeatureController.js +2 -1
  5. package/lib/esm/modules/feature/controllers/FeatureController.js.map +1 -1
  6. package/lib/esm/tests/exports.js +1 -1
  7. package/lib/esm/tests/exports.js.map +1 -1
  8. package/lib/esm/tests/testAcceptMime.js +3 -2
  9. package/lib/esm/tests/testAcceptMime.js.map +1 -1
  10. package/lib/esm/tests/testAuth.js +3 -2
  11. package/lib/esm/tests/testAuth.js.map +1 -1
  12. package/lib/esm/tests/testBodyParams.js +2 -1
  13. package/lib/esm/tests/testBodyParams.js.map +1 -1
  14. package/lib/esm/tests/testCache.js +4 -3
  15. package/lib/esm/tests/testCache.js.map +1 -1
  16. package/lib/esm/tests/testChildrenControllers.js +3 -1
  17. package/lib/esm/tests/testChildrenControllers.js.map +1 -1
  18. package/lib/esm/tests/testCookies.js +3 -1
  19. package/lib/esm/tests/testCookies.js.map +1 -1
  20. package/lib/esm/tests/testCustom404.js +1 -0
  21. package/lib/esm/tests/testCustom404.js.map +1 -1
  22. package/lib/esm/tests/testDeepQueryParams.js +3 -2
  23. package/lib/esm/tests/testDeepQueryParams.js.map +1 -1
  24. package/lib/esm/tests/testErrors.js +9 -8
  25. package/lib/esm/tests/testErrors.js.map +1 -1
  26. package/lib/esm/tests/testHandlers.js +3 -2
  27. package/lib/esm/tests/testHandlers.js.map +1 -1
  28. package/lib/esm/tests/testHeaderParams.js +3 -2
  29. package/lib/esm/tests/testHeaderParams.js.map +1 -1
  30. package/lib/esm/tests/testHeaders.js +7 -6
  31. package/lib/esm/tests/testHeaders.js.map +1 -1
  32. package/lib/esm/tests/testInheritanceController.js +4 -3
  33. package/lib/esm/tests/testInheritanceController.js.map +1 -1
  34. package/lib/esm/tests/testLocals.js +3 -1
  35. package/lib/esm/tests/testLocals.js.map +1 -1
  36. package/lib/esm/tests/testLocation.js +3 -2
  37. package/lib/esm/tests/testLocation.js.map +1 -1
  38. package/lib/esm/tests/testMiddlewares.js +3 -1
  39. package/lib/esm/tests/testMiddlewares.js.map +1 -1
  40. package/lib/esm/tests/testModule.js +3 -1
  41. package/lib/esm/tests/testModule.js.map +1 -1
  42. package/lib/esm/tests/testMulter.js +1 -0
  43. package/lib/esm/tests/testMulter.js.map +1 -1
  44. package/lib/esm/tests/testPathParams.js +3 -2
  45. package/lib/esm/tests/testPathParams.js.map +1 -1
  46. package/lib/esm/tests/testQueryParams.js +3 -2
  47. package/lib/esm/tests/testQueryParams.js.map +1 -1
  48. package/lib/esm/tests/testRedirect.js +4 -2
  49. package/lib/esm/tests/testRedirect.js.map +1 -1
  50. package/lib/esm/tests/testResponse.js +5 -4
  51. package/lib/esm/tests/testResponse.js.map +1 -1
  52. package/lib/esm/tests/testResponseFilter.js +5 -4
  53. package/lib/esm/tests/testResponseFilter.js.map +1 -1
  54. package/lib/esm/tests/testRouting.js +3 -1
  55. package/lib/esm/tests/testRouting.js.map +1 -1
  56. package/lib/esm/tests/testScopeRequest.js +3 -1
  57. package/lib/esm/tests/testScopeRequest.js.map +1 -1
  58. package/lib/esm/tests/testSession.js +3 -2
  59. package/lib/esm/tests/testSession.js.map +1 -1
  60. package/lib/esm/tests/testStatics.js +1 -0
  61. package/lib/esm/tests/testStatics.js.map +1 -1
  62. package/lib/esm/tests/testStream.js +3 -2
  63. package/lib/esm/tests/testStream.js.map +1 -1
  64. package/lib/esm/tests/testView.js +4 -2
  65. package/lib/esm/tests/testView.js.map +1 -1
  66. package/lib/types/components/PlatformTestSdk.d.ts +1 -1
  67. package/package.json +26 -24
  68. package/lib/cjs/components/PlatformTestSdk.js +0 -30
  69. package/lib/cjs/components/PlatformTestSdk.js.map +0 -1
  70. package/lib/cjs/data/response.data.json +0 -3
  71. package/lib/cjs/data/swagger.json +0 -32
  72. package/lib/cjs/errors/CustomBadRequest.js +0 -17
  73. package/lib/cjs/errors/CustomBadRequest.js.map +0 -1
  74. package/lib/cjs/errors/CustomInternalError.js +0 -17
  75. package/lib/cjs/errors/CustomInternalError.js.map +0 -1
  76. package/lib/cjs/index.js +0 -44
  77. package/lib/cjs/index.js.map +0 -1
  78. package/lib/cjs/interfaces/PlatformTestingSdkOpts.js +0 -3
  79. package/lib/cjs/interfaces/PlatformTestingSdkOpts.js.map +0 -1
  80. package/lib/cjs/interfaces/index.js +0 -8
  81. package/lib/cjs/interfaces/index.js.map +0 -1
  82. package/lib/cjs/modules/feature/FeatureModule.js +0 -17
  83. package/lib/cjs/modules/feature/FeatureModule.js.map +0 -1
  84. package/lib/cjs/modules/feature/controllers/FeatureController.js +0 -23
  85. package/lib/cjs/modules/feature/controllers/FeatureController.js.map +0 -1
  86. package/lib/cjs/package.json +0 -3
  87. package/lib/cjs/tests/exports.js +0 -68
  88. package/lib/cjs/tests/exports.js.map +0 -1
  89. package/lib/cjs/tests/testAcceptMime.js +0 -103
  90. package/lib/cjs/tests/testAcceptMime.js.map +0 -1
  91. package/lib/cjs/tests/testAuth.js +0 -343
  92. package/lib/cjs/tests/testAuth.js.map +0 -1
  93. package/lib/cjs/tests/testBodyParams.js +0 -539
  94. package/lib/cjs/tests/testBodyParams.js.map +0 -1
  95. package/lib/cjs/tests/testCache.js +0 -299
  96. package/lib/cjs/tests/testCache.js.map +0 -1
  97. package/lib/cjs/tests/testChildrenControllers.js +0 -64
  98. package/lib/cjs/tests/testChildrenControllers.js.map +0 -1
  99. package/lib/cjs/tests/testCookies.js +0 -45
  100. package/lib/cjs/tests/testCookies.js.map +0 -1
  101. package/lib/cjs/tests/testCustom404.js +0 -32
  102. package/lib/cjs/tests/testCustom404.js.map +0 -1
  103. package/lib/cjs/tests/testDeepQueryParams.js +0 -139
  104. package/lib/cjs/tests/testDeepQueryParams.js.map +0 -1
  105. package/lib/cjs/tests/testErrors.js +0 -253
  106. package/lib/cjs/tests/testErrors.js.map +0 -1
  107. package/lib/cjs/tests/testHandlers.js +0 -106
  108. package/lib/cjs/tests/testHandlers.js.map +0 -1
  109. package/lib/cjs/tests/testHeaderParams.js +0 -169
  110. package/lib/cjs/tests/testHeaderParams.js.map +0 -1
  111. package/lib/cjs/tests/testHeaders.js +0 -85
  112. package/lib/cjs/tests/testHeaders.js.map +0 -1
  113. package/lib/cjs/tests/testInheritanceController.js +0 -239
  114. package/lib/cjs/tests/testInheritanceController.js.map +0 -1
  115. package/lib/cjs/tests/testLocals.js +0 -63
  116. package/lib/cjs/tests/testLocals.js.map +0 -1
  117. package/lib/cjs/tests/testLocation.js +0 -42
  118. package/lib/cjs/tests/testLocation.js.map +0 -1
  119. package/lib/cjs/tests/testMiddlewares.js +0 -210
  120. package/lib/cjs/tests/testMiddlewares.js.map +0 -1
  121. package/lib/cjs/tests/testModule.js +0 -49
  122. package/lib/cjs/tests/testModule.js.map +0 -1
  123. package/lib/cjs/tests/testMulter.js +0 -169
  124. package/lib/cjs/tests/testMulter.js.map +0 -1
  125. package/lib/cjs/tests/testPathParams.js +0 -143
  126. package/lib/cjs/tests/testPathParams.js.map +0 -1
  127. package/lib/cjs/tests/testQueryParams.js +0 -241
  128. package/lib/cjs/tests/testQueryParams.js.map +0 -1
  129. package/lib/cjs/tests/testRedirect.js +0 -143
  130. package/lib/cjs/tests/testRedirect.js.map +0 -1
  131. package/lib/cjs/tests/testResponse.js +0 -569
  132. package/lib/cjs/tests/testResponse.js.map +0 -1
  133. package/lib/cjs/tests/testResponseFilter.js +0 -106
  134. package/lib/cjs/tests/testResponseFilter.js.map +0 -1
  135. package/lib/cjs/tests/testRouting.js +0 -77
  136. package/lib/cjs/tests/testRouting.js.map +0 -1
  137. package/lib/cjs/tests/testScopeRequest.js +0 -113
  138. package/lib/cjs/tests/testScopeRequest.js.map +0 -1
  139. package/lib/cjs/tests/testSession.js +0 -122
  140. package/lib/cjs/tests/testSession.js.map +0 -1
  141. package/lib/cjs/tests/testStatics.js +0 -58
  142. package/lib/cjs/tests/testStatics.js.map +0 -1
  143. package/lib/cjs/tests/testStream.js +0 -65
  144. package/lib/cjs/tests/testStream.js.map +0 -1
  145. package/lib/cjs/tests/testView.js +0 -83
  146. package/lib/cjs/tests/testView.js.map +0 -1
  147. package/lib/esm/package.json +0 -3
  148. package/lib/types-esm/components/PlatformTestSdk.d.ts +0 -9
  149. package/lib/types-esm/errors/CustomBadRequest.d.ts +0 -8
  150. package/lib/types-esm/errors/CustomInternalError.d.ts +0 -8
  151. package/lib/types-esm/index.d.ts +0 -40
  152. package/lib/types-esm/interfaces/PlatformTestingSdkOpts.d.ts +0 -8
  153. package/lib/types-esm/interfaces/index.d.ts +0 -4
  154. package/lib/types-esm/modules/feature/FeatureModule.d.ts +0 -2
  155. package/lib/types-esm/modules/feature/controllers/FeatureController.d.ts +0 -3
  156. package/lib/types-esm/tests/exports.d.ts +0 -2
  157. package/lib/types-esm/tests/testAcceptMime.d.ts +0 -2
  158. package/lib/types-esm/tests/testAuth.d.ts +0 -8
  159. package/lib/types-esm/tests/testBodyParams.d.ts +0 -3
  160. package/lib/types-esm/tests/testCache.d.ts +0 -2
  161. package/lib/types-esm/tests/testChildrenControllers.d.ts +0 -2
  162. package/lib/types-esm/tests/testCookies.d.ts +0 -11
  163. package/lib/types-esm/tests/testCustom404.d.ts +0 -2
  164. package/lib/types-esm/tests/testDeepQueryParams.d.ts +0 -3
  165. package/lib/types-esm/tests/testErrors.d.ts +0 -19
  166. package/lib/types-esm/tests/testHandlers.d.ts +0 -12
  167. package/lib/types-esm/tests/testHeaderParams.d.ts +0 -16
  168. package/lib/types-esm/tests/testHeaders.d.ts +0 -8
  169. package/lib/types-esm/tests/testInheritanceController.d.ts +0 -42
  170. package/lib/types-esm/tests/testLocals.d.ts +0 -2
  171. package/lib/types-esm/tests/testLocation.d.ts +0 -2
  172. package/lib/types-esm/tests/testMiddlewares.d.ts +0 -8
  173. package/lib/types-esm/tests/testModule.d.ts +0 -2
  174. package/lib/types-esm/tests/testMulter.d.ts +0 -21
  175. package/lib/types-esm/tests/testPathParams.d.ts +0 -2
  176. package/lib/types-esm/tests/testQueryParams.d.ts +0 -6
  177. package/lib/types-esm/tests/testRedirect.d.ts +0 -2
  178. package/lib/types-esm/tests/testResponse.d.ts +0 -16
  179. package/lib/types-esm/tests/testResponseFilter.d.ts +0 -2
  180. package/lib/types-esm/tests/testRouting.d.ts +0 -7
  181. package/lib/types-esm/tests/testScopeRequest.d.ts +0 -12
  182. package/lib/types-esm/tests/testSession.d.ts +0 -16
  183. package/lib/types-esm/tests/testStatics.d.ts +0 -2
  184. package/lib/types-esm/tests/testStream.d.ts +0 -2
  185. package/lib/types-esm/tests/testView.d.ts +0 -2
@@ -1,253 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testErrors = exports.ErrorsCtrl = void 0;
4
- const tslib_1 = require("tslib");
5
- require("@tsed/ajv");
6
- const common_1 = require("@tsed/common");
7
- const core_1 = require("@tsed/core");
8
- const exceptions_1 = require("@tsed/exceptions");
9
- const schema_1 = require("@tsed/schema");
10
- const supertest_1 = tslib_1.__importDefault(require("supertest"));
11
- const CustomBadRequest_js_1 = require("../errors/CustomBadRequest.js");
12
- const CustomInternalError_js_1 = require("../errors/CustomInternalError.js");
13
- class CustomModel {
14
- }
15
- tslib_1.__decorate([
16
- (0, schema_1.Required)(),
17
- tslib_1.__metadata("design:type", String)
18
- ], CustomModel.prototype, "name", void 0);
19
- class CustomPropModel {
20
- }
21
- tslib_1.__decorate([
22
- (0, schema_1.Name)("role_item"),
23
- (0, schema_1.Required)(),
24
- tslib_1.__metadata("design:type", String)
25
- ], CustomPropModel.prototype, "roleItem", void 0);
26
- let ErrorMiddleware = class ErrorMiddleware {
27
- use(error) {
28
- return {
29
- message: "no error"
30
- };
31
- }
32
- };
33
- tslib_1.__decorate([
34
- tslib_1.__param(0, (0, common_1.Err)()),
35
- tslib_1.__metadata("design:type", Function),
36
- tslib_1.__metadata("design:paramtypes", [Object]),
37
- tslib_1.__metadata("design:returntype", void 0)
38
- ], ErrorMiddleware.prototype, "use", null);
39
- ErrorMiddleware = tslib_1.__decorate([
40
- (0, common_1.Middleware)()
41
- ], ErrorMiddleware);
42
- let FakeMiddleware = class FakeMiddleware {
43
- use() {
44
- return {
45
- message: "should not be called by the platform when endpoint throw an error"
46
- };
47
- }
48
- };
49
- FakeMiddleware = tslib_1.__decorate([
50
- (0, common_1.Middleware)()
51
- ], FakeMiddleware);
52
- let ErrorsCtrl = class ErrorsCtrl {
53
- scenario1() {
54
- throw new CustomBadRequest_js_1.CustomBadRequest("Custom Bad Request");
55
- }
56
- scenario2() {
57
- throw new Error("My error");
58
- }
59
- scenario3() {
60
- throw new CustomInternalError_js_1.CustomInternalError("My custom error");
61
- }
62
- scenario4(name) {
63
- return name;
64
- }
65
- scenario5(model) {
66
- return model;
67
- }
68
- scenario6(model) {
69
- return model;
70
- }
71
- scenario7() {
72
- throw new CustomInternalError_js_1.CustomInternalError("My custom error");
73
- }
74
- };
75
- tslib_1.__decorate([
76
- (0, common_1.Get)("/scenario-1"),
77
- (0, schema_1.Returns)(500, exceptions_1.InternalServerError).Description("Custom Bad Request"),
78
- tslib_1.__metadata("design:type", Function),
79
- tslib_1.__metadata("design:paramtypes", []),
80
- tslib_1.__metadata("design:returntype", void 0)
81
- ], ErrorsCtrl.prototype, "scenario1", null);
82
- tslib_1.__decorate([
83
- (0, common_1.Get)("/scenario-2"),
84
- (0, schema_1.Returns)(500).Description("Internal Server Error"),
85
- tslib_1.__metadata("design:type", Function),
86
- tslib_1.__metadata("design:paramtypes", []),
87
- tslib_1.__metadata("design:returntype", void 0)
88
- ], ErrorsCtrl.prototype, "scenario2", null);
89
- tslib_1.__decorate([
90
- (0, common_1.Get)("/scenario-3"),
91
- (0, schema_1.Returns)(400, CustomInternalError_js_1.CustomInternalError).Description("Bad request"),
92
- tslib_1.__metadata("design:type", Function),
93
- tslib_1.__metadata("design:paramtypes", []),
94
- tslib_1.__metadata("design:returntype", void 0)
95
- ], ErrorsCtrl.prototype, "scenario3", null);
96
- tslib_1.__decorate([
97
- (0, common_1.Post)("/scenario-4"),
98
- (0, schema_1.Returns)(400),
99
- tslib_1.__param(0, (0, schema_1.Required)()),
100
- tslib_1.__param(0, (0, common_1.BodyParams)("name")),
101
- tslib_1.__metadata("design:type", Function),
102
- tslib_1.__metadata("design:paramtypes", [String]),
103
- tslib_1.__metadata("design:returntype", void 0)
104
- ], ErrorsCtrl.prototype, "scenario4", null);
105
- tslib_1.__decorate([
106
- (0, common_1.Post)("/scenario-5"),
107
- (0, schema_1.Returns)(400, exceptions_1.BadRequest).Description("Bad request"),
108
- tslib_1.__param(0, (0, schema_1.Required)()),
109
- tslib_1.__param(0, (0, common_1.BodyParams)()),
110
- tslib_1.__metadata("design:type", Function),
111
- tslib_1.__metadata("design:paramtypes", [CustomModel]),
112
- tslib_1.__metadata("design:returntype", void 0)
113
- ], ErrorsCtrl.prototype, "scenario5", null);
114
- tslib_1.__decorate([
115
- (0, common_1.Post)("/scenario-6"),
116
- (0, schema_1.Summary)("Throw a Required prop if prop name is required"),
117
- (0, schema_1.Description)(`Return a required error`),
118
- (0, schema_1.Returns)(400).Description("Bad request"),
119
- tslib_1.__param(0, (0, schema_1.Required)()),
120
- tslib_1.__param(0, (0, common_1.BodyParams)()),
121
- tslib_1.__metadata("design:type", Function),
122
- tslib_1.__metadata("design:paramtypes", [CustomPropModel]),
123
- tslib_1.__metadata("design:returntype", void 0)
124
- ], ErrorsCtrl.prototype, "scenario6", null);
125
- tslib_1.__decorate([
126
- (0, common_1.Get)("/scenario-7"),
127
- (0, schema_1.Returns)(400).Description("Bad request"),
128
- (0, common_1.UseAfter)(FakeMiddleware),
129
- (0, common_1.UseAfter)(ErrorMiddleware),
130
- tslib_1.__metadata("design:type", Function),
131
- tslib_1.__metadata("design:paramtypes", []),
132
- tslib_1.__metadata("design:returntype", void 0)
133
- ], ErrorsCtrl.prototype, "scenario7", null);
134
- ErrorsCtrl = tslib_1.__decorate([
135
- (0, common_1.Controller)("/errors")
136
- ], ErrorsCtrl);
137
- exports.ErrorsCtrl = ErrorsCtrl;
138
- function testErrors(options) {
139
- let request;
140
- beforeAll(common_1.PlatformTest.bootstrap(options.server, {
141
- ...options,
142
- env: core_1.Env.TEST,
143
- mount: {
144
- "/rest": [ErrorsCtrl]
145
- }
146
- }));
147
- beforeAll(() => {
148
- request = (0, supertest_1.default)(common_1.PlatformTest.callback());
149
- });
150
- afterAll(common_1.PlatformTest.reset);
151
- it("Scenario 1: GET /rest/errors/scenario-1", async () => {
152
- const response = await request.get("/rest/errors/scenario-1").expect(400);
153
- expect(response.headers["x-header-error"]).toEqual("deny");
154
- expect(response.body).toEqual({
155
- name: "CUSTOM_BAD_REQUEST",
156
- message: "Custom Bad Request",
157
- status: 400,
158
- errors: ["test"]
159
- });
160
- });
161
- it("Scenario 2: GET /rest/errors/scenario-2", async () => {
162
- const response = await request.get("/rest/errors/scenario-2").expect(500);
163
- expect(response.body).toEqual({
164
- errors: [],
165
- message: "My error",
166
- name: "Error",
167
- status: 500
168
- });
169
- });
170
- it("Scenario 3: GET /rest/errors/scenario-3", async () => {
171
- const response = await request.get("/rest/errors/scenario-3").expect(500);
172
- expect(response.headers["x-header-error"]).toEqual("deny");
173
- expect(response.body).toEqual({
174
- name: "CUSTOM_INTERNAL_SERVER_ERROR",
175
- message: "My custom error",
176
- status: 500,
177
- errors: ["test"]
178
- });
179
- });
180
- it("Scenario 4: POST /rest/errors/scenario-4", async () => {
181
- const response = await request.post("/rest/errors/scenario-4").expect(400);
182
- expect(response.body).toEqual({
183
- errors: [
184
- {
185
- dataPath: ".name",
186
- requestPath: "body",
187
- keyword: "required",
188
- message: "It should have required parameter 'name'",
189
- modelName: "body",
190
- params: {
191
- missingProperty: "name"
192
- },
193
- schemaPath: "#/required"
194
- }
195
- ],
196
- message: "Bad request on parameter \"request.body.name\".\nIt should have required parameter 'name'",
197
- name: "REQUIRED_VALIDATION_ERROR",
198
- status: 400
199
- });
200
- });
201
- it("Scenario 5: POST /rest/errors/scenario-5", async () => {
202
- const response = await request.post("/rest/errors/scenario-5").send({}).expect(400);
203
- expect(response.body).toEqual({
204
- errors: [
205
- {
206
- dataPath: ".name",
207
- requestPath: "body",
208
- instancePath: "",
209
- keyword: "required",
210
- message: "must have required property 'name'",
211
- modelName: "CustomModel",
212
- params: {
213
- missingProperty: "name"
214
- },
215
- schemaPath: "#/required"
216
- }
217
- ],
218
- message: 'Bad request on parameter "request.body".\nCustomModel must have required property \'name\'. Given value: "undefined"',
219
- name: "AJV_VALIDATION_ERROR",
220
- status: 400
221
- });
222
- });
223
- it("Scenario 6: POST /rest/errors/scenario-6", async () => {
224
- const response = await request.post(`/rest/errors/scenario-6`).send({}).expect(400);
225
- expect(response.body).toEqual({
226
- errors: [
227
- {
228
- dataPath: ".role_item",
229
- requestPath: "body",
230
- instancePath: "",
231
- keyword: "required",
232
- message: "must have required property 'role_item'",
233
- modelName: "CustomPropModel",
234
- params: {
235
- missingProperty: "role_item"
236
- },
237
- schemaPath: "#/required"
238
- }
239
- ],
240
- message: 'Bad request on parameter "request.body".\nCustomPropModel must have required property \'role_item\'. Given value: "undefined"',
241
- name: "AJV_VALIDATION_ERROR",
242
- status: 400
243
- });
244
- });
245
- it("Scenario 7: GET /rest/errors/scenario-7", async () => {
246
- const response = await request.get("/rest/errors/scenario-7").expect(200);
247
- expect(response.body).toEqual({
248
- message: "no error"
249
- });
250
- });
251
- }
252
- exports.testErrors = testErrors;
253
- //# sourceMappingURL=testErrors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testErrors.js","sourceRoot":"","sources":["../../../src/tests/testErrors.ts"],"names":[],"mappings":"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"}
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testHandlers = exports.HandlersCtrl = exports.MyModel = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@tsed/common");
6
- const schema_1 = require("@tsed/schema");
7
- const supertest_1 = tslib_1.__importDefault(require("supertest"));
8
- class MyModel {
9
- }
10
- tslib_1.__decorate([
11
- (0, schema_1.Title)("ID"),
12
- (0, schema_1.Property)(),
13
- tslib_1.__metadata("design:type", String)
14
- ], MyModel.prototype, "id", void 0);
15
- tslib_1.__decorate([
16
- (0, schema_1.Property)(),
17
- (0, schema_1.Required)(),
18
- tslib_1.__metadata("design:type", String)
19
- ], MyModel.prototype, "name", void 0);
20
- exports.MyModel = MyModel;
21
- let HandlersCtrl = class HandlersCtrl {
22
- scenario1(id) {
23
- const model = new MyModel();
24
- model.id = id;
25
- model.name = "test";
26
- return model;
27
- }
28
- scenario2(ctx, id) {
29
- const model = new MyModel();
30
- model.id = "1";
31
- model.name = "test";
32
- try {
33
- ctx.response.status(202).body(model);
34
- }
35
- catch (er) {
36
- console.log(er);
37
- }
38
- }
39
- scenario3(id) {
40
- const model = new MyModel();
41
- model.id = id;
42
- model.name = "test";
43
- return Promise.resolve(model);
44
- }
45
- };
46
- tslib_1.__decorate([
47
- (0, common_1.Get)("/scenario-1/:id") // Express style
48
- ,
49
- tslib_1.__param(0, (0, common_1.PathParams)("id")),
50
- tslib_1.__metadata("design:type", Function),
51
- tslib_1.__metadata("design:paramtypes", [String]),
52
- tslib_1.__metadata("design:returntype", MyModel)
53
- ], HandlersCtrl.prototype, "scenario1", null);
54
- tslib_1.__decorate([
55
- (0, common_1.Get)("/scenario-2/:id") // Ts.ED style with response injection
56
- ,
57
- tslib_1.__param(0, (0, common_1.Context)()),
58
- tslib_1.__param(1, (0, common_1.PathParams)("id")),
59
- tslib_1.__param(1, (0, schema_1.Required)()),
60
- tslib_1.__metadata("design:type", Function),
61
- tslib_1.__metadata("design:paramtypes", [Object, String]),
62
- tslib_1.__metadata("design:returntype", void 0)
63
- ], HandlersCtrl.prototype, "scenario2", null);
64
- tslib_1.__decorate([
65
- (0, common_1.Get)("/scenario-3/:id") // Ts.ED style
66
- ,
67
- tslib_1.__param(0, (0, common_1.PathParams)("id")),
68
- tslib_1.__metadata("design:type", Function),
69
- tslib_1.__metadata("design:paramtypes", [String]),
70
- tslib_1.__metadata("design:returntype", Promise)
71
- ], HandlersCtrl.prototype, "scenario3", null);
72
- HandlersCtrl = tslib_1.__decorate([
73
- (0, common_1.Controller)("/handlers")
74
- ], HandlersCtrl);
75
- exports.HandlersCtrl = HandlersCtrl;
76
- function testHandlers(options) {
77
- let request;
78
- beforeAll(common_1.PlatformTest.bootstrap(options.server, {
79
- ...options,
80
- logger: {},
81
- mount: {
82
- "/rest": [HandlersCtrl]
83
- }
84
- }));
85
- beforeAll(() => {
86
- request = (0, supertest_1.default)(common_1.PlatformTest.callback());
87
- });
88
- afterAll(common_1.PlatformTest.reset);
89
- it("Scenario 1: GET /rest/handlers/scenario-1/:id", async () => {
90
- const { body } = await request.get("/rest/handlers/scenario-1/1").expect(200);
91
- expect(body.id).toEqual("1");
92
- expect(body.name).toEqual("test");
93
- });
94
- it("Scenario 2: GET /rest/handlers/scenario-2/:id", async () => {
95
- const { body } = await request.get("/rest/handlers/scenario-2/1").expect(202);
96
- expect(body.id).toEqual("1");
97
- expect(body.name).toEqual("test");
98
- });
99
- it("Scenario 3: GET /rest/handlers/scenario-3/:id", async () => {
100
- const { body } = await request.get("/rest/handlers/scenario-3/1").expect(200);
101
- expect(body.id).toEqual("1");
102
- expect(body.name).toEqual("test");
103
- });
104
- }
105
- exports.testHandlers = testHandlers;
106
- //# sourceMappingURL=testHandlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testHandlers.js","sourceRoot":"","sources":["../../../src/tests/testHandlers.ts"],"names":[],"mappings":"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"}
@@ -1,169 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testHeaderParams = exports.HeaderParamsCtrl = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@tsed/common");
6
- const schema_1 = require("@tsed/schema");
7
- const supertest_1 = tslib_1.__importDefault(require("supertest"));
8
- let SetId = class SetId {
9
- use(request, locals, $ctx) {
10
- request["user"] = 1;
11
- locals.id = "local-10909";
12
- $ctx.set("uid", "ctx-10909");
13
- }
14
- };
15
- tslib_1.__decorate([
16
- tslib_1.__param(0, (0, common_1.Req)()),
17
- tslib_1.__param(1, (0, common_1.Locals)()),
18
- tslib_1.__param(2, (0, common_1.Context)()),
19
- tslib_1.__metadata("design:type", Function),
20
- tslib_1.__metadata("design:paramtypes", [Object, Object, Object]),
21
- tslib_1.__metadata("design:returntype", void 0)
22
- ], SetId.prototype, "use", null);
23
- SetId = tslib_1.__decorate([
24
- (0, common_1.Middleware)()
25
- ], SetId);
26
- let HeaderParamsCtrl = class HeaderParamsCtrl {
27
- /**
28
- * Handle request with a raw middleware + handler
29
- * Get Authorization from header
30
- * @param request
31
- * @param auth
32
- */
33
- scenario1(request, auth) {
34
- return {
35
- user: request.user,
36
- token: auth
37
- };
38
- }
39
- scenario2(contentType) {
40
- return { contentType };
41
- }
42
- testScenario3(token) {
43
- return { token };
44
- }
45
- };
46
- tslib_1.__decorate([
47
- (0, common_1.Get)("/scenario-1"),
48
- (0, common_1.Use)(SetId),
49
- tslib_1.__param(0, (0, common_1.Req)()),
50
- tslib_1.__param(1, (0, common_1.HeaderParams)("authorization")),
51
- tslib_1.__metadata("design:type", Function),
52
- tslib_1.__metadata("design:paramtypes", [Object, String]),
53
- tslib_1.__metadata("design:returntype", Object)
54
- ], HeaderParamsCtrl.prototype, "scenario1", null);
55
- tslib_1.__decorate([
56
- (0, common_1.Post)("/scenario-2"),
57
- tslib_1.__param(0, (0, common_1.HeaderParams)("Content-type")),
58
- tslib_1.__metadata("design:type", Function),
59
- tslib_1.__metadata("design:paramtypes", [String]),
60
- tslib_1.__metadata("design:returntype", void 0)
61
- ], HeaderParamsCtrl.prototype, "scenario2", null);
62
- tslib_1.__decorate([
63
- (0, common_1.Get)("/scenario-3"),
64
- tslib_1.__param(0, (0, common_1.HeaderParams)({
65
- expression: "x-token",
66
- useValidation: true
67
- })),
68
- tslib_1.__param(0, (0, schema_1.Required)()),
69
- tslib_1.__param(0, (0, schema_1.Enum)("test", "gcp")),
70
- tslib_1.__metadata("design:type", Function),
71
- tslib_1.__metadata("design:paramtypes", [String]),
72
- tslib_1.__metadata("design:returntype", Object)
73
- ], HeaderParamsCtrl.prototype, "testScenario3", null);
74
- HeaderParamsCtrl = tslib_1.__decorate([
75
- (0, common_1.Controller)("/header-params")
76
- ], HeaderParamsCtrl);
77
- exports.HeaderParamsCtrl = HeaderParamsCtrl;
78
- function testHeaderParams(options) {
79
- let request;
80
- beforeAll(common_1.PlatformTest.bootstrap(options.server, {
81
- ...options,
82
- mount: {
83
- "/rest": [HeaderParamsCtrl]
84
- }
85
- }));
86
- beforeAll(() => {
87
- request = (0, supertest_1.default)(common_1.PlatformTest.callback());
88
- });
89
- afterAll(common_1.PlatformTest.reset);
90
- describe("Scenario 1: GET /rest/header-params/scenario-1", () => {
91
- it("should return a response with the extracted authorization from the request headers", async () => {
92
- const { body } = await request
93
- .get("/rest/header-params/scenario-1")
94
- .set({
95
- Authorization: "tokenauth"
96
- })
97
- .expect(200);
98
- expect(body.user).toEqual(1);
99
- expect(body.token).toEqual("tokenauth");
100
- });
101
- });
102
- describe("Scenario 2: POST with contentType", () => {
103
- it("should return a response with the extracted contentType from the request headers", async () => {
104
- const response = await request
105
- .post("/rest/header-params/scenario-2")
106
- .send({})
107
- .set({
108
- "Content-Type": "application/json"
109
- })
110
- .expect(200);
111
- expect(response.body).toEqual({
112
- contentType: "application/json"
113
- });
114
- });
115
- });
116
- describe("Scenario3: GET /rest/headers/scenario-3", () => {
117
- it("should accept the header", async () => {
118
- const response = await request.get("/rest/header-params/scenario-3").set("x-token", "test").expect(200);
119
- expect(response.body).toEqual({
120
- token: "test"
121
- });
122
- });
123
- it("should not validate the header", async () => {
124
- const response = await request.get("/rest/header-params/scenario-3").expect(400);
125
- expect(response.body).toEqual({
126
- errors: [
127
- {
128
- requestPath: "header",
129
- dataPath: ".x-token",
130
- keyword: "required",
131
- message: "It should have required parameter 'x-token'",
132
- modelName: "header",
133
- params: {
134
- missingProperty: "x-token"
135
- },
136
- schemaPath: "#/required"
137
- }
138
- ],
139
- message: "Bad request on parameter \"request.header.x-token\".\nIt should have required parameter 'x-token'",
140
- name: "REQUIRED_VALIDATION_ERROR",
141
- status: 400
142
- });
143
- });
144
- it("should not validate the header - enum", async () => {
145
- const response = await request.get("/rest/header-params/scenario-3").set("x-token", "invalid").expect(400);
146
- expect(response.body).toEqual({
147
- errors: [
148
- {
149
- data: "invalid",
150
- requestPath: "header",
151
- dataPath: ".x-token",
152
- instancePath: "",
153
- keyword: "enum",
154
- message: "must be equal to one of the allowed values",
155
- params: {
156
- allowedValues: ["test", "gcp"]
157
- },
158
- schemaPath: "#/enum"
159
- }
160
- ],
161
- message: 'Bad request on parameter "request.header.x-token".\nValue must be equal to one of the allowed values. Given value: "invalid"',
162
- name: "AJV_VALIDATION_ERROR",
163
- status: 400
164
- });
165
- });
166
- });
167
- }
168
- exports.testHeaderParams = testHeaderParams;
169
- //# sourceMappingURL=testHeaderParams.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testHeaderParams.js","sourceRoot":"","sources":["../../../src/tests/testHeaderParams.ts"],"names":[],"mappings":"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"}
@@ -1,85 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testHeaders = exports.HeadersCtrl = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@tsed/common");
6
- const schema_1 = require("@tsed/schema");
7
- const supertest_1 = tslib_1.__importDefault(require("supertest"));
8
- let HeadersCtrl = class HeadersCtrl {
9
- testScenario1(value) {
10
- return "hello";
11
- }
12
- testScenario2() {
13
- return "<xml></xml>";
14
- }
15
- testScenario3(response) {
16
- response.setHeader("Location", `/v1/location`);
17
- return "Hello";
18
- }
19
- };
20
- tslib_1.__decorate([
21
- (0, common_1.Get)("/scenario-1"),
22
- (0, schema_1.Returns)(200, String).Header("test", "x-token"),
23
- tslib_1.__param(0, (0, common_1.BodyParams)("test")),
24
- tslib_1.__metadata("design:type", Function),
25
- tslib_1.__metadata("design:paramtypes", [Array]),
26
- tslib_1.__metadata("design:returntype", Object)
27
- ], HeadersCtrl.prototype, "testScenario1", null);
28
- tslib_1.__decorate([
29
- (0, common_1.Get)("/scenario-2"),
30
- (0, schema_1.Returns)(200, String).Header("x-token-test", "test").Header("x-token-test-2", "test2").ContentType("application/xml"),
31
- tslib_1.__metadata("design:type", Function),
32
- tslib_1.__metadata("design:paramtypes", []),
33
- tslib_1.__metadata("design:returntype", void 0)
34
- ], HeadersCtrl.prototype, "testScenario2", null);
35
- tslib_1.__decorate([
36
- (0, common_1.Get)("/scenario-3"),
37
- (0, schema_1.Returns)(200, String).Headers({
38
- Location: {
39
- description: "URL to the new xxx",
40
- type: "string",
41
- value: "/v1/location/header"
42
- }
43
- }),
44
- tslib_1.__param(0, (0, common_1.Res)()),
45
- tslib_1.__metadata("design:type", Function),
46
- tslib_1.__metadata("design:paramtypes", [common_1.PlatformResponse]),
47
- tslib_1.__metadata("design:returntype", void 0)
48
- ], HeadersCtrl.prototype, "testScenario3", null);
49
- HeadersCtrl = tslib_1.__decorate([
50
- (0, common_1.Controller)("/headers")
51
- ], HeadersCtrl);
52
- exports.HeadersCtrl = HeadersCtrl;
53
- function testHeaders(options) {
54
- let request;
55
- beforeAll(common_1.PlatformTest.bootstrap(options.server, {
56
- ...options,
57
- logger: {
58
- level: "off"
59
- },
60
- mount: {
61
- "/rest": [HeadersCtrl]
62
- }
63
- }));
64
- beforeAll(() => {
65
- request = (0, supertest_1.default)(common_1.PlatformTest.callback());
66
- });
67
- afterAll(common_1.PlatformTest.reset);
68
- it("Scenario1: GET /rest/headers/scenario-1", async () => {
69
- const response = await request.get("/rest/headers/scenario-1").expect(200);
70
- expect(response.text).toEqual("hello");
71
- expect(response.header["test"]).toEqual("x-token");
72
- });
73
- it("Scenario2: GET /rest/headers/scenario-2", async () => {
74
- const response = await request.get("/rest/headers/scenario-2").expect(200);
75
- expect(response.headers["x-token-test"]).toEqual("test");
76
- expect(response.headers["x-token-test-2"]).toEqual("test2");
77
- expect(response.headers["content-type"]).toContain("application/xml");
78
- });
79
- it("Scenario3: GET /rest/headers/scenario-3", async () => {
80
- const response = await request.get("/rest/headers/scenario-3").expect(200);
81
- expect(response.headers["location"]).toEqual("/v1/location");
82
- });
83
- }
84
- exports.testHeaders = testHeaders;
85
- //# sourceMappingURL=testHeaders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testHeaders.js","sourceRoot":"","sources":["../../../src/tests/testHeaders.ts"],"names":[],"mappings":"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"}