executor: pass correct `this` to middleware
Fix the bug "can't configure passport#initialize in middleware.json"
This commit is contained in:
parent
215abf9d30
commit
6424534831
|
@ -280,7 +280,7 @@ function setupMiddleware(app, instructions) {
|
||||||
data.fragment ? ('#' + data.fragment) : '');
|
data.fragment ? ('#' + data.fragment) : '');
|
||||||
var factory = require(data.sourceFile);
|
var factory = require(data.sourceFile);
|
||||||
if (data.fragment) {
|
if (data.fragment) {
|
||||||
factory = factory[data.fragment];
|
factory = factory[data.fragment].bind(factory);
|
||||||
}
|
}
|
||||||
assert(typeof factory === 'function',
|
assert(typeof factory === 'function',
|
||||||
'Middleware factory must be a function');
|
'Middleware factory must be a function');
|
||||||
|
|
|
@ -467,6 +467,29 @@ describe('executor', function() {
|
||||||
|
|
||||||
expect(app.componentOptions).to.eql({ option: 'value' });
|
expect(app.componentOptions).to.eql({ option: 'value' });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('configures middleware (that requires `this`)', function(done) {
|
||||||
|
var passportPath = require.resolve('./fixtures/passport');
|
||||||
|
|
||||||
|
boot.execute(app, someInstructions({
|
||||||
|
middleware: {
|
||||||
|
phases: ['auth'],
|
||||||
|
middleware: [
|
||||||
|
{
|
||||||
|
sourceFile: passportPath,
|
||||||
|
fragment: 'initialize',
|
||||||
|
config: {
|
||||||
|
phase: 'auth:before'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
supertest(app)
|
||||||
|
.get('/')
|
||||||
|
.expect('passport', 'initialized', done);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function assertValidDataSource(dataSource) {
|
function assertValidDataSource(dataSource) {
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
var framework = {
|
||||||
|
initialize: function(passport) {
|
||||||
|
return function(req, res, next) {
|
||||||
|
req._passport = passport;
|
||||||
|
res.setHeader('passport', 'initialized');
|
||||||
|
next();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var Passport = function() {
|
||||||
|
this._framework = framework;
|
||||||
|
};
|
||||||
|
|
||||||
|
Passport.prototype.initialize = function() {
|
||||||
|
return this._framework.initialize(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = new Passport();
|
Loading…
Reference in New Issue