UNPKG

actionhero

Version:

actionhero.js is a multi-transport API Server with integrated cluster capabilities and delayed tasks

114 lines (99 loc) 3.23 kB
var chai = require('chai') var dirtyChai = require('dirty-chai') var expect = chai.expect chai.use(dirtyChai) var request = require('request') var path = require('path') var ActionheroPrototype = require(path.join(__dirname, '/../../actionhero.js')) var actionhero = new ActionheroPrototype() var api var client var fingerprint var url var cookieHeader var oldRequest var connectClient = (callback) => { // get actionheroClient in scope eval(api.servers.servers.websocket.compileActionheroClientJS()) // eslint-disable-line var S = api.servers.servers.websocket.server.Socket var url = 'http://localhost:' + api.config.servers.web.port var clientSocket = new S(url) client = new ActionheroClient({}, clientSocket) // eslint-disable-line setTimeout(callback, 100) } describe('Integration: Web Server + Websocket Socket shared fingerprint', () => { before((done) => { actionhero.start((error, a) => { expect(error).to.be.null() api = a url = 'http://localhost:' + api.config.servers.web.port api.config.servers.websocket.clientUrl = 'http://localhost:' + api.config.servers.web.port done() }) }) after((done) => { actionhero.stop(done) }) beforeEach((done) => { cookieHeader = '' connectClient(done) }) afterEach(() => { try { client.disconnect() } catch (e) { // } }) before(() => { // Override http.request to test fingerprint var module = require('http') oldRequest = module.request module.request = function (options, callback) { options.headers.Cookie = cookieHeader return oldRequest.apply(module, arguments) } }) after(() => { // Restore http.request var module = require('http') module.request = oldRequest }) it('should exist when web server been called', (done) => { request.get(url + '/api/', (error, response, body) => { expect(error).to.be.null() body = JSON.parse(body) fingerprint = body.requesterInformation.fingerprint cookieHeader = response.headers['set-cookie'][0] client.connect((error, response) => { expect(error).to.be.null() expect(response.status).to.equal('OK') expect(response.data.id).to.be.ok() var id = response.data.id expect(api.connections.connections[id].fingerprint).to.equal(fingerprint) done() }) }) }) it('should not exist when web server has not been called', (done) => { client.connect((error, response) => { expect(error).to.be.null() expect(response.status).to.equal('OK') expect(response.data.id).to.be.ok() var id = response.data.id expect(api.connections.connections[id].fingerprint).not.to.equal(fingerprint) done() }) }) it('should exist as long as cookie is passed', (done) => { cookieHeader = api.config.servers.web.fingerprintOptions.cookieKey + '=dummyValue' client.connect((error, response) => { expect(error).to.be.null() expect(response.status).to.equal('OK') expect(response.data.id).to.be.ok() var id = response.data.id expect(api.connections.connections[id].fingerprint).to.equal('dummyValue') done() }) }) })