UNPKG

@xervo/api-util

Version:

wrapper to make API request simpler

125 lines (107 loc) 3.21 kB
const Assign = require('lodash.assign'); const Code = require('code'); const Lab = require('lab'); const Nock = require('nock'); const Series = require('run-series'); const Client = require('..')(); const lab = exports.lab = Lab.script(); const describe = lab.describe; const it = lab.it; const expect = Code.expect; const beforeEach = lab.beforeEach; const afterEach = lab.afterEach; const HEADERS = { 'Content-Type': 'application/json', 'Accept': 'application/json', 'API-Version': 'v2' }; describe('Client.post', function () { var scope, data; beforeEach(function (done) { data = void 0; Nock.disableNetConnect(); scope = Nock('https://api.xervo.io', { reqheaders: Assign({}, HEADERS) }); done(); }); afterEach(function (done) { Nock.cleanAll(); Nock.enableNetConnect(); done(); }); describe('when submiting an object', function () { beforeEach(function (done) { data = { sent: true }; // eslint-disable-next-line no-magic-numbers scope.post('/test', data).reply(201, { test: true }); done(); }); it('yields the response body', function (done) { Client.post('/test', data, function (err, result) { expect(err).to.not.exist(); expect(result).to.deep.equal({ test: true }); done(); }); }); }); describe('when submiting an array', function () { beforeEach(function (done) { data = [true]; // eslint-disable-next-line no-magic-numbers scope.post('/test', data).reply(201, { test: true }); done(); }); it('yields the response body', function (done) { Client.post('/test', data, function (err, result) { expect(err).to.not.exist(); expect(result).to.deep.equal({ test: true }); done(); }); }); }); describe('when submiting bad data', function () { it('yields an error', function (done) { var badData = [1, 'invalid', null, void 0]; var steps = badData.map(function (invalid) { return function (next) { Client.post('/test', invalid, function (err) { expect(err).to.exist(); expect(err.message).to.equal('data required'); next(); }); }; }); Series(steps, done); }); }); describe('when submiting no data', function () { it('yields an error', function (done) { Client.post('/test', function (err) { expect(err).to.exist(); expect(err.message).to.equal('data required'); done(); }); }); }); describe('when passed a token', function () { beforeEach(function (done) { data = { sent: true }; scope = Nock('https://api.xervo.io', { reqheaders: Assign({}, HEADERS, { 'Authorization': 'Token 1234' }) }); // eslint-disable-next-line no-magic-numbers scope.post('/test', data).reply(201, { test: true }); done(); }); it('yields the response body', function (done) { Client.post('/test', data, '1234', function (err, result) { expect(err).to.not.exist(); expect(result).to.deep.equal({ test: true }); done(); }); }); }); });