Forward options in prepareForTokenInvalidation
This commit is contained in:
parent
78161ccd9b
commit
a5ac1506e6
|
@ -886,7 +886,7 @@ module.exports = function(User) {
|
||||||
where[pkName] = ctx.instance[pkName];
|
where[pkName] = ctx.instance[pkName];
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Model.find({where: where}, function(err, userInstances) {
|
ctx.Model.find({where: where}, ctx.options, function(err, userInstances) {
|
||||||
if (err) return next(err);
|
if (err) return next(err);
|
||||||
ctx.hookState.originalUserData = userInstances.map(function(u) {
|
ctx.hookState.originalUserData = userInstances.map(function(u) {
|
||||||
var user = {};
|
var user = {};
|
||||||
|
|
|
@ -8,6 +8,7 @@ var loopback = require('../');
|
||||||
var User, AccessToken;
|
var User, AccessToken;
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var url = require('url');
|
var url = require('url');
|
||||||
|
var extend = require('util')._extend;
|
||||||
|
|
||||||
describe('User', function() {
|
describe('User', function() {
|
||||||
this.timeout(10000);
|
this.timeout(10000);
|
||||||
|
@ -2379,6 +2380,37 @@ describe('User', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('forwards the "options" argument', function(done) {
|
||||||
|
var options = {testFlag: true};
|
||||||
|
var observedOptions = [];
|
||||||
|
|
||||||
|
saveObservedOptionsForHook('access', User);
|
||||||
|
saveObservedOptionsForHook('before delete', AccessToken);
|
||||||
|
|
||||||
|
user.updateAttribute('password', 'newPass', options, function(err, updated) {
|
||||||
|
if (err) return done(err);
|
||||||
|
|
||||||
|
expect(observedOptions).to.eql([
|
||||||
|
// prepareForTokenInvalidation - load current instance data
|
||||||
|
{hook: 'access', testFlag: true},
|
||||||
|
|
||||||
|
// validate uniqueness of User.email
|
||||||
|
{hook: 'access', testFlag: true},
|
||||||
|
|
||||||
|
// _invalidateAccessTokensOfUsers - deleteAll
|
||||||
|
{hook: 'before delete', testFlag: true},
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
function saveObservedOptionsForHook(name, model) {
|
||||||
|
model.observe(name, function(ctx, next) {
|
||||||
|
observedOptions.push(extend({hook: name}, ctx.options));
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
it('preserves other user sessions if their password is untouched', function(done) {
|
it('preserves other user sessions if their password is untouched', function(done) {
|
||||||
var user1, user2, user1Token;
|
var user1, user2, user1Token;
|
||||||
async.series([
|
async.series([
|
||||||
|
|
Loading…
Reference in New Issue