Skip to content

Commit

Permalink
feat(express-bearer-token): add express-bearer-token middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
wbhob committed Nov 26, 2017
1 parent 57c5a9e commit 3629bbe
Show file tree
Hide file tree
Showing 7 changed files with 173 additions and 35 deletions.
75 changes: 49 additions & 26 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 8 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"private": true,
"scripts": {
"build": "sh ./scripts/build.sh",
"test": "nyc --require ts-node/register --compilerOptions '{\"rootDir\":\"./src\",\"baseUrl\":\".\",}' mocha packages/**/*.spec.ts --reporter spec",
"coverage": "nyc report --reporter=text-lcov | ./node_modules/coveralls/bin/coveralls.js",
"test": "nyc --require ts-node/register mocha packages/**/*.spec.ts --reporter spec",
"coverage": "nyc report --reporter=text-lcov | coveralls",
"clean": "sh ./scripts/clean.sh"
},
"repository": {
Expand Down Expand Up @@ -57,9 +57,11 @@
"import-sort-style-module": "^3.0.0",
"lerna": "^2.4.0",
"mocha": "^4.0.1",
"mocha-lcov-reporter": "^1.3.0",
"nyc": "^11.3.0",
"reflect-metadata": "^0.1.10",
"rxjs": "^5.5.2",
"source-map-support": "^0.5.0",
"standard-version": "^4.2.0",
"ts-node": "^3.3.0",
"tslint": "^5.8.0",
Expand All @@ -76,12 +78,8 @@
"packages/**/*.ts"
],
"exclude": [
"**/*.spec.ts",
"node_modules/",
"template/**"
],
"extension": [
".ts"
"packages/**/*.spec.ts",
"packages/**/*.d.ts"
],
"require": [
"ts-node/register"
Expand All @@ -91,6 +89,7 @@
"html"
],
"sourceMap": true,
"instrument": true
"instrument": true,
"all": true
}
}
34 changes: 34 additions & 0 deletions packages/express-bearer-token/index.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { ExpressBearerTokenMiddleware } from './index';
import { expect } from 'chai';

describe('ExpressBearerTokenMiddleware', () => {
let middleware: ExpressBearerTokenMiddleware;
describe('properly configured', () => {
beforeEach(() => {
ExpressBearerTokenMiddleware.configure({});
middleware = new ExpressBearerTokenMiddleware();
});

it('should be defined', () => {
expect(middleware).to.not.be.undefined;
});

it('should have a function called resolve', () => {
expect(middleware.resolve).to.be.instanceof(Function);
});

it('should return a middleware from calling resolve', () => {
expect(middleware.resolve()).to.be.an.instanceof(Function);
});
afterEach(() => {
ExpressBearerTokenMiddleware.configure(undefined);
});
});

describe('not configured', () => {
middleware = new ExpressBearerTokenMiddleware();
it('should return a middleware from calling resolve', () => {
expect(middleware.resolve()).to.be.an.instanceof(Function);
});
});
});
26 changes: 26 additions & 0 deletions packages/express-bearer-token/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import * as bearerToken from 'express-bearer-token';

import { Middleware, NestMiddleware } from '@nestjs/common';

import { RequestHandler } from 'express';

@Middleware()
export class ExpressBearerTokenMiddleware implements NestMiddleware {

// DELETE THESE LINES IF MIDDLEWARE DOES NOT TAKE OPTIONS
public static configure(opts: bearerToken.Options) {
this.options = opts;
}

private static options: bearerToken.Options;

public resolve(...args: any[]): RequestHandler {
if (ExpressBearerTokenMiddleware.options) {
return bearerToken(ExpressBearerTokenMiddleware.options);
} else {
return bearerToken();
}
}
}


11 changes: 11 additions & 0 deletions packages/express-bearer-token/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions packages/express-bearer-token/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "@nest-middlewares/express-bearer-token",
"version": "1.0.0",
"description": "NestJS Middleware for Express Bearer Token",
"main": "index",
"repository": {
"type": "git",
"url": "git+https://github.com/wbhob/nest-middlewares.git"
},
"keywords": [
"nest",
"middlewares",
"express",
"node"
],
"author": "Wilson Hobbs <wilsonhobbs1@gmail.com>",
"license": "MIT",
"bugs": {
"url": "https://github.com/wbhob/nest-middlewares/issues"
},
"homepage": "https://github.com/wbhob/nest-middlewares#readme",
"peerDependencies": {
"@nestjs/common": "^4.0.0"
},
"dependencies": {
"express-bearer-token": "^2.1.0"
}
}
17 changes: 17 additions & 0 deletions types/express-bearer-token/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
declare module 'express-bearer-token' {
import { RequestHandler } from 'express';

function bearerToken(): RequestHandler;
function bearerToken(opts: bearerToken.Options): RequestHandler;

namespace bearerToken {
export interface Options {
bodyKey?: string;
queryKey?: string;
headerKey?: string;
reqKey?: string;
}
}

export = bearerToken;
}

0 comments on commit 3629bbe

Please sign in to comment.