From 0ab33a82d4df767d26077079701d9af15a08c84b Mon Sep 17 00:00:00 2001 From: Richard Pringle Date: Mon, 19 Sep 2016 12:52:34 -0400 Subject: [PATCH] Call new disable remote method from model class. --- lib/model.js | 19 ++++++++++++++++++- test/app.test.js | 2 +- test/model.test.js | 16 +++++++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/lib/model.js b/lib/model.js index 1926628b..76f3b416 100644 --- a/lib/model.js +++ b/lib/model.js @@ -15,6 +15,8 @@ var SharedClass = require('strong-remoting').SharedClass; var extend = require('util')._extend; var format = require('util').format; +var deprecated = require('depd')('loopback'); + module.exports = function(registry) { /** * The base class for **all models**. @@ -436,7 +438,22 @@ module.exports = function(registry) { */ Model.disableRemoteMethod = function(name, isStatic) { - this.sharedClass.disableMethod(name, isStatic || false); + deprecated('Model.disableRemoteMethod is deprecated. ' + + 'Use Model.disableRemoteMethodByName instead.'); + var key = this.sharedClass.getKeyFromMethodNameAndTarget(name, isStatic); + this.sharedClass.disableMethodByName(key); + this.emit('remoteMethodDisabled', this.sharedClass, key); + }; + + /** + * Disable remote invocation for the method with the given name. + * + * @param {String} name The name of the method (include "prototype." if the method is defined on the prototype). + * + */ + + Model.disableRemoteMethodByName = function(name) { + this.sharedClass.disableMethodByName(name); this.emit('remoteMethodDisabled', this.sharedClass, name); }; diff --git a/test/app.test.js b/test/app.test.js index 4ad8c97b..39f720a8 100644 --- a/test/app.test.js +++ b/test/app.test.js @@ -672,7 +672,7 @@ describe('app', function() { disabledRemoteMethod = methodName; }); app.model(Color); - app.models.Color.disableRemoteMethod('findOne'); + app.models.Color.disableRemoteMethodByName('findOne'); expect(remoteMethodDisabledClass).to.exist; expect(remoteMethodDisabledClass).to.eql(Color.sharedClass); expect(disabledRemoteMethod).to.exist; diff --git a/test/model.test.js b/test/model.test.js index 4ce1504b..f429a1d8 100644 --- a/test/model.test.js +++ b/test/model.test.js @@ -698,7 +698,21 @@ describe.onServer('Remote Methods', function() { var callbackSpy = require('sinon').spy(); var TestModel = app.models.TestModelForDisablingRemoteMethod; TestModel.on('remoteMethodDisabled', callbackSpy); - TestModel.disableRemoteMethod('findOne'); + TestModel.disableRemoteMethod('findOne', true); + + expect(callbackSpy).to.have.been.calledWith(TestModel.sharedClass, 'findOne'); + }); + + it('emits a `remoteMethodDisabled` event from disableRemoteMethodByName', function() { + var app = loopback(); + var model = PersistedModel.extend('TestModelForDisablingRemoteMethod'); + app.dataSource('db', { connector: 'memory' }); + app.model(model, { dataSource: 'db' }); + + var callbackSpy = require('sinon').spy(); + var TestModel = app.models.TestModelForDisablingRemoteMethod; + TestModel.on('remoteMethodDisabled', callbackSpy); + TestModel.disableRemoteMethodByName('findOne'); expect(callbackSpy).to.have.been.calledWith(TestModel.sharedClass, 'findOne'); });