UNPKG

rest-api-starter

Version:
91 lines (77 loc) 3.1 kB
/** * Created by svinci on 1/13/17. */ 'use strict'; 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(); }); });