UNPKG

inversify-express-utils

Version:

Some utilities for the development of express applications with Inversify

95 lines 4.36 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 __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 index_1 = require("../index"); const utils_1 = require("../utils"); (0, globals_1.describe)('AuthProvider', () => { (0, globals_1.beforeEach)(() => { (0, utils_1.cleanUpMetadata)(); }); (0, globals_1.it)('Should be able to access current user via HttpContext', async () => { class PrincipalClass { details; constructor(details) { this.details = details; } async isAuthenticated() { return Promise.resolve(true); } async isResourceOwner(resourceId) { return Promise.resolve(resourceId === 1111); } async isInRole(role) { return Promise.resolve(role === 'admin'); } } let CustomAuthProvider = class CustomAuthProvider { _someDependency; async getUser() { const principal = new PrincipalClass({ email: `${this._someDependency.name}@test.com`, }); return Promise.resolve(principal); } }; __decorate([ (0, inversify_1.inject)('SomeDependency'), __metadata("design:type", Object) ], CustomAuthProvider.prototype, "_someDependency", void 0); CustomAuthProvider = __decorate([ (0, inversify_1.injectable)() ], CustomAuthProvider); let TestController = class TestController extends index_1.BaseHttpController { _someDependency; async getTest() { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (this.httpContext.user !== null) { const { email } = this.httpContext.user .details; const { name } = this._someDependency; const isAuthenticated = await this.httpContext.user.isAuthenticated(); (0, globals_1.expect)(isAuthenticated).toEqual(true); return `${email} & ${name}`; } return null; } }; __decorate([ (0, inversify_1.inject)('SomeDependency'), __metadata("design:type", Object) ], TestController.prototype, "_someDependency", void 0); __decorate([ (0, index_1.httpGet)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], TestController.prototype, "getTest", null); TestController = __decorate([ (0, index_1.controller)('/') ], TestController); const container = new inversify_1.Container(); container .bind('SomeDependency') .toConstantValue({ name: 'SomeDependency!' }); const server = new index_1.InversifyExpressServer(container, null, null, null, CustomAuthProvider); await (0, supertest_1.default)(server.build()) .get('/') .expect(200, 'SomeDependency!@test.com & SomeDependency!'); }); }); //# sourceMappingURL=auth_provider.test.js.map