UNPKG

inversify-express-utils

Version:

Some utilities for the development of express applications with Inversify

120 lines 5.98 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable @typescript-eslint/no-unused-vars */ const globals_1 = require("@jest/globals"); const inversify_1 = require("inversify"); const supertest_1 = __importDefault(require("supertest")); const base_http_controller_1 = require("../base_http_controller"); const stringContent_1 = require("../content/stringContent"); const decorators_1 = require("../decorators"); const httpResponseMessage_1 = require("../httpResponseMessage"); const server_1 = require("../server"); const utils_1 = require("../utils"); (0, globals_1.describe)('BaseHttpController', () => { (0, globals_1.beforeEach)(() => { (0, utils_1.cleanUpMetadata)(); }); (0, globals_1.it)('Should contain httpContext instance', async () => { let TestController = class TestController extends base_http_controller_1.BaseHttpController { _someDependency; constructor(someDependency) { super(); this._someDependency = someDependency; } async getTest() { const headerVal = this.httpContext.request.headers['x-custom']; const { name } = this._someDependency; const isAuthenticated = await this.httpContext.user.isAuthenticated(); (0, globals_1.expect)(isAuthenticated).toBe(false); return `${headerVal} & ${name}`; } }; __decorate([ (0, decorators_1.httpGet)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], TestController.prototype, "getTest", null); TestController = __decorate([ (0, decorators_1.controller)('/'), __param(0, (0, inversify_1.inject)('SomeDependency')), __metadata("design:paramtypes", [Object]) ], TestController); const container = new inversify_1.Container(); container .bind('SomeDependency') .toConstantValue({ name: 'SomeDependency!' }); const server = new server_1.InversifyExpressServer(container); await (0, supertest_1.default)(server.build()) .get('/') .set('x-custom', 'test-header!') .expect(200, 'test-header! & SomeDependency!'); }); (0, globals_1.it)('should support returning an HttpResponseMessage from a method', async () => { let TestController = class TestController extends base_http_controller_1.BaseHttpController { async getTest() { const response = new httpResponseMessage_1.HttpResponseMessage(200); response.headers['x-custom'] = 'test-header'; response.content = new stringContent_1.StringContent('12345'); return Promise.resolve(response); } }; __decorate([ (0, decorators_1.httpGet)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], TestController.prototype, "getTest", null); TestController = __decorate([ (0, decorators_1.controller)('/') ], TestController); const server = new server_1.InversifyExpressServer(new inversify_1.Container()); await (0, supertest_1.default)(server.build()) .get('/') .expect(200, '12345') .expect('x-custom', 'test-header') .expect('content-type', 'text/plain; charset=utf-8'); }); (0, globals_1.it)('should support returning an IHttpActionResult from a method', async () => { let TestController = class TestController extends base_http_controller_1.BaseHttpController { getTest() { return new (class TestActionResult { async executeAsync() { const response = new httpResponseMessage_1.HttpResponseMessage(400); response.content = new stringContent_1.StringContent('You done did that wrong'); return response; } })(); } }; __decorate([ (0, decorators_1.httpGet)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], TestController.prototype, "getTest", null); TestController = __decorate([ (0, decorators_1.controller)('/') ], TestController); const server = new server_1.InversifyExpressServer(new inversify_1.Container()); await (0, supertest_1.default)(server.build()) .get('/') .expect(400, 'You done did that wrong'); }); }); //# sourceMappingURL=base_http_controller.test.js.map