/api/ subroutes only available in dev/test
This commit is contained in:
		@@ -52,10 +52,12 @@ app.use((req, res, next) => {  // no database connection error
 | 
				
			|||||||
app.use(require('./helpers/authorize'));  // handle authentication
 | 
					app.use(require('./helpers/authorize'));  // handle authentication
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// redirect /api routes for Angular proxy in development
 | 
					// redirect /api routes for Angular proxy in development
 | 
				
			||||||
 | 
					if (process.env.NODE_ENV !== 'production') {
 | 
				
			||||||
  app.use('/api/:url', (req, res) => {
 | 
					  app.use('/api/:url', (req, res) => {
 | 
				
			||||||
    req.url = '/' + req.params.url;
 | 
					    req.url = '/' + req.params.url;
 | 
				
			||||||
    app.handle(req, res);
 | 
					    app.handle(req, res);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// require routes
 | 
					// require routes
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ import mongoose from 'mongoose';
 | 
				
			|||||||
import SampleModel from './sample';
 | 
					import SampleModel from './sample';
 | 
				
			||||||
import MeasurementTemplateModel from './measurement_template';
 | 
					import MeasurementTemplateModel from './measurement_template';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: change to sample_id
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const MeasurementSchema = new mongoose.Schema({
 | 
					const MeasurementSchema = new mongoose.Schema({
 | 
				
			||||||
  sample_id: {type: mongoose.Schema.Types.ObjectId, ref: SampleModel},
 | 
					  sample_id: {type: mongoose.Schema.Types.ObjectId, ref: SampleModel},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,8 +5,6 @@ import globals from '../globals';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// TODO: restore measurements for m/a
 | 
					// TODO: restore measurements for m/a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: coverage!!!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe('/measurement', () => {
 | 
					describe('/measurement', () => {
 | 
				
			||||||
  let server;
 | 
					  let server;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 => {
 | 
					    it('resolves to an 500 error', done => {
 | 
				
			||||||
      db.disconnect(() => {
 | 
					      db.disconnect(() => {
 | 
				
			||||||
        TestHelper.request(server, done, {
 | 
					        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
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
@@ -43,7 +43,7 @@ export default class TestHelper {
 | 
				
			|||||||
    db.disconnect(done);
 | 
					    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);
 | 
					    let st = supertest(server);
 | 
				
			||||||
    if (options.hasOwnProperty('auth') && options.auth.hasOwnProperty('key')) {  // resolve API key
 | 
					    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);
 | 
					      options.url += '?key=' + (this.auth.hasOwnProperty(options.auth.key)? this.auth[options.auth.key].key : options.auth.key);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user