From 1176a94becb4970767edda4821be725077305edb Mon Sep 17 00:00:00 2001 From: gaba Date: Tue, 7 Feb 2017 15:36:10 -0800 Subject: [PATCH] Update tests --- services/assets.js | 24 +++++++++++++----------- test/routes/api/assets/index.js | 33 +++++++++++++++++++-------------- test/services/assets.js | 20 ++++++++++++++++++-- 3 files changed, 50 insertions(+), 27 deletions(-) diff --git a/services/assets.js b/services/assets.js index e6d2e32d4..f8f795263 100644 --- a/services/assets.js +++ b/services/assets.js @@ -57,20 +57,22 @@ module.exports = class AssetsService { static findOrCreateByUrl(url) { // Check the URL to confirm that is in the domain whitelist - if (!domainlist.urlCheck(url)) { - return Promise.reject(errors.ErrInvalidAssetURL); - } + return domainlist.urlCheck(url).then((whitelisted) => { + if (!whitelisted) { + return Promise.reject(errors.ErrInvalidAssetURL); + } else { + return AssetModel.findOneAndUpdate({url}, {url}, { - return AssetModel.findOneAndUpdate({url}, {url}, { + // Ensure that if it's new, we return the new object created. + new: true, - // Ensure that if it's new, we return the new object created. - new: true, + // Perform an upsert in the event that this doesn't exist. + upsert: true, - // Perform an upsert in the event that this doesn't exist. - upsert: true, - - // Set the default values if not provided based on the mongoose models. - setDefaultsOnInsert: true + // Set the default values if not provided based on the mongoose models. + setDefaultsOnInsert: true + }); + } }); } diff --git a/test/routes/api/assets/index.js b/test/routes/api/assets/index.js index 56c20fc78..9f1e4ad66 100644 --- a/test/routes/api/assets/index.js +++ b/test/routes/api/assets/index.js @@ -10,24 +10,29 @@ chai.use(require('chai-http')); const AssetModel = require('../../../../models/asset'); const AssetsService = require('../../../../services/assets'); +const SettingsService = require('../../../../services/settings'); describe('/api/v1/assets', () => { beforeEach(() => { - return AssetModel.create([ - { - url: 'https://coralproject.net/news/asset1', - title: 'Asset 1', - description: 'term1', - closedAt: Date.now() - }, - { - url: 'https://coralproject.net/news/asset2', - title: 'Asset 2', - description: 'term2', - closedAt: null - } - ]); + const settings = {id: '1', moderation: 'PRE', domains: {whitelist: ['test.com']}}; + + return SettingsService.init(settings).then(() => { + return AssetModel.create([ + { + url: 'https://coralproject.net/news/asset1', + title: 'Asset 1', + description: 'term1', + closedAt: Date.now() + }, + { + url: 'https://coralproject.net/news/asset2', + title: 'Asset 2', + description: 'term2', + closedAt: null + } + ]); + }); }); describe('#get', () => { diff --git a/test/services/assets.js b/test/services/assets.js index ff8d9e175..3bbe8ee6e 100644 --- a/test/services/assets.js +++ b/test/services/assets.js @@ -1,5 +1,6 @@ const AssetModel = require('../../models/asset'); const AssetsService = require('../../services/assets'); +const SettingsService = require('../../services/settings'); const chai = require('chai'); const expect = chai.expect; @@ -10,8 +11,12 @@ chai.should(); describe('services.AssetsService', () => { beforeEach(() => { + const settings = {id: '1', moderation: 'PRE', domains: {whitelist: ['new.test.com', 'test.com', 'override.test.com']}}; const defaults = {url:'http://test.com'}; - return AssetModel.update({id: '1'}, {$setOnInsert: defaults}, {upsert: true}); + + return SettingsService.init(settings).then(() => { + return AssetModel.update({id: '1'}, {$setOnInsert: defaults}, {upsert: true}); + }); }); describe('#findById', ()=> { @@ -54,7 +59,7 @@ describe('services.AssetsService', () => { }); }); - it('should return a new asset when the url does not exist', () => { + it('should return a new asset when the url does not exist and its domain is whitelisted', () => { return AssetsService .findOrCreateByUrl('http://new.test.com') .then((asset) => { @@ -62,6 +67,17 @@ describe('services.AssetsService', () => { .and.to.not.equal(1); }); }); + + it('should return an error when the url does not exist and its domain is not whitelisted', () => { + return AssetsService + .findOrCreateByUrl('http://bad.test.com') + .then((asset) => { + expect(asset).to.be.null; + }) + .catch((error) => { + expect(error).to.not.be.null; + }); + }); }); describe('#overrideSettings', () => {