diff --git a/src/index.ts b/src/index.ts index c007ca9..0de6ff4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -52,10 +52,12 @@ app.use((req, res, next) => { // no database connection error app.use(require('./helpers/authorize')); // handle authentication // redirect /api routes for Angular proxy in development -app.use('/api/:url', (req, res) => { - req.url = '/' + req.params.url; - app.handle(req, res); -}); +if (process.env.NODE_ENV !== 'production') { + app.use('/api/:url', (req, res) => { + req.url = '/' + req.params.url; + app.handle(req, res); + }); +} // require routes diff --git a/src/models/measurement.ts b/src/models/measurement.ts index 4282b29..d003ea5 100644 --- a/src/models/measurement.ts +++ b/src/models/measurement.ts @@ -2,7 +2,7 @@ import mongoose from 'mongoose'; import SampleModel from './sample'; import MeasurementTemplateModel from './measurement_template'; -// TODO: change to sample_id + const MeasurementSchema = new mongoose.Schema({ sample_id: {type: mongoose.Schema.Types.ObjectId, ref: SampleModel}, diff --git a/src/routes/measurement.spec.ts b/src/routes/measurement.spec.ts index e1f36a4..5af91a3 100644 --- a/src/routes/measurement.spec.ts +++ b/src/routes/measurement.spec.ts @@ -5,8 +5,6 @@ import globals from '../globals'; // TODO: restore measurements for m/a -// TODO: coverage!!! - describe('/measurement', () => { let server; diff --git a/src/routes/root.spec.ts b/src/routes/root.spec.ts index a5f8f8b..569af8b 100644 --- a/src/routes/root.spec.ts +++ b/src/routes/root.spec.ts @@ -91,7 +91,7 @@ describe('/', () => { }); }); - describe('A not connected database', () => { + describe('A not connected database', () => { // RUN AS LAST OR RECONNECT DATABASE!! it('resolves to an 500 error', done => { db.disconnect(() => { TestHelper.request(server, done, { @@ -102,6 +102,39 @@ describe('/', () => { }); }); }); +}); - // describe('API') // TODO not in production +describe('The /api/{url} redirect', () => { + let server; + let counter = 0; // count number of current test method + before(done => { + process.env.port = '2999'; + db.connect('test', done); + }); + beforeEach(done => { + process.env.NODE_ENV = counter === 1 ? 'production' : 'test'; + counter ++; + server = TestHelper.beforeEach(server, done); + }); + afterEach(done => TestHelper.afterEach(server, done)); + after(done => TestHelper.after(done)); + + + it('returns the right method', done => { + TestHelper.request(server, done, { + method: 'get', + url: '/api/authorized', + auth: {basic: 'admin'}, + httpStatus: 200, + res: {status: 'Authorization successful', method: 'basic'} + }); + }); + it('is disabled in production', done => { + TestHelper.request(server, done, { + method: 'get', + url: '/api/authorized', + auth: {basic: 'admin'}, + httpStatus: 404 + }); + }); }); \ No newline at end of file diff --git a/src/test/helper.ts b/src/test/helper.ts index 539eba3..fbb45ff 100644 --- a/src/test/helper.ts +++ b/src/test/helper.ts @@ -43,7 +43,7 @@ export default class TestHelper { db.disconnect(done); } - static request (server, done, options) { // options in form: {method, url, auth: {key/basic: 'name' or 'key'/{name, pass}}, httpStatus, req, res} + static request (server, done, options) { // options in form: {method, url, auth: {key/basic: 'name' or 'key'/{name, pass}}, httpStatus, req, res, default (set to false if you want to dismiss default .end handling)} let st = supertest(server); if (options.hasOwnProperty('auth') && options.auth.hasOwnProperty('key')) { // resolve API key options.url += '?key=' + (this.auth.hasOwnProperty(options.auth.key)? this.auth[options.auth.key].key : options.auth.key);