From 35d9fa4b54104ab0d4c485447f06e4a6fccdea51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Mon, 2 May 2016 14:30:11 +0200 Subject: [PATCH] Fix role.isOwner to support app-local registry --- common/models/role.js | 10 ++++------ test/role.test.js | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/common/models/role.js b/common/models/role.js index 87a7d24c..988d8a79 100644 --- a/common/models/role.js +++ b/common/models/role.js @@ -145,12 +145,10 @@ module.exports = function(Role) { }); function isUserClass(modelClass) { - if (modelClass) { - return modelClass === loopback.User || - modelClass.prototype instanceof loopback.User; - } else { - return false; - } + if (!modelClass) return false; + var User = modelClass.modelBuilder.models.User; + if (!User) return false; + return modelClass == User || modelClass.prototype instanceof User; } /*! diff --git a/test/role.test.js b/test/role.test.js index 8ecddde2..36a18af5 100644 --- a/test/role.test.js +++ b/test/role.test.js @@ -434,4 +434,28 @@ describe('role model', function() { }); }); }); + + describe('isOwner', function() { + it('supports app-local model registry', function(done) { + var app = loopback({ localRegistry: true, loadBuiltinModels: true }); + app.dataSource('db', { connector: 'memory' }); + // attach all auth-related models to 'db' datasource + app.enableAuth({ dataSource: 'db' }); + + var Role = app.models.Role; + var User = app.models.User; + + var u = app.registry.findModel('User'); + var credentials = { email: 'test@example.com', password: 'pass' }; + User.create(credentials, function(err, user) { + if (err) return done(err); + + Role.isOwner(User, user.id, user.id, function(err, result) { + if (err) return done(err); + expect(result, 'isOwner result').to.equal(true); + done(); + }); + }); + }); + }); });