UNPKG

manuscript-api

Version:

A lightweight wrapper for the Manuscript API

105 lines (82 loc) 3.03 kB
/* global it */ /* global describe */ /* global beforeEach */ /* global afterEach */ require('dotenv').config(); const chai = require('chai'); const expect = chai.expect; const nock = require('nock'); const response = require('./mock-response'); // let logonValidToken = { // "data": {"token":"validtoken"}, // "errors":[], // "warnings":[], // "meta": { // "jsdbInvalidator":"p0LLwfK3IkOEyisVD8iG1A2", // "clientVersionAllowed":{"min":5,"max":5} // }, // "errorCode":null, // "maxCacheAge":null // } const apiEndpoint = 'https://www.example.com/' describe("Require manuscript", () => { it("Require Manuscript: Returns a function when instantiated without parameters", () => { let manuscript = require('../manuscript'); expect(manuscript).to.be.a("function"); }) it("Require Manuscript: Returns an object when instantiated with params", () => { let manuscript = require('../manuscript')("http://www.example.com", "faketoken") expect(manuscript).to.be.an('object'); }) }) describe('Function manuscript.isValid()', () => { nock.disableNetConnect(); let manuscript = require('../manuscript'); beforeEach(() => { nock(`${apiEndpoint}api`) .post('/logon', JSON.stringify({token: "nosuchtoken"})) .reply(400, response.logonInvalidToken); nock(`${apiEndpoint}api`) .post('/logon', JSON.stringify({token: "validtoken"})) .reply(200, response.logonValidToken); }); it('INVALID TOKEN: Returns false given an invalid token', async () => { let mAPI = manuscript(apiEndpoint, "nosuchtoken") let result = await mAPI.isValid(); expect(result).to.be.false; }); it('VALID TOKEN: Returns true given an valid token', async () => { let mAPI = manuscript(apiEndpoint, "validtoken") let result = await mAPI.isValid(); expect(result).to.be.true; }); afterEach(nock.cleanAll); }); describe('Calling Manuscript API', () => { nock.disableNetConnect(); let manuscript = require('../manuscript'); beforeEach(() => { nock(`${apiEndpoint}api`) .post('/new', JSON.stringify({"token": "validtoken", "sTitle": "New Case Through API"})) .reply(200, response.new); nock(`${apiEndpoint}api`) .post('/nosuchcommand', JSON.stringify({token: "validtoken"})) .reply(400, response.noSuchCommand); }); it('VALID DATA: Returns a new case given valid data', async () => { let mAPI = manuscript(apiEndpoint, "validtoken"); let result = await mAPI.new({"token": "validtoken", "sTitle": "New Case Through API"}); expect(result).to.have.property('case') }); it('INVALID ENDPOINT: Throws an error given an invalid command/endpoint', async () => { let mAPI = manuscript(apiEndpoint, "validtoken") try { let result = await mAPI.nosuchcommand(); } catch (err) { expect(err).to.have.property('errors'); expect(err.errors[0].message.includes('No such API command')).to.be.true; } }); afterEach(nock.cleanAll) });