@venok/http 1.1.0 → 2.0.1-next.1

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 (337) hide show
  1. package/dist/constants.js +33 -0
  2. package/dist/decorators/controller.decorator.js +45 -0
  3. package/dist/decorators/header.decorator.js +28 -0
  4. package/dist/decorators/http-code.decorator.js +22 -0
  5. package/dist/decorators/http-params.decorator.js +63 -0
  6. package/dist/decorators/method.decorator.js +57 -0
  7. package/dist/decorators/redirect.decorator.js +28 -0
  8. package/dist/decorators/version.decorator.js +31 -0
  9. package/dist/enums/method.enum.js +32 -0
  10. package/dist/enums/paramtypes.enum.js +33 -0
  11. package/dist/enums/status.enum.js +71 -0
  12. package/dist/enums/version-type.enum.js +27 -0
  13. package/dist/exceptions/bad-gateway.exception.js +29 -0
  14. package/dist/exceptions/bad-request.exception.js +29 -0
  15. package/dist/exceptions/conflict.exception.js +29 -0
  16. package/dist/exceptions/expectation-failed.exception.js +29 -0
  17. package/dist/exceptions/failed-dependency.exception.js +29 -0
  18. package/dist/exceptions/forbidden.exception.js +29 -0
  19. package/dist/exceptions/gateway-timeout.exception.js +29 -0
  20. package/dist/exceptions/gone.exception.js +29 -0
  21. package/dist/exceptions/http-version-not-supported.exception.js +29 -0
  22. package/dist/exceptions/http.exception.js +94 -0
  23. package/dist/exceptions/im-a-teapot.exception.js +29 -0
  24. package/dist/exceptions/internal-server-error.exception.js +29 -0
  25. package/dist/exceptions/length-required.exception.js +29 -0
  26. package/dist/exceptions/method-not-allowed.exception.js +29 -0
  27. package/dist/exceptions/misdirected.exception.js +29 -0
  28. package/dist/exceptions/not-acceptable.exception.js +29 -0
  29. package/dist/exceptions/not-found.exception.js +29 -0
  30. package/dist/exceptions/not-implemented.exception.js +29 -0
  31. package/dist/exceptions/payload-too-large.exception.js +29 -0
  32. package/dist/exceptions/payment-required.exception.js +29 -0
  33. package/dist/exceptions/precondition-failed.exception.js +29 -0
  34. package/dist/exceptions/precondition-required.exception.js +29 -0
  35. package/dist/exceptions/proxy-authentication-required.exception.js +29 -0
  36. package/dist/exceptions/request-timeout.exception.js +29 -0
  37. package/dist/exceptions/requested-range-not-satisfiable.exception.js +29 -0
  38. package/dist/exceptions/service-unavailable.exception.js +29 -0
  39. package/dist/exceptions/too-many-requests.exception.js +29 -0
  40. package/dist/exceptions/unauthorized.exception.js +29 -0
  41. package/dist/exceptions/unprocessable-entity.exception.js +29 -0
  42. package/dist/exceptions/unsupported-media-type.exception.js +29 -0
  43. package/dist/exceptions/uri-too-long.exception.js +29 -0
  44. package/dist/filters/context.js +28 -0
  45. package/dist/filters/filter.js +56 -0
  46. package/dist/helpers/discovery.helper.js +69 -0
  47. package/dist/helpers/messages.helper.js +41 -0
  48. package/dist/helpers/middleware.helper.js +69 -0
  49. package/dist/helpers/path.helper.js +53 -0
  50. package/dist/helpers/route.helper.js +54 -0
  51. package/dist/http/adapter.js +294 -0
  52. package/dist/http/config.js +67 -0
  53. package/dist/http/configurable-module.js +26 -0
  54. package/dist/http/context.js +117 -0
  55. package/dist/http/explorer.js +133 -0
  56. package/dist/http/module.js +35 -0
  57. package/dist/http/starter-module.js +85 -0
  58. package/dist/index.d.ts +2117 -0
  59. package/dist/index.js +82 -0
  60. package/dist/interfaces/adapter.interface.js +0 -0
  61. package/dist/interfaces/exception.interface.js +0 -0
  62. package/dist/interfaces/index.js +7 -0
  63. package/dist/interfaces/middleware/config-proxy.interface.js +0 -0
  64. package/dist/interfaces/middleware/consumer.interface.js +0 -0
  65. package/dist/interfaces/middleware/index.js +3 -0
  66. package/dist/interfaces/options.interface.js +0 -0
  67. package/dist/interfaces/prefix.interface.js +0 -0
  68. package/dist/interfaces/router/definition.interface.js +0 -0
  69. package/dist/interfaces/router/exclude-route.interface.js +0 -0
  70. package/dist/interfaces/router/index.js +7 -0
  71. package/dist/interfaces/router/info.interface.js +0 -0
  72. package/dist/interfaces/router/path-metadata.interface.js +0 -0
  73. package/dist/interfaces/router/tree.interface.js +0 -0
  74. package/dist/interfaces/router/version.interface.js +21 -0
  75. package/dist/middleware/builder.js +96 -0
  76. package/dist/middleware/module.js +22 -0
  77. package/dist/middleware/routes-mapper.js +107 -0
  78. package/dist/middleware/service.js +48 -0
  79. package/dist/middleware/tree.js +91 -0
  80. package/dist/router/finder.js +64 -0
  81. package/dist/router/module.js +89 -0
  82. package/dist/router/path-factory.js +110 -0
  83. package/dist/symbols.js +33 -0
  84. package/package.json +41 -46
  85. package/adapter/adapter.d.ts +0 -57
  86. package/adapter/adapter.js +0 -58
  87. package/adapter/host.d.ts +0 -27
  88. package/adapter/host.js +0 -33
  89. package/application/application.d.ts +0 -18
  90. package/application/application.js +0 -51
  91. package/application/config.d.ts +0 -16
  92. package/application/config.js +0 -47
  93. package/application/http.module-defenition.d.ts +0 -8
  94. package/application/http.module-defenition.js +0 -6
  95. package/application/http.module.d.ts +0 -3
  96. package/application/http.module.js +0 -21
  97. package/application/http.service.d.ts +0 -11
  98. package/application/http.service.js +0 -43
  99. package/application/starter.d.ts +0 -41
  100. package/application/starter.js +0 -140
  101. package/constants.d.ts +0 -12
  102. package/constants.js +0 -15
  103. package/context/context.d.ts +0 -56
  104. package/context/context.js +0 -102
  105. package/context/response.controller.d.ts +0 -30
  106. package/context/response.controller.js +0 -86
  107. package/decorators/controller.decorator.d.ts +0 -82
  108. package/decorators/controller.decorator.js +0 -53
  109. package/decorators/header.decorator.d.ts +0 -12
  110. package/decorators/header.decorator.js +0 -23
  111. package/decorators/http-code.decorator.d.ts +0 -9
  112. package/decorators/http-code.decorator.js +0 -19
  113. package/decorators/index.d.ts +0 -9
  114. package/decorators/index.js +0 -25
  115. package/decorators/redirect.decorator.d.ts +0 -6
  116. package/decorators/redirect.decorator.js +0 -16
  117. package/decorators/render.decorator.d.ts +0 -10
  118. package/decorators/render.decorator.js +0 -20
  119. package/decorators/request-mapping.decorator.d.ts +0 -78
  120. package/decorators/request-mapping.decorator.js +0 -98
  121. package/decorators/route-params.decorator.d.ts +0 -378
  122. package/decorators/route-params.decorator.js +0 -227
  123. package/decorators/sse.decorator.d.ts +0 -6
  124. package/decorators/sse.decorator.js +0 -20
  125. package/decorators/version.decorator.d.ts +0 -7
  126. package/decorators/version.decorator.js +0 -20
  127. package/enums/http-status.enum.d.ts +0 -53
  128. package/enums/http-status.enum.js +0 -57
  129. package/enums/index.d.ts +0 -4
  130. package/enums/index.js +0 -20
  131. package/enums/request-method.enum.d.ts +0 -11
  132. package/enums/request-method.enum.js +0 -15
  133. package/enums/route-paramtypes.enum.d.ts +0 -14
  134. package/enums/route-paramtypes.enum.js +0 -18
  135. package/enums/version-type.enum.d.ts +0 -9
  136. package/enums/version-type.enum.js +0 -13
  137. package/errors/bad-gateway.exception.d.ts +0 -33
  138. package/errors/bad-gateway.exception.js +0 -41
  139. package/errors/bad-request.exception.d.ts +0 -33
  140. package/errors/bad-request.exception.js +0 -41
  141. package/errors/conflict.exception.d.ts +0 -33
  142. package/errors/conflict.exception.js +0 -41
  143. package/errors/forbidden.exception.d.ts +0 -33
  144. package/errors/forbidden.exception.js +0 -41
  145. package/errors/gateway-timeout.exception.d.ts +0 -33
  146. package/errors/gateway-timeout.exception.js +0 -41
  147. package/errors/gone.exception.d.ts +0 -33
  148. package/errors/gone.exception.js +0 -41
  149. package/errors/http-version-not-supported.exception.d.ts +0 -33
  150. package/errors/http-version-not-supported.exception.js +0 -41
  151. package/errors/http.exception.d.ts +0 -79
  152. package/errors/http.exception.js +0 -123
  153. package/errors/im-a-teapot.exception.d.ts +0 -36
  154. package/errors/im-a-teapot.exception.js +0 -44
  155. package/errors/index.d.ts +0 -11
  156. package/errors/index.js +0 -27
  157. package/errors/internal-server-error.exception.d.ts +0 -33
  158. package/errors/internal-server-error.exception.js +0 -41
  159. package/errors/invalid-middleware-configuration.exception.d.ts +0 -4
  160. package/errors/invalid-middleware-configuration.exception.js +0 -11
  161. package/errors/invalid-middleware.exception.d.ts +0 -4
  162. package/errors/invalid-middleware.exception.js +0 -11
  163. package/errors/not-found.exception.d.ts +0 -33
  164. package/errors/not-found.exception.js +0 -41
  165. package/errors/unknown-request-mapping.exception.d.ts +0 -5
  166. package/errors/unknown-request-mapping.exception.js +0 -11
  167. package/exceptions/messages.d.ts +0 -4
  168. package/exceptions/messages.js +0 -13
  169. package/explorers/path.explorer.d.ts +0 -8
  170. package/explorers/path.explorer.js +0 -38
  171. package/explorers/router.explorer.d.ts +0 -51
  172. package/explorers/router.explorer.js +0 -195
  173. package/factory/context-id.factory.d.ts +0 -41
  174. package/factory/context-id.factory.js +0 -52
  175. package/factory/index.d.ts +0 -4
  176. package/factory/index.js +0 -20
  177. package/factory/method.factory.d.ts +0 -5
  178. package/factory/method.factory.js +0 -30
  179. package/factory/params.factory.d.ts +0 -5
  180. package/factory/params.factory.js +0 -39
  181. package/factory/path.factory.d.ts +0 -13
  182. package/factory/path.factory.js +0 -95
  183. package/filters/context.d.ts +0 -9
  184. package/filters/context.js +0 -15
  185. package/filters/filter.d.ts +0 -22
  186. package/filters/filter.js +0 -78
  187. package/helpers/adapter.helper.d.ts +0 -27
  188. package/helpers/adapter.helper.js +0 -37
  189. package/helpers/exclude-route.helper.d.ts +0 -4
  190. package/helpers/exclude-route.helper.js +0 -18
  191. package/helpers/flatten-routes.helper.d.ts +0 -5
  192. package/helpers/flatten-routes.helper.js +0 -27
  193. package/helpers/index.d.ts +0 -6
  194. package/helpers/index.js +0 -22
  195. package/helpers/messages.helper.d.ts +0 -6
  196. package/helpers/messages.helper.js +0 -25
  197. package/helpers/path.helper.d.ts +0 -3
  198. package/helpers/path.helper.js +0 -13
  199. package/helpers/sse.helper.d.ts +0 -45
  200. package/helpers/sse.helper.js +0 -83
  201. package/index.d.ts +0 -1
  202. package/index.js +0 -3
  203. package/interfaces/http/cors.interface.d.ts +0 -58
  204. package/interfaces/http/cors.interface.js +0 -2
  205. package/interfaces/http/exception.interface.d.ts +0 -6
  206. package/interfaces/http/exception.interface.js +0 -2
  207. package/interfaces/http/exclude-route.interface.d.ts +0 -15
  208. package/interfaces/http/exclude-route.interface.js +0 -2
  209. package/interfaces/http/index.d.ts +0 -10
  210. package/interfaces/http/index.js +0 -26
  211. package/interfaces/http/message-event.interface.d.ts +0 -6
  212. package/interfaces/http/message-event.interface.js +0 -2
  213. package/interfaces/http/module.inteface.d.ts +0 -5
  214. package/interfaces/http/module.inteface.js +0 -2
  215. package/interfaces/http/options.interface.d.ts +0 -127
  216. package/interfaces/http/options.interface.js +0 -2
  217. package/interfaces/http/path-metadata.interface.d.ts +0 -31
  218. package/interfaces/http/path-metadata.interface.js +0 -2
  219. package/interfaces/http/prefix-options.interface.d.ts +0 -7
  220. package/interfaces/http/prefix-options.interface.js +0 -2
  221. package/interfaces/http/raw-request.d.ts +0 -4
  222. package/interfaces/http/raw-request.js +0 -2
  223. package/interfaces/http/routes.interface.d.ts +0 -7
  224. package/interfaces/http/routes.interface.js +0 -2
  225. package/interfaces/http/server.interface.d.ts +0 -54
  226. package/interfaces/http/server.interface.js +0 -2
  227. package/interfaces/index.d.ts +0 -3
  228. package/interfaces/index.js +0 -19
  229. package/interfaces/middleware/config-proxy.interface.d.ts +0 -23
  230. package/interfaces/middleware/config-proxy.interface.js +0 -2
  231. package/interfaces/middleware/configuration.interface.d.ts +0 -12
  232. package/interfaces/middleware/configuration.interface.js +0 -2
  233. package/interfaces/middleware/consumer.interface.d.ts +0 -16
  234. package/interfaces/middleware/consumer.interface.js +0 -2
  235. package/interfaces/middleware/index.d.ts +0 -4
  236. package/interfaces/middleware/index.js +0 -20
  237. package/interfaces/middleware/middleware.interface.d.ts +0 -7
  238. package/interfaces/middleware/middleware.interface.js +0 -2
  239. package/interfaces/router/callback-paramtypes.interface.d.ts +0 -1
  240. package/interfaces/router/callback-paramtypes.interface.js +0 -2
  241. package/interfaces/router/definition.interface.d.ts +0 -10
  242. package/interfaces/router/definition.interface.js +0 -2
  243. package/interfaces/router/index.d.ts +0 -3
  244. package/interfaces/router/index.js +0 -19
  245. package/interfaces/router/version-options.interface.d.ts +0 -92
  246. package/interfaces/router/version-options.interface.js +0 -9
  247. package/middleware/builder.d.ts +0 -15
  248. package/middleware/builder.js +0 -78
  249. package/middleware/container.d.ts +0 -13
  250. package/middleware/container.js +0 -50
  251. package/middleware/extractor.d.ts +0 -15
  252. package/middleware/extractor.js +0 -50
  253. package/middleware/index.d.ts +0 -1
  254. package/middleware/index.js +0 -17
  255. package/middleware/module.d.ts +0 -33
  256. package/middleware/module.js +0 -180
  257. package/middleware/resolver.d.ts +0 -10
  258. package/middleware/resolver.js +0 -27
  259. package/middleware/routes-mapper.d.ts +0 -19
  260. package/middleware/routes-mapper.js +0 -111
  261. package/middleware/utils.d.ts +0 -8
  262. package/middleware/utils.js +0 -86
  263. package/router/module.d.ts +0 -18
  264. package/router/module.js +0 -88
  265. package/router/resolver.d.ts +0 -31
  266. package/router/resolver.js +0 -128
  267. package/storage/http-instance.storage.d.ts +0 -9
  268. package/storage/http-instance.storage.js +0 -19
  269. package/stream/index.d.ts +0 -1
  270. package/stream/index.js +0 -17
  271. package/stream/interfaces/index.d.ts +0 -2
  272. package/stream/interfaces/index.js +0 -18
  273. package/stream/interfaces/streamable-handler-response.interface.d.ts +0 -12
  274. package/stream/interfaces/streamable-handler-response.interface.js +0 -2
  275. package/stream/interfaces/streamable-options.interface.d.ts +0 -10
  276. package/stream/interfaces/streamable-options.interface.js +0 -2
  277. package/stream/streamable-file.d.ts +0 -22
  278. package/stream/streamable-file.js +0 -55
  279. package/test/context/response.controller.spec.d.ts +0 -1
  280. package/test/context/response.controller.spec.js +0 -328
  281. package/test/decorators/controller.decorator.spec.d.ts +0 -1
  282. package/test/decorators/controller.decorator.spec.js +0 -113
  283. package/test/decorators/header.decorator.spec.d.ts +0 -1
  284. package/test/decorators/header.decorator.spec.js +0 -33
  285. package/test/decorators/http-code.decorator.spec.d.ts +0 -1
  286. package/test/decorators/http-code.decorator.spec.js +0 -30
  287. package/test/decorators/redirect.decorator.spec.d.ts +0 -1
  288. package/test/decorators/redirect.decorator.spec.js +0 -36
  289. package/test/decorators/render.decorator.spec.d.ts +0 -1
  290. package/test/decorators/render.decorator.spec.js +0 -30
  291. package/test/decorators/request-mapping.decorator.spec.d.ts +0 -1
  292. package/test/decorators/request-mapping.decorator.spec.js +0 -85
  293. package/test/decorators/route-params.decorator.spec.d.ts +0 -1
  294. package/test/decorators/route-params.decorator.spec.js +0 -493
  295. package/test/decorators/sse.decorator.spec.d.ts +0 -1
  296. package/test/decorators/sse.decorator.spec.js +0 -35
  297. package/test/decorators/version.decorator.spec.d.ts +0 -1
  298. package/test/decorators/version.decorator.spec.js +0 -43
  299. package/test/exceptions/handler.spec.d.ts +0 -1
  300. package/test/exceptions/handler.spec.js +0 -145
  301. package/test/exceptions/proxy.spec.d.ts +0 -1
  302. package/test/exceptions/proxy.spec.js +0 -74
  303. package/test/explorers/path.explorer.spec.d.ts +0 -1
  304. package/test/explorers/path.explorer.spec.js +0 -190
  305. package/test/explorers/router.explorer.spec.d.ts +0 -1
  306. package/test/explorers/router.explorer.spec.js +0 -206
  307. package/test/factory/method.factory.spec.d.ts +0 -1
  308. package/test/factory/method.factory.spec.js +0 -33
  309. package/test/factory/params.factory.spec.d.ts +0 -1
  310. package/test/factory/params.factory.spec.js +0 -104
  311. package/test/factory/path.factory.spec.d.ts +0 -1
  312. package/test/factory/path.factory.spec.js +0 -260
  313. package/test/filters/context.spec.d.ts +0 -1
  314. package/test/filters/context.spec.js +0 -96
  315. package/test/filters/filter.spec.d.ts +0 -1
  316. package/test/filters/filter.spec.js +0 -96
  317. package/test/helpers/flatten-routes.helper.spec.d.ts +0 -1
  318. package/test/helpers/flatten-routes.helper.spec.js +0 -131
  319. package/test/helpers/sse.helper.spec.d.ts +0 -1
  320. package/test/helpers/sse.helper.spec.js +0 -132
  321. package/test/middleware/builder.spec.d.ts +0 -1
  322. package/test/middleware/builder.spec.js +0 -235
  323. package/test/middleware/container.spec.d.ts +0 -1
  324. package/test/middleware/container.spec.js +0 -81
  325. package/test/middleware/module.spec.d.ts +0 -1
  326. package/test/middleware/module.spec.js +0 -206
  327. package/test/middleware/route-info-path-extractor.spec.d.ts +0 -1
  328. package/test/middleware/route-info-path-extractor.spec.js +0 -123
  329. package/test/middleware/routes-mapper.spec.d.ts +0 -1
  330. package/test/middleware/routes-mapper.spec.js +0 -162
  331. package/test/middleware/utils.spec.d.ts +0 -1
  332. package/test/middleware/utils.spec.js +0 -132
  333. package/test/router/module.spec.d.ts +0 -1
  334. package/test/router/module.spec.js +0 -40
  335. package/test/router/resolver.spec.d.ts +0 -1
  336. package/test/router/resolver.spec.js +0 -326
  337. package/tsconfig.tsbuildinfo +0 -1
@@ -1,145 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chai_1 = require("chai");
7
- const http_errors_1 = __importDefault(require("http-errors"));
8
- const sinon_1 = __importDefault(require("sinon"));
9
- const adapter_helper_1 = require("@venok/http/helpers/adapter.helper");
10
- const execution_host_1 = require("../../../core/context/execution-host");
11
- const invalid_exception_filter_exception_1 = require("../../../core/errors/exceptions/invalid-exception-filter.exception");
12
- const shared_helper_1 = require("../../../core/helpers/shared.helper");
13
- const errors_1 = require("../../errors");
14
- const filter_1 = require("../../filters/filter");
15
- const handler_1 = require("../../../core/exceptions/handler");
16
- describe("VenokExceptionsHandler", () => {
17
- let adapter;
18
- let handler;
19
- let statusStub;
20
- let jsonStub;
21
- let response;
22
- beforeEach(() => {
23
- adapter = new adapter_helper_1.NoopHttpAdapter({});
24
- handler = new handler_1.VenokExceptionsHandler(new filter_1.HttpExceptionFilter(adapter));
25
- statusStub = sinon_1.default.stub();
26
- jsonStub = sinon_1.default.stub();
27
- response = {
28
- status: statusStub,
29
- json: jsonStub,
30
- };
31
- response.status.returns(response);
32
- response.json.returns(response);
33
- });
34
- describe("next", () => {
35
- beforeEach(() => {
36
- sinon_1.default.stub(adapter, "reply").callsFake((responseRef, body, statusCode) => {
37
- if (statusCode)
38
- responseRef.status(statusCode);
39
- if ((0, shared_helper_1.isNull)(body))
40
- return responseRef.send();
41
- return (0, shared_helper_1.isObject)(body) ? responseRef.json(body) : responseRef.send(String(body));
42
- });
43
- });
44
- it("should send expected response status code and message when exception is unknown", () => {
45
- handler.next(new Error(), new execution_host_1.ExecutionContextHost([0, response]));
46
- (0, chai_1.expect)(statusStub.calledWith(500)).to.be.true;
47
- (0, chai_1.expect)(jsonStub.calledWith({
48
- statusCode: 500,
49
- message: "Internal server error",
50
- })).to.be.true;
51
- });
52
- describe('when exception is instantiated by "http-errors" library', () => {
53
- it("should send expected response status code and message", () => {
54
- const error = new http_errors_1.default.NotFound("User does not exist");
55
- handler.next(error, new execution_host_1.ExecutionContextHost([0, response]));
56
- (0, chai_1.expect)(statusStub.calledWith(404)).to.be.true;
57
- (0, chai_1.expect)(jsonStub.calledWith({
58
- statusCode: 404,
59
- message: "User does not exist",
60
- })).to.be.true;
61
- });
62
- });
63
- describe("when exception is an instance of HttpException", () => {
64
- it("should send expected response status code and json object", () => {
65
- const status = 401;
66
- const message = {
67
- custom: "Unauthorized",
68
- };
69
- handler.next(new errors_1.HttpException(message, status), new execution_host_1.ExecutionContextHost([0, response]));
70
- (0, chai_1.expect)(statusStub.calledWith(status)).to.be.true;
71
- (0, chai_1.expect)(jsonStub.calledWith(message)).to.be.true;
72
- });
73
- it("should send expected response status code and transform message to json", () => {
74
- const status = 401;
75
- const message = "Unauthorized";
76
- handler.next(new errors_1.HttpException(message, status), new execution_host_1.ExecutionContextHost([0, response]));
77
- (0, chai_1.expect)(statusStub.calledWith(status)).to.be.true;
78
- (0, chai_1.expect)(jsonStub.calledWith({ message, statusCode: status })).to.be.true;
79
- });
80
- });
81
- describe('when "invokeCustomFilters" returns true', () => {
82
- beforeEach(() => {
83
- sinon_1.default.stub(handler, "invokeCustomFilters").returns(true);
84
- });
85
- it("should do nothing", () => {
86
- handler.next(new Error(), sinon_1.default.createStubInstance(execution_host_1.ExecutionContextHost));
87
- (0, chai_1.expect)(statusStub.notCalled).to.be.true;
88
- (0, chai_1.expect)(jsonStub.notCalled).to.be.true;
89
- });
90
- });
91
- });
92
- describe("setCustomFilters", () => {
93
- const filters = ["test", "test2"];
94
- it("should set custom filters", () => {
95
- handler.setCustomFilters(filters);
96
- (0, chai_1.expect)(handler.filters).to.be.eql(filters);
97
- });
98
- it("should throw exception when passed argument is not an array", () => {
99
- (0, chai_1.expect)(() => handler.setCustomFilters(null)).to.throws(invalid_exception_filter_exception_1.InvalidExceptionFilterException);
100
- });
101
- });
102
- describe("invokeCustomFilters", () => {
103
- describe("when filters array is empty", () => {
104
- it("should return false", () => {
105
- (0, chai_1.expect)(handler.invokeCustomFilters(null, null)).to.be.false;
106
- });
107
- });
108
- describe("when filters array is not empty", () => {
109
- let filters, funcSpy;
110
- class TestException {
111
- }
112
- beforeEach(() => {
113
- funcSpy = sinon_1.default.spy();
114
- });
115
- describe("when filter exists in filters array", () => {
116
- beforeEach(() => {
117
- filters = [{ exceptionMetatypes: [TestException], func: funcSpy }];
118
- handler.filters = filters;
119
- });
120
- it("should call funcSpy", () => {
121
- handler.invokeCustomFilters(new TestException(), null);
122
- (0, chai_1.expect)(funcSpy.notCalled).to.be.false;
123
- });
124
- it("should call funcSpy with exception and response passed as an arguments", () => {
125
- const exception = new TestException();
126
- const res = { foo: "bar" };
127
- handler.invokeCustomFilters(exception, res);
128
- (0, chai_1.expect)(funcSpy.calledWith(exception, res)).to.be.true;
129
- });
130
- it("should return true", () => {
131
- (0, chai_1.expect)(handler.invokeCustomFilters(new TestException(), null)).to.be.true;
132
- });
133
- });
134
- describe("when filter does not exists in filters array", () => {
135
- it("should not call funcSpy", () => {
136
- handler.invokeCustomFilters(new TestException(), null);
137
- (0, chai_1.expect)(funcSpy.notCalled).to.be.true;
138
- });
139
- it("should return false", () => {
140
- (0, chai_1.expect)(handler.invokeCustomFilters(new TestException(), null)).to.be.false;
141
- });
142
- });
143
- });
144
- });
145
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,74 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chai_1 = require("chai");
7
- const sinon_1 = __importDefault(require("sinon"));
8
- const adapter_helper_1 = require("@venok/http/helpers/adapter.helper");
9
- const execution_host_1 = require("../../../core/context/execution-host");
10
- const errors_1 = require("../../errors");
11
- const filter_1 = require("../../filters/filter");
12
- const context_1 = require("../../../core/context");
13
- const handler_1 = require("../../../core/exceptions/handler");
14
- describe("RouterProxy", () => {
15
- let routerProxy;
16
- let handler;
17
- const httpException = new errors_1.HttpException("test", 500);
18
- let nextStub;
19
- beforeEach(() => {
20
- handler = new handler_1.VenokExceptionsHandler(new filter_1.HttpExceptionFilter(new adapter_helper_1.NoopHttpAdapter({})));
21
- nextStub = sinon_1.default.stub(handler, "next");
22
- routerProxy = new context_1.VenokProxy();
23
- });
24
- describe("createProxy", () => {
25
- it("should method return thunk", () => {
26
- const proxy = routerProxy.createProxy(() => { }, handler);
27
- (0, chai_1.expect)(typeof proxy === "function").to.be.true;
28
- });
29
- it("should method encapsulate callback passed as argument", () => {
30
- const proxy = routerProxy.createProxy((req, res, next) => {
31
- throw httpException;
32
- }, handler);
33
- proxy(null, null, null);
34
- (0, chai_1.expect)(nextStub.calledOnce).to.be.true;
35
- (0, chai_1.expect)(nextStub.calledWith(httpException, new execution_host_1.ExecutionContextHost([null, null, null]))).to.be.true;
36
- });
37
- it("should method encapsulate async callback passed as argument", (done) => {
38
- const proxy = routerProxy.createProxy(async (req, res, next) => {
39
- throw httpException;
40
- }, handler);
41
- proxy(null, null, null);
42
- setTimeout(() => {
43
- (0, chai_1.expect)(nextStub.calledOnce).to.be.true;
44
- (0, chai_1.expect)(nextStub.calledWith(httpException, new execution_host_1.ExecutionContextHost([null, null, null]))).to.be.true;
45
- done();
46
- }, 0);
47
- });
48
- });
49
- describe("createExceptionLayerProxy", () => {
50
- it("should method return thunk", () => {
51
- const proxy = routerProxy.createProxy(() => { }, handler);
52
- (0, chai_1.expect)(typeof proxy === "function").to.be.true;
53
- });
54
- it("should method encapsulate callback passed as argument", () => {
55
- const proxy = routerProxy.createExceptionLayerProxy((err, req, res, next) => {
56
- throw httpException;
57
- }, handler);
58
- proxy(null, null, null, null);
59
- (0, chai_1.expect)(nextStub.calledOnce).to.be.true;
60
- (0, chai_1.expect)(nextStub.calledWith(httpException, new execution_host_1.ExecutionContextHost([null, null, null]))).to.be.true;
61
- });
62
- it("should method encapsulate async callback passed as argument", (done) => {
63
- const proxy = routerProxy.createExceptionLayerProxy(async (err, req, res, next) => {
64
- throw httpException;
65
- }, handler);
66
- proxy(null, null, null, null);
67
- setTimeout(() => {
68
- (0, chai_1.expect)(nextStub.calledOnce).to.be.true;
69
- (0, chai_1.expect)(nextStub.calledWith(httpException, new execution_host_1.ExecutionContextHost([null, null, null]))).to.be.true;
70
- done();
71
- }, 0);
72
- });
73
- });
74
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,190 +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
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const chai_1 = require("chai");
13
- const decorators_1 = require("../../decorators");
14
- const path_explorer_1 = require("../../explorers/path.explorer");
15
- const core_1 = require("../../../core");
16
- const enums_1 = require("../../enums");
17
- describe("PathExplorer", () => {
18
- let TestRoute = class TestRoute {
19
- getTest() { }
20
- postTest() { }
21
- anotherTest() { }
22
- getTestUsingArray() { }
23
- };
24
- __decorate([
25
- (0, decorators_1.Get)("test"),
26
- __metadata("design:type", Function),
27
- __metadata("design:paramtypes", []),
28
- __metadata("design:returntype", void 0)
29
- ], TestRoute.prototype, "getTest", null);
30
- __decorate([
31
- (0, decorators_1.Post)("test"),
32
- __metadata("design:type", Function),
33
- __metadata("design:paramtypes", []),
34
- __metadata("design:returntype", void 0)
35
- ], TestRoute.prototype, "postTest", null);
36
- __decorate([
37
- (0, decorators_1.All)("another-test"),
38
- __metadata("design:type", Function),
39
- __metadata("design:paramtypes", []),
40
- __metadata("design:returntype", void 0)
41
- ], TestRoute.prototype, "anotherTest", null);
42
- __decorate([
43
- (0, decorators_1.Get)(["foo", "bar"]),
44
- __metadata("design:type", Function),
45
- __metadata("design:paramtypes", []),
46
- __metadata("design:returntype", void 0)
47
- ], TestRoute.prototype, "getTestUsingArray", null);
48
- TestRoute = __decorate([
49
- (0, decorators_1.Controller)("global")
50
- ], TestRoute);
51
- let TestRouteAlias = class TestRouteAlias {
52
- getTest() { }
53
- postTest() { }
54
- anotherTest() { }
55
- getTestUsingArray() { }
56
- };
57
- __decorate([
58
- (0, decorators_1.Get)("test"),
59
- __metadata("design:type", Function),
60
- __metadata("design:paramtypes", []),
61
- __metadata("design:returntype", void 0)
62
- ], TestRouteAlias.prototype, "getTest", null);
63
- __decorate([
64
- (0, decorators_1.Post)("test"),
65
- __metadata("design:type", Function),
66
- __metadata("design:paramtypes", []),
67
- __metadata("design:returntype", void 0)
68
- ], TestRouteAlias.prototype, "postTest", null);
69
- __decorate([
70
- (0, decorators_1.All)("another-test"),
71
- __metadata("design:type", Function),
72
- __metadata("design:paramtypes", []),
73
- __metadata("design:returntype", void 0)
74
- ], TestRouteAlias.prototype, "anotherTest", null);
75
- __decorate([
76
- (0, decorators_1.Get)(["foo", "bar"]),
77
- __metadata("design:type", Function),
78
- __metadata("design:paramtypes", []),
79
- __metadata("design:returntype", void 0)
80
- ], TestRouteAlias.prototype, "getTestUsingArray", null);
81
- TestRouteAlias = __decorate([
82
- (0, decorators_1.Controller)(["global", "global-alias"])
83
- ], TestRouteAlias);
84
- let pathsExplorer;
85
- beforeEach(() => {
86
- pathsExplorer = new path_explorer_1.PathsExplorer(new core_1.MetadataScanner());
87
- });
88
- describe("scanForPaths", () => {
89
- it("should method return expected list of route paths", () => {
90
- const paths = pathsExplorer.scanForPaths(new TestRoute());
91
- (0, chai_1.expect)(paths).to.have.length(4);
92
- (0, chai_1.expect)(paths[0].path).to.eql(["/test"]);
93
- (0, chai_1.expect)(paths[1].path).to.eql(["/test"]);
94
- (0, chai_1.expect)(paths[2].path).to.eql(["/another-test"]);
95
- (0, chai_1.expect)(paths[3].path).to.eql(["/foo", "/bar"]);
96
- (0, chai_1.expect)(paths[0].requestMethod).to.eql(enums_1.RequestMethod.GET);
97
- (0, chai_1.expect)(paths[1].requestMethod).to.eql(enums_1.RequestMethod.POST);
98
- (0, chai_1.expect)(paths[2].requestMethod).to.eql(enums_1.RequestMethod.ALL);
99
- (0, chai_1.expect)(paths[3].requestMethod).to.eql(enums_1.RequestMethod.GET);
100
- });
101
- it("should method return expected list of route paths alias", () => {
102
- const paths = pathsExplorer.scanForPaths(new TestRouteAlias());
103
- (0, chai_1.expect)(paths).to.have.length(4);
104
- (0, chai_1.expect)(paths[0].path).to.eql(["/test"]);
105
- (0, chai_1.expect)(paths[1].path).to.eql(["/test"]);
106
- (0, chai_1.expect)(paths[2].path).to.eql(["/another-test"]);
107
- (0, chai_1.expect)(paths[3].path).to.eql(["/foo", "/bar"]);
108
- (0, chai_1.expect)(paths[0].requestMethod).to.eql(enums_1.RequestMethod.GET);
109
- (0, chai_1.expect)(paths[1].requestMethod).to.eql(enums_1.RequestMethod.POST);
110
- (0, chai_1.expect)(paths[2].requestMethod).to.eql(enums_1.RequestMethod.ALL);
111
- (0, chai_1.expect)(paths[3].requestMethod).to.eql(enums_1.RequestMethod.GET);
112
- });
113
- });
114
- describe("exploreMethodMetadata", () => {
115
- it("should method return expected object which represent single route", () => {
116
- const instance = new TestRoute();
117
- const instanceProto = Object.getPrototypeOf(instance);
118
- const route = pathsExplorer.exploreMethodMetadata(instance, instanceProto, "getTest");
119
- (0, chai_1.expect)(route.path).to.eql(["/test"]);
120
- (0, chai_1.expect)(route.requestMethod).to.eql(enums_1.RequestMethod.GET);
121
- (0, chai_1.expect)(route.targetCallback).to.eq(instance.getTest);
122
- });
123
- it("should method return expected object which represent single route with alias", () => {
124
- const instance = new TestRouteAlias();
125
- const instanceProto = Object.getPrototypeOf(instance);
126
- const route = pathsExplorer.exploreMethodMetadata(instance, instanceProto, "getTest");
127
- (0, chai_1.expect)(route.path).to.eql(["/test"]);
128
- (0, chai_1.expect)(route.requestMethod).to.eql(enums_1.RequestMethod.GET);
129
- (0, chai_1.expect)(route.targetCallback).to.eq(instance.getTest);
130
- });
131
- it("should method return expected object which represent multiple routes", () => {
132
- const instance = new TestRoute();
133
- const instanceProto = Object.getPrototypeOf(instance);
134
- const route = pathsExplorer.exploreMethodMetadata(instance, instanceProto, "getTestUsingArray");
135
- (0, chai_1.expect)(route.path).to.eql(["/foo", "/bar"]);
136
- (0, chai_1.expect)(route.requestMethod).to.eql(enums_1.RequestMethod.GET);
137
- (0, chai_1.expect)(route.targetCallback).to.eq(instance.getTestUsingArray);
138
- });
139
- it("should method return expected object which represent multiple routes with alias", () => {
140
- const instance = new TestRouteAlias();
141
- const instanceProto = Object.getPrototypeOf(instance);
142
- const route = pathsExplorer.exploreMethodMetadata(instance, instanceProto, "getTestUsingArray");
143
- (0, chai_1.expect)(route.path).to.eql(["/foo", "/bar"]);
144
- (0, chai_1.expect)(route.requestMethod).to.eql(enums_1.RequestMethod.GET);
145
- (0, chai_1.expect)(route.targetCallback).to.eq(instance.getTestUsingArray);
146
- });
147
- describe("when new implementation is injected into router", () => {
148
- it("should method return changed impl of single route", () => {
149
- const instance = new TestRoute();
150
- const instanceProto = Object.getPrototypeOf(instance);
151
- const newImpl = function () { };
152
- instance.getTest = newImpl;
153
- const route = pathsExplorer.exploreMethodMetadata(instance, instanceProto, "getTest");
154
- (0, chai_1.expect)(route.targetCallback).to.eq(newImpl);
155
- (0, chai_1.expect)(route.path).to.eql(["/test"]);
156
- (0, chai_1.expect)(route.requestMethod).to.eql(enums_1.RequestMethod.GET);
157
- });
158
- it("should method return changed impl of single route which alias applied", () => {
159
- const instance = new TestRouteAlias();
160
- const instanceProto = Object.getPrototypeOf(instance);
161
- const newImpl = function () { };
162
- instance.getTest = newImpl;
163
- const route = pathsExplorer.exploreMethodMetadata(instance, instanceProto, "getTest");
164
- (0, chai_1.expect)(route.targetCallback).to.eq(newImpl);
165
- (0, chai_1.expect)(route.path).to.eql(["/test"]);
166
- (0, chai_1.expect)(route.requestMethod).to.eql(enums_1.RequestMethod.GET);
167
- });
168
- it("should method return changed impl of multiple routes", () => {
169
- const instance = new TestRoute();
170
- const instanceProto = Object.getPrototypeOf(instance);
171
- const newImpl = function () { };
172
- instance.getTestUsingArray = newImpl;
173
- const route = pathsExplorer.exploreMethodMetadata(instance, instanceProto, "getTestUsingArray");
174
- (0, chai_1.expect)(route.targetCallback).to.eq(newImpl);
175
- (0, chai_1.expect)(route.path).to.eql(["/foo", "/bar"]);
176
- (0, chai_1.expect)(route.requestMethod).to.eql(enums_1.RequestMethod.GET);
177
- });
178
- it("should method return changed impl of multiple routes which alias applied", () => {
179
- const instance = new TestRouteAlias();
180
- const instanceProto = Object.getPrototypeOf(instance);
181
- const newImpl = function () { };
182
- instance.getTestUsingArray = newImpl;
183
- const route = pathsExplorer.exploreMethodMetadata(instance, instanceProto, "getTestUsingArray");
184
- (0, chai_1.expect)(route.targetCallback).to.eq(newImpl);
185
- (0, chai_1.expect)(route.path).to.eql(["/foo", "/bar"]);
186
- (0, chai_1.expect)(route.requestMethod).to.eql(enums_1.RequestMethod.GET);
187
- });
188
- });
189
- });
190
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,206 +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 __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const chai_1 = require("chai");
16
- const sinon_1 = __importDefault(require("sinon"));
17
- const decorators_1 = require("../../decorators");
18
- const router_explorer_1 = require("../../explorers/router.explorer");
19
- const injector_1 = require("../../../core/injector/injector");
20
- const context_1 = require("../../filters/context");
21
- const core_1 = require("../../../core");
22
- const factory_1 = require("../../factory");
23
- const graph_inspector_1 = require("../../../core/inspector/graph-inspector");
24
- const config_1 = require("../../application/config");
25
- const enums_1 = require("../../enums");
26
- const wrapper_1 = require("../../../core/injector/instance/wrapper");
27
- const execution_host_1 = require("../../../core/context/execution-host");
28
- const helpers_1 = require("../../helpers");
29
- describe("RouterExplorer", () => {
30
- let TestRoute = class TestRoute {
31
- getTest() { }
32
- postTest() { }
33
- anotherTest() { }
34
- getTestUsingArray() { }
35
- };
36
- __decorate([
37
- (0, decorators_1.Get)("test"),
38
- __metadata("design:type", Function),
39
- __metadata("design:paramtypes", []),
40
- __metadata("design:returntype", void 0)
41
- ], TestRoute.prototype, "getTest", null);
42
- __decorate([
43
- (0, decorators_1.Post)("test"),
44
- __metadata("design:type", Function),
45
- __metadata("design:paramtypes", []),
46
- __metadata("design:returntype", void 0)
47
- ], TestRoute.prototype, "postTest", null);
48
- __decorate([
49
- (0, decorators_1.All)("another-test"),
50
- __metadata("design:type", Function),
51
- __metadata("design:paramtypes", []),
52
- __metadata("design:returntype", void 0)
53
- ], TestRoute.prototype, "anotherTest", null);
54
- __decorate([
55
- (0, decorators_1.Get)(["foo", "bar"]),
56
- __metadata("design:type", Function),
57
- __metadata("design:paramtypes", []),
58
- __metadata("design:returntype", void 0)
59
- ], TestRoute.prototype, "getTestUsingArray", null);
60
- TestRoute = __decorate([
61
- (0, decorators_1.Controller)("global")
62
- ], TestRoute);
63
- let TestRouteAlias = class TestRouteAlias {
64
- getTest() { }
65
- postTest() { }
66
- anotherTest() { }
67
- getTestUsingArray() { }
68
- };
69
- __decorate([
70
- (0, decorators_1.Get)("test"),
71
- __metadata("design:type", Function),
72
- __metadata("design:paramtypes", []),
73
- __metadata("design:returntype", void 0)
74
- ], TestRouteAlias.prototype, "getTest", null);
75
- __decorate([
76
- (0, decorators_1.Post)("test"),
77
- __metadata("design:type", Function),
78
- __metadata("design:paramtypes", []),
79
- __metadata("design:returntype", void 0)
80
- ], TestRouteAlias.prototype, "postTest", null);
81
- __decorate([
82
- (0, decorators_1.All)("another-test"),
83
- __metadata("design:type", Function),
84
- __metadata("design:paramtypes", []),
85
- __metadata("design:returntype", void 0)
86
- ], TestRouteAlias.prototype, "anotherTest", null);
87
- __decorate([
88
- (0, decorators_1.Get)(["foo", "bar"]),
89
- __metadata("design:type", Function),
90
- __metadata("design:paramtypes", []),
91
- __metadata("design:returntype", void 0)
92
- ], TestRouteAlias.prototype, "getTestUsingArray", null);
93
- TestRouteAlias = __decorate([
94
- (0, decorators_1.Controller)(["global", "global-alias"])
95
- ], TestRouteAlias);
96
- class ClassWithMissingControllerDecorator {
97
- }
98
- let routerBuilder;
99
- let injector;
100
- let exceptionsFilter;
101
- let applicationConfig;
102
- let httpConfig;
103
- let routePathFactory;
104
- let graphInspector;
105
- beforeEach(() => {
106
- const container = new core_1.VenokContainer();
107
- httpConfig = new config_1.HttpConfig();
108
- applicationConfig = new core_1.ApplicationConfig();
109
- injector = new injector_1.Injector();
110
- routePathFactory = new factory_1.RoutePathFactory(httpConfig);
111
- graphInspector = new graph_inspector_1.GraphInspector(container);
112
- exceptionsFilter = new context_1.RouterExceptionFiltersContext(container, applicationConfig, null);
113
- routerBuilder = new router_explorer_1.RouterExplorer(new core_1.MetadataScanner(), container, injector, null, exceptionsFilter, applicationConfig, routePathFactory, graphInspector, httpConfig.getHttpAdapterRef());
114
- });
115
- describe("applyPathsToRouterProxy", () => {
116
- it("should method return expected object which represent single route", () => {
117
- const bindStub = sinon_1.default.stub(routerBuilder, "applyCallbackToRouter");
118
- const paths = [
119
- { path: [""], requestMethod: enums_1.RequestMethod.GET },
120
- { path: ["test"], requestMethod: enums_1.RequestMethod.GET },
121
- { path: ["foo", "bar"], requestMethod: enums_1.RequestMethod.GET },
122
- ];
123
- routerBuilder.applyPathsToRouterProxy(null, paths, null, "", {}, "");
124
- (0, chai_1.expect)(bindStub.calledWith(null, paths[0], null)).to.be.true;
125
- (0, chai_1.expect)(bindStub.callCount).to.be.eql(paths.length);
126
- });
127
- it("should method return expected object which represents a single versioned route", () => {
128
- const bindStub = sinon_1.default.stub(routerBuilder, "applyCallbackToRouter");
129
- const paths = [
130
- { path: [""], requestMethod: enums_1.RequestMethod.GET },
131
- { path: ["test"], requestMethod: enums_1.RequestMethod.GET },
132
- { path: ["foo", "bar"], requestMethod: enums_1.RequestMethod.GET },
133
- ];
134
- const routePathMetadata = {
135
- versioningOptions: { type: enums_1.VersioningType.URI },
136
- };
137
- routerBuilder.applyPathsToRouterProxy(null, paths, null, "", routePathMetadata, "1");
138
- (0, chai_1.expect)(bindStub.calledWith(null, paths[0], null, "", routePathMetadata, "1")).to.be.true;
139
- (0, chai_1.expect)(bindStub.callCount).to.be.eql(paths.length);
140
- });
141
- });
142
- describe("extractRouterPath", () => {
143
- it("should return expected path", () => {
144
- (0, chai_1.expect)(routerBuilder.extractRouterPath(TestRoute)).to.be.eql(["/global"]);
145
- });
146
- it("should return expected path with alias", () => {
147
- (0, chai_1.expect)(routerBuilder.extractRouterPath(TestRouteAlias)).to.be.eql(["/global", "/global-alias"]);
148
- });
149
- it("should return [] when missing the `@Controller()` decorator in the class, displaying class's name", () => {
150
- (0, chai_1.expect)(routerBuilder.extractRouterPath(ClassWithMissingControllerDecorator)).to.be.eql([]);
151
- });
152
- });
153
- describe("createRequestScopedHandler", () => {
154
- let nextSpy;
155
- beforeEach(() => {
156
- sinon_1.default.stub(injector, "loadPerContext").callsFake(() => {
157
- throw new Error();
158
- });
159
- nextSpy = sinon_1.default.spy();
160
- sinon_1.default.stub(exceptionsFilter, "create").callsFake(() => ({
161
- next: nextSpy,
162
- }));
163
- });
164
- describe('when "loadPerContext" throws', () => {
165
- const moduleKey = "moduleKey";
166
- const methodKey = "methodKey";
167
- const module = {
168
- controllers: new Map(),
169
- };
170
- const wrapper = new wrapper_1.InstanceWrapper({
171
- instance: { [methodKey]: {} },
172
- });
173
- it("should delegate error to exception filters", async () => {
174
- const handler = routerBuilder.createRequestScopedHandler(wrapper, enums_1.RequestMethod.ALL, module, moduleKey, methodKey);
175
- await handler(null, null, null);
176
- (0, chai_1.expect)(nextSpy.called).to.be.true;
177
- (0, chai_1.expect)(nextSpy.getCall(0).args[0]).to.be.instanceOf(Error);
178
- (0, chai_1.expect)(nextSpy.getCall(0).args[1]).to.be.instanceOf(execution_host_1.ExecutionContextHost);
179
- });
180
- });
181
- });
182
- describe("applyVersionFilter", () => {
183
- it("should call and return the `applyVersionFilter` from the underlying http server", () => {
184
- const router = sinon_1.default.spy(new helpers_1.NoopHttpAdapter({}));
185
- const routePathMetadata = {
186
- methodVersion: sinon_1.default.fake(),
187
- versioningOptions: sinon_1.default.fake(),
188
- };
189
- const handler = sinon_1.default.stub();
190
- // We're using type assertion here because `applyVersionFilter` is private
191
- const versionFilter = routerBuilder.applyVersionFilter(router, routePathMetadata, handler);
192
- (0, chai_1.expect)(router.applyVersionFilter.calledOnceWithExactly(handler, routePathMetadata.methodVersion, routePathMetadata.versioningOptions)).to.be.true;
193
- (0, chai_1.expect)(router.applyVersionFilter.returnValues[0]).to.be.equal(versionFilter);
194
- });
195
- });
196
- describe("copyMetadataToCallback", () => {
197
- it("should then copy the metadata from the original callback to the target callback", () => {
198
- const originalCallback = () => { };
199
- Reflect.defineMetadata("test_metadata_key", "test_metadata_value", originalCallback);
200
- const targetCallback = () => { };
201
- // We're using type assertion here because `copyMetadataToCallback` is private
202
- routerBuilder.copyMetadataToCallback(originalCallback, targetCallback);
203
- (0, chai_1.expect)(Reflect.getMetadata("test_metadata_key", targetCallback)).to.be.equal("test_metadata_value");
204
- });
205
- });
206
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_1 = require("chai");
4
- const factory_1 = require("../../factory");
5
- const enums_1 = require("../../enums");
6
- describe("RouterMethodFactory", () => {
7
- let factory;
8
- const target = {
9
- get: () => { },
10
- post: () => { },
11
- use: () => { },
12
- delete: () => { },
13
- put: () => { },
14
- patch: () => { },
15
- options: () => { },
16
- head: () => { },
17
- all: () => { },
18
- };
19
- beforeEach(() => {
20
- factory = new factory_1.RouterMethodFactory();
21
- });
22
- it("should return proper method", () => {
23
- (0, chai_1.expect)(factory.get(target, enums_1.RequestMethod.DELETE)).to.equal(target.delete);
24
- (0, chai_1.expect)(factory.get(target, enums_1.RequestMethod.POST)).to.equal(target.post);
25
- (0, chai_1.expect)(factory.get(target, enums_1.RequestMethod.ALL)).to.equal(target.all);
26
- (0, chai_1.expect)(factory.get(target, enums_1.RequestMethod.PUT)).to.equal(target.put);
27
- (0, chai_1.expect)(factory.get(target, enums_1.RequestMethod.GET)).to.equal(target.get);
28
- (0, chai_1.expect)(factory.get(target, enums_1.RequestMethod.PATCH)).to.equal(target.patch);
29
- (0, chai_1.expect)(factory.get(target, enums_1.RequestMethod.OPTIONS)).to.equal(target.options);
30
- (0, chai_1.expect)(factory.get(target, enums_1.RequestMethod.HEAD)).to.equal(target.head);
31
- (0, chai_1.expect)(factory.get(target, -1)).to.equal(target.use);
32
- });
33
- });