From 63ad8f69ae75377a9020a6fa0f5a6398cd6342b7 Mon Sep 17 00:00:00 2001 From: Ritchie Martori <skawful@gmail.com> Date: Fri, 11 Apr 2014 11:40:53 -0700 Subject: [PATCH 1/2] Add test for remoting nested hidden properties --- lib/models/model.js | 16 -------------- test/hidden-properties.test.js | 39 +++++++++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/lib/models/model.js b/lib/models/model.js index bb59b129..fdc48f55 100644 --- a/lib/models/model.js +++ b/lib/models/model.js @@ -201,22 +201,6 @@ Model._getAccessTypeForMethod = function(method) { } } -var superToJSON = Model.prototype.toJSON; -Model.prototype.toJSON = function toJSON() { - var Model = this.constructor; - var obj = superToJSON.apply(this, arguments); - var settings = Model.definition && Model.definition.settings; - var hiddenProperties = settings && settings.hidden; - - if(Array.isArray(hiddenProperties)) { - for(var i = 0; i < hiddenProperties.length; i++) { - delete obj[hiddenProperties[i]]; - } - } - - return obj; -} - // setup the initial model Model.setup(); diff --git a/test/hidden-properties.test.js b/test/hidden-properties.test.js index 65565341..356c20f7 100644 --- a/test/hidden-properties.test.js +++ b/test/hidden-properties.test.js @@ -7,14 +7,28 @@ describe('hidden properties', function () { options: {hidden: ['secret']}, dataSource: loopback.memory() }); + var Category = this.Category = this.app.model('category', { + dataSource: loopback.memory() + }); + Category.hasMany(Product); app.use(loopback.rest()); - - Product.create( - {name: 'pencil', secret: 'secret'}, - done - ); + 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') @@ -27,4 +41,19 @@ describe('hidden properties', function () { 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(); + }); + }); }); From 37a28db01780a34bc8f7200337846250841e9d8a Mon Sep 17 00:00:00 2001 From: Ritchie Martori <skawful@gmail.com> Date: Fri, 11 Apr 2014 12:42:59 -0700 Subject: [PATCH 2/2] Bump juggler version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index de2512a2..3822fbd6 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,10 @@ "async": "~0.2.10" }, "peerDependencies": { - "loopback-datasource-juggler": "~1.3.3" + "loopback-datasource-juggler": "~1.3.11" }, "devDependencies": { - "loopback-datasource-juggler": "~1.3.3", + "loopback-datasource-juggler": "~1.3.11", "mocha": "~1.17.1", "strong-task-emitter": "0.0.x", "supertest": "~0.9.0",