availity-ekko
Version:
Mock server simulating Availity API rest services
133 lines (100 loc) • 3.58 kB
JavaScript
/* globals describe, it*/
;
const request = require('superagent');
const chai = require('chai');
const _ = require('lodash');
const helper = require('../../tests/helpers');
const expect = chai.expect;
describe('Routes', () => {
helper.serverSpecHelper();
it('route 1 should be defined with GET, PUT, POST and DELETE', () => {
// since no verbs were defined the the mock server
// will configure all verbs for this route
const verbs = ['get', 'put', 'post', 'delete'];
const getConfiguredVerbs = (ekko, expectedVerbs, path) => {
const routeConfigs = ekko.config().router.stack;
const _verbs = _.chain(routeConfigs)
.filter((routeConfig) => {
return routeConfig.route !== undefined;
})
.map((routeConfig) => {
if (routeConfig.route.path === path) {
return _.keys(routeConfig.route.methods)[0];
}
})
.filter((method) => {
return method !== undefined;
})
.value();
return _verbs;
};
const _verbs = getConfiguredVerbs(helper.ekko, verbs, '/v1/route1.:format?');
const count = _.intersection(verbs, _verbs).length;
expect(count).to.equal(4);
});
it('route 1 should respond with dummy-response1.json', (done) => {
request.get(helper.getUrl('/v1/route1'))
.end((err, res) => {
expect(err).to.be.null;
expect(res.status).to.equal(200);
expect(_.isEqual(res.body, {'a': 1})).to.be.ok;
done();
});
});
it('route 2 should respond with dummy-response2.json for GET', (done) => {
request.get(helper.getUrl('/internal/v2/route2'))
.end((err, res) => {
expect(err).to.be.null;
expect(res.status).to.equal(200);
expect(_.isEqual(res.body, {'b': 2})).to.be.ok;
done();
});
});
it('route 2 should respond with dummy-response3.json for POST', (done) => {
request.post(helper.getUrl('/internal/v2/route2'))
.send({bar: 'baz'})
.end((err, res) => {
expect(err).to.be.null;
expect(res.status).to.equal(200);
expect(_.isEqual(res.body, {'c': 3})).to.be.ok;
done();
});
});
it('route 4 should respond with dummy-response-2.json for POST with parameters', (done) => {
request.post(helper.getUrl('/v1/route4'))
.send({a: { b: 'b'}})
.end((err, res) => {
expect(err).to.be.null;
expect(res.status).to.equal(200);
expect(_.isEqual(res.body, {'b': 2})).to.be.ok;
done();
});
});
it('route 4 should response with dummy-response1.json [default file] for POST with no parameters', (done) => {
request.post(helper.getUrl('/v1/route4'))
.end((err, res) => {
expect(err).to.be.null;
expect(res.status).to.equal(200);
expect(_.isEqual(res.body, {'a': 1})).to.be.ok;
done();
});
});
it('route 9 should response with dummy-response1.json and status 201 for GET', (done) => {
request.get(helper.getUrl('/v1/route9'))
.end((err, res) => {
expect(err).to.be.null;
expect(res.status).to.equal(201);
expect(_.isEqual(res.body, {'a': 1})).to.be.ok;
done();
});
});
it('route 9 should response with dummy-response2.json and status 422 for POST', (done) => {
request.post(helper.getUrl('/v1/route9'))
.end((err, res) => {
expect(err).to.be.null;
expect(res.status).to.equal(203);
expect(_.isEqual(res.body, {'b': 2})).to.be.ok;
done();
});
});
});