78 lines
1.9 KiB
JavaScript
78 lines
1.9 KiB
JavaScript
// Copyright IBM Corp. 2014,2018. All Rights Reserved.
|
|
// Node module: loopback
|
|
// This file is licensed under the MIT License.
|
|
// License text available at https://opensource.org/licenses/MIT
|
|
|
|
'use strict';
|
|
var assert = require('assert');
|
|
var loopback = require('../');
|
|
var request = require('supertest');
|
|
|
|
describe('hidden properties', function() {
|
|
beforeEach(function(done) {
|
|
var app = this.app = loopback();
|
|
var Product = this.Product = loopback.PersistedModel.extend(
|
|
'product',
|
|
{},
|
|
{hidden: ['secret']}
|
|
);
|
|
Product.attachTo(loopback.memory());
|
|
|
|
var Category = this.Category = loopback.PersistedModel.extend('category');
|
|
Category.attachTo(loopback.memory());
|
|
Category.hasMany(Product);
|
|
|
|
app.model(Product);
|
|
app.model(Category);
|
|
app.use(loopback.rest());
|
|
|
|
Category.create({
|
|
name: 'my category',
|
|
}, function(err, category) {
|
|
category.products.create({
|
|
name: 'pencil',
|
|
secret: 'a secret',
|
|
}, done);
|
|
});
|
|
});
|
|
|
|
afterEach(function(done) {
|
|
var Product = this.Product;
|
|
this.Category.destroyAll(function() {
|
|
Product.destroyAll(done);
|
|
});
|
|
});
|
|
|
|
it('should hide a property remotely', function(done) {
|
|
request(this.app)
|
|
.get('/products')
|
|
.expect('Content-Type', /json/)
|
|
.expect(200)
|
|
.end(function(err, res) {
|
|
if (err) return done(err);
|
|
|
|
var product = res.body[0];
|
|
assert.equal(product.secret, undefined);
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hide a property of nested models', function(done) {
|
|
var app = this.app;
|
|
request(app)
|
|
.get('/categories?filter[include]=products')
|
|
.expect('Content-Type', /json/)
|
|
.expect(200)
|
|
.end(function(err, res) {
|
|
if (err) return done(err);
|
|
|
|
var category = res.body[0];
|
|
var product = category.products[0];
|
|
assert.equal(product.secret, undefined);
|
|
|
|
done();
|
|
});
|
|
});
|
|
});
|