UNPKG

@xervo/api-util

Version:

wrapper to make API request simpler

115 lines (98 loc) 3.06 kB
const Assign = require('lodash.assign'); const Code = require('code'); const Lab = require('lab'); const Nock = require('nock'); 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.get', function () { var scope; beforeEach(function (done) { Nock.disableNetConnect(); scope = Nock('https://api.xervo.io', { reqheaders: Assign({}, HEADERS) }); done(); }); afterEach(function (done) { Nock.cleanAll(); Nock.enableNetConnect(); done(); }); describe('when requesting a simple endpoint', function () { describe('when request status is 200', function () { beforeEach(function (done) { // eslint-disable-next-line no-magic-numbers scope.get('/test').reply(200, { test: true }); done(); }); it('yields the response body', function (done) { Client.get('/test', function (err, result) { expect(err).to.not.exist(); expect(result).to.deep.equal({ test: true }); done(); }); }); }); describe('when request status is 400', function () { beforeEach(function (done) { // eslint-disable-next-line no-magic-numbers scope.get('/test').reply(400, { error: true }); done(); }); it('yields the error', function (done) { Client.get('/test', function (err) { expect(err).to.exist(); // eslint-disable-next-line no-magic-numbers expect(err.status).to.equal(400); expect(err.response.body).to.deep.equal({ error: true }); done(); }); }); }); }); describe('when requesting an endpoint with query params', function () { beforeEach(function (done) { scope.get('/test') .query({ with: 'params', other: 'data' }) // eslint-disable-next-line no-magic-numbers .reply(200, { test: true }); done(); }); it('yields the response body', function (done) { Client.get('/test?with=params&other=data', function (err, result) { expect(err).to.not.exist(); expect(result).to.deep.equal({ test: true }); done(); }); }); }); describe('when passed a token', function () { beforeEach(function (done) { scope = Nock('https://api.xervo.io', { reqheaders: Assign({}, HEADERS, { 'Authorization': 'Token 1234' }) }); // eslint-disable-next-line no-magic-numbers scope.get('/test').reply(200, { test: true }); done(); }); it('yields the response body', function (done) { Client.get('/test', '1234', function (err, result) { expect(err).to.not.exist(); expect(result).to.deep.equal({ test: true }); done(); }); }); }); });