Skip to content

Commit

Permalink
Added test case using passport as middleware.
Browse files Browse the repository at this point in the history
  • Loading branch information
bow-fujita committed Jan 27, 2016
1 parent 2f66134 commit 5dbc404
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 1 deletion.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,28 @@ module.exports = {
};
```

Another use case is authentication.
The following example uses [passport](https://github.com/jaredhanson/passport) as `middleware':

```javascript
var passport = require('passport')
;

module.exports = {
__exprest: {
routes: [{
action: 'login'
, middleware: passport.authenticate('basic', { session: false })
}]
}

, login: function(req, res) {
res.status(200).json({ loginAs: req.user.username });
}

};
```


## License

Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "exprest4",
"version": "0.9.0",
"version": "0.9.1",
"description": "REST API framework for Express 4.x.",
"homepage": "https://github.com/bow-fujita/exprest4",
"repository": {
Expand Down Expand Up @@ -37,6 +37,8 @@
"mocha-lcov-reporter": "~1.0.0",
"multer": "~1.1.0",
"node-inspector": "^0.12.5",
"passport": "^0.3.2",
"passport-http": "^0.3.0",
"should": "~8.1.1",
"supertest": "~1.1.0"
},
Expand Down
25 changes: 25 additions & 0 deletions test/controllers/middlewares/passport.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*!
* exprest4
* Copyright (c) 2016 Hiromitsu Fujita <bow.fujita@gmail.com>
* MIT License
*/

'use strict';

var passport = require('passport')
;

module.exports = {
__exprest: {
routes: [{
action: 'login'
, middleware: passport.authenticate('basic', { session: false })
}]
}

, login: function(req, res) {
res.status(200).json({ loginAs: req.user.username });
}

};

35 changes: 35 additions & 0 deletions test/suites/middlewares.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
var exprest = require(process.env.APP_ROOT)
, express = require('express')
, request = require('supertest')
, passport = require('passport')
, fs = require('fs')
, path = require('path')
, ctrl_dir = path.join(__dirname, '..', 'controllers', 'middlewares')
Expand All @@ -18,6 +19,17 @@ var exprest = require(process.env.APP_ROOT)
describe('middlewares', function() {

before(function(done) {
// Setting up for passport-http
var BasicStrategy = require('passport-http').BasicStrategy;
app.use(passport.initialize());
passport.use(new BasicStrategy(function(user, pass, callback) {
console.log('User: '+user);
if (user != 'admin') {
return callback(null, false);
}
return callback(null, { username: user });
}));

exprest.route(app, { controllers: ctrl_dir });
done();
});
Expand Down Expand Up @@ -46,4 +58,27 @@ describe('middlewares', function() {

});

describe('passport', function() {

it('GET /passport no user => 401 Unauthorized', function(done) {
request(app).get('/passport')
.expect(401, done);
});

it('GET /passport invalid user => 401 Unauthorized', function(done) {
request(app).get('/passport')
.auth('user', 'x')
.expect(401, done);
});

it('GET /passport valid user => 200 OK', function(done) {
request(app).get('/passport')
.auth('admin', 'x')
.expect(200, {
loginAs: 'admin'
}, done);
});

});

});

0 comments on commit 5dbc404

Please sign in to comment.