rest-api-starter
Version:
Rest API starter kit.
91 lines (77 loc) • 3.1 kB
JavaScript
/**
* Created by svinci on 1/13/17.
*/
;
const mocha = require('mocha');
const chai = require('chai');
const describe = mocha.describe;
const it = mocha.it;
const before = mocha.before;
const after = mocha.after;
const expect = chai.expect;
const localStore = require('../app/local-store');
const serverBuilder = require('./testServer');
const clientBuilder = require('../app/client');
describe('Server', () => {
let server = null;
let client = null;
before(() => {
server = serverBuilder();
client = clientBuilder('http://localhost:8100');
});
it('a validation error should return bad request', (done) => {
localStore.create(function() {
localStore.putValue('tid', 'test-bad-request');
client.get('/bad-request-endpoint')
.then(() => done('expected error'))
.catch((r) => {
expect(r.status).to.equal(400);
expect(r.response.text).to.equal('{"status":400,"message":"validation.error","detail":["validation.error.schema.name"]}');
done();
})
.catch((err) => done(err));
});
});
it('a document not found error should return not found', (done) => {
localStore.create(function() {
localStore.putValue('tid', 'test-not-found');
client.get('/not-found-endpoint')
.then(() => done('expected error'))
.catch((r) => {
expect(r.status).to.equal(404);
expect(r.response.text).to.equal('{"status":404,"detail":{"id":3}}');
done();
})
.catch((err) => done(err));
});
});
it('an internal server error should return internal server error', (done) => {
localStore.create(function() {
localStore.putValue('tid', 'test-internal-server-error');
client.get('/internal-server-error-endpoint')
.then(() => done('expected error'))
.catch((r) => {
expect(r.status).to.equal(500);
expect(r.response.text).to.equal('{"status":500,"message":"unhandled error","detail":"Error: Oops!"}');
done();
})
.catch((err) => done(err));
});
});
it('a request to a non existent path should return not found', (done) => {
localStore.create(function() {
localStore.putValue('tid', 'test-not-found-url');
client.get('/some-path-that-does-not-exist')
.then(() => done('expected error'))
.catch((r) => {
expect(r.status).to.equal(404);
expect(r.response.text).to.equal('{"status":404,"message":"url/method combination not found","detail":{"url":"/some-path-that-does-not-exist","method":"GET"}}');
done();
})
.catch((err) => done(err));
});
});
after(() => {
server.close();
});
});