Add feature to hide disabled remote methods after explorer is initialized

Signed-off-by: Supasate Choochaisri <supasate.c@gmail.com>
This commit is contained in:
Supasate Choochaisri 2016-04-30 04:01:48 +07:00
parent 45e0bf85e9
commit ff60f8bf91
2 changed files with 37 additions and 0 deletions

View File

@ -104,6 +104,12 @@ function mountSwagger(loopbackApplication, swaggerApp, opts) {
swaggerObject = createSwaggerObject(loopbackApplication, opts);
});
// listening to remoteMethodDisabled event for updating the swaggerObject
// when a remote method is disabled to hide that method in the Swagger UI.
loopbackApplication.on('remoteMethodDisabled', function() {
swaggerObject = createSwaggerObject(loopbackApplication, opts);
});
var resourcePath = opts && opts.resourcePath || 'swagger.json';
if (resourcePath[0] !== '/') resourcePath = '/' + resourcePath;

View File

@ -283,6 +283,37 @@ describe('explorer', function() {
});
});
it('updates swagger object when a remote method is disabled', function(done) {
var app = loopback();
configureRestApiAndExplorer(app, '/explorer');
// Ensure the swagger object was built
request(app)
.get('/explorer/swagger.json')
.expect(200)
.end(function(err, res) {
if (err) return done(err);
// Check the method that will be disabled
var paths = Object.keys(res.body.paths);
expect(paths).to.contain('/products/findOne');
var Product = app.models.Product;
Product.disableRemoteMethod('findOne', true);
// Request swagger.json again
request(app)
.get('/explorer/swagger.json')
.expect(200)
.end(function(err, res) {
if (err) return done(err);
var paths = Object.keys(res.body.paths);
expect(paths).to.not.contain('/products/findOne');
done();
});
});
});
function givenLoopBackAppWithExplorer(explorerBase) {
return function(done) {
var app = this.app = loopback();