diff --git a/migrator.js b/migrator.js index 1b21e789ea..a3f4b91d72 100644 --- a/migrator.js +++ b/migrator.js @@ -1,8 +1,9 @@ 'use strict'; +require('db-migrate-shared').log.setLogLevel('error'); + const { getInstance } = require('db-migrate'); const parseDbUrl = require('parse-database-url'); -require('db-migrate-shared').log.silence(true); function migrateDb ({ databaseUrl, databaseSchema = 'public' }) { const custom = parseDbUrl(databaseUrl); diff --git a/test/unit/routes/fixtures/fake-strategies-store.js b/test/unit/routes/fixtures/fake-strategies-store.js index 9a11dc3433..a08fdc4041 100644 --- a/test/unit/routes/fixtures/fake-strategies-store.js +++ b/test/unit/routes/fixtures/fake-strategies-store.js @@ -1,5 +1,6 @@ 'use strict'; +const NotFoundError = require('../../../../lib/error/notfound-error'); @@ -8,6 +9,14 @@ module.exports = () => { return { getStrategies: () => Promise.resolve(_strategies), + getStrategy: (name) => { + const strategy = _strategies.find(s => s.name === name); + if (strategy) { + return Promise.resolve(strategy); + } else { + return Promise.reject(new NotFoundError('Not found!')); + } + }, addStrategy: (strat) => _strategies.push(strat), }; }; diff --git a/test/unit/routes/strategies.test.js b/test/unit/routes/strategies.test.js index 219854e6cf..fad6372661 100644 --- a/test/unit/routes/strategies.test.js +++ b/test/unit/routes/strategies.test.js @@ -3,31 +3,78 @@ const test = require('ava'); const store = require('./fixtures/store'); const supertest = require('supertest'); -const logger = require('../../../lib/logger'); const getApp = require('../../../lib/app'); const { EventEmitter } = require('events'); const eventBus = new EventEmitter(); -test.beforeEach(() => { - logger.setLevel('FATAL'); -}); - -test('should add version numbers for /stategies', t => { +function getSetup () { + const base = `/random${Math.round(Math.random() * 1000)}`; const stores = store.createStores(); const app = getApp({ - baseUriPath: '', + baseUriPath: base, stores, eventBus, }); - const request = supertest(app); + return { + base, + strategyStore: stores.strategyStore, + request: supertest(app), + }; +} + +test('should add version numbers for /stategies', t => { + const { request, base } = getSetup(); return request - .get('/api/strategies') + .get(`${base}/api/strategies`) .expect('Content-Type', /json/) .expect(200) .expect((res) => { t.true(res.body.version === 1); }); }); + +test('should require a name when creating a new stratey', t => { + const { request, base } = getSetup(); + + return request + .post(`${base}/api/strategies`) + .send({}) + .expect(400) + .expect((res) => { + t.true(res.body.name === 'ValidationError'); + }); +}); + +test('should require parameters array when creating a new stratey', t => { + const { request, base } = getSetup(); + + return request + .post(`${base}/api/strategies`) + .send({ name: 'TestStrat' }) + .expect(400) + .expect((res) => { + t.true(res.body.name === 'ValidationError'); + }); +}); + +test('should create a new stratey with empty parameters', () => { + const { request, base } = getSetup(); + + return request + .post(`${base}/api/strategies`) + .send({ name: 'TestStrat', parameters: [] }) + .expect(201); +}); + +test('should not be possible to override name', () => { + const { request, base, strategyStore } = getSetup(); + strategyStore.addStrategy({ name: 'Testing', parameters: [] }); + + return request + .post(`${base}/api/strategies`) + .send({ name: 'Testing', parameters: [] }) + .expect(403); +});