UNPKG

sap-cf-destination

Version:

convenience utility for calling a URL via a SAP CF destination

228 lines (210 loc) 6.6 kB
const rewire = require("rewire") const chai = require("chai") const chaiAsPromised = require("chai-as-promised") const jsonServer = require("json-server") const path = require("path") const callDestination = require("../index") // set up the middleware chai.use(chaiAsPromised) chai.should() const expect = chai.expect // rewire for testing internal functions const app = rewire("../index.js") callViaDestination = app.__get__("callViaDestination") let mockserver = {} const mockserverPort = 3000 const mockserverUrl = `http://localhost:${mockserverPort}` describe("callDestination in non-CF env", () => { before(done => { // hard-wire "local" mode this.VCAP_APPLICATION = process.env.VCAP_APPLICATION delete process.env.VCAP_APPLICATION // start mock server const server = jsonServer.create() const router = jsonServer.router(path.join(__dirname, "mockdata", "data.json")) const middlewares = jsonServer.defaults() server.use(middlewares) server.use(router) mockserver = server.listen(3000, () => { console.log("JSON Server is running") done() }) }) it("HEAD on a valid endpoint", () => { let parameters = { url: "/builds/1", connectivity_instance: "a", uaa_instance: "b", destination_instance: "c", destination_name: mockserverUrl, http_verb: "HEAD" } return callDestination(parameters) .then(data => { expect(data).to.be.an("object") }) .catch(err => { expect.fail(err) }) }) it("OPTIONS of a valid endpoint", () => { let parameters = { url: "/builds/1", connectivity_instance: "a", uaa_instance: "b", destination_instance: "c", destination_name: mockserverUrl, http_verb: "OPTIONS" } return callDestination(parameters) .then(data => { expect(data).to.be.empty }) .catch(err => { expect.fail(err) }) }) it("GET a valid endpoint", () => { let parameters = { url: "/builds/1", connectivity_instance: "a", uaa_instance: "b", destination_instance: "c", destination_name: mockserverUrl, http_verb: "GET" } return callDestination(parameters) .then(data => { const result = JSON.parse(data) expect(result.id).to.be.equal(1) }) .catch(err => { expect.fail(err) }) }) it("GET full response from valid endpoint", () => { let parameters = { url: "/builds/1", connectivity_instance: "a", uaa_instance: "b", destination_instance: "c", destination_name: mockserverUrl, http_verb: "GET", full_response: true } return callDestination(parameters) .then(object => { expect(object.statusCode).to.equal(200) expect(object.headers).to.be.an("object") }) .catch(err => { expect.fail(err) }) }) it("POST to a valid endpoint", () => { let parameters = { url: "/builds", connectivity_instance: "a", uaa_instance: "b", destination_instance: "c", destination_name: mockserverUrl, http_verb: "POST", payload: { me: "here" } } return callDestination(parameters) .then(validObject => { expect(validObject.me).to.be.equal("here") }) .catch(err => { expect.fail(err) }) }) it("POST form-like data to a valid endpoint", () => { let parameters = { url: "/builds", connectivity_instance: "a", uaa_instance: "b", destination_instance: "c", destination_name: mockserverUrl, http_verb: "POST", formData: { me: "here" } } return callDestination(parameters) .then(validObject => { expect(JSON.parse(validObject)).to.have.property("id") }) .catch(err => { expect.fail(err) }) }) it("PUT to a valid endpoint", () => { let parameters = { url: "/jobs/1", connectivity_instance: "a", uaa_instance: "b", destination_instance: "c", destination_name: mockserverUrl, http_verb: "PUT", payload: { title: "new title" } } return callDestination(parameters) .then(validObject => { expect(validObject.id).to.be.equal(1) }) .catch(err => { expect.fail(err) }) }) it("PATCH a valid endpoint", () => { let parameters = { url: "/jobs/1", connectivity_instance: "a", uaa_instance: "b", destination_instance: "c", destination_name: mockserverUrl, http_verb: "PATCH", payload: { title: "new title" } } return callDestination(parameters) .then(validObject => { expect(validObject.id).to.be.equal(1) }) .catch(err => { expect.fail(err) }) }) it("DELETE a valid endpoint", () => { let parameters = { url: "/builds/1", connectivity_instance: "a", uaa_instance: "b", destination_instance: "c", destination_name: mockserverUrl, http_verb: "DELETE" } return callDestination(parameters) .then(validObject => { expect(validObject).to.exist }) .catch(err => { expect.fail(err) }) }) after(done => { // restore actual runtime env (if applicable) process.env.VCAP_APPLICATION = this.VCAP_APPLICATION // stop mock server mockserver.close(function() { console.log("JSON server stopped") done() }) }) })