|
|
@ -0,0 +1,118 @@ |
|
|
|
let {describe, it, before, beforeEach} = require('mocha'); |
|
|
|
let chai = require('chai').use(require('chai-as-promised')); |
|
|
|
let getQueue = require('../mock').getQueue; |
|
|
|
let getControllerWithDetector = require('../boilerplate').getControllerWithDetector; |
|
|
|
let expect = require('chai').expect |
|
|
|
let sinon = require('sinon'); |
|
|
|
|
|
|
|
describe('controller call', () => { |
|
|
|
let spy, queue, server, controller, result; |
|
|
|
let security_token; |
|
|
|
let success = {"jsonrpc":"2.0","id":1,"result":{"outParams":[],"return":{"major":0,"minor":17,"patch":0,"api_version":"0.17.0","name":"(40) Eisenach-Ost","package_version":null,"engine_version":"1.1.1","pep_protocol_version":"2.1"},"errorstack":["init()"]}}; |
|
|
|
let wrongToken = {"jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid request: Wrong security token.","data":{"security_token":"j27yt2FsbQecAd8wgan_3hDEZzepUhz7iEH1GQd","method":"serverVersion","params":[],"id":13,"jsonrpc":"2.0"}},"id":-1}; |
|
|
|
function b1() { |
|
|
|
security_token = "security_token_value_1"; |
|
|
|
spy = sinon.spy(function () { |
|
|
|
return { |
|
|
|
address: "127.0.0.1", |
|
|
|
port: 4223, |
|
|
|
path: "/ja/0.1/", |
|
|
|
security_token: security_token |
|
|
|
}; |
|
|
|
}); |
|
|
|
queue = getQueue(); |
|
|
|
controller = getControllerWithDetector(queue, spy); |
|
|
|
} |
|
|
|
function a1() { |
|
|
|
queue.after(); |
|
|
|
controller.after(); |
|
|
|
} |
|
|
|
describe('after a successful response', () => { |
|
|
|
before(() => { |
|
|
|
b1(); |
|
|
|
queue.respondWith(success); |
|
|
|
result = controller.getVersion(); |
|
|
|
}); |
|
|
|
after(() => { |
|
|
|
a1(); |
|
|
|
}); |
|
|
|
it('fetches connection data', () => { |
|
|
|
expect(spy.calledOnce).to.be.true; |
|
|
|
}); |
|
|
|
it('requests with the known token', () => { |
|
|
|
queue.expectSent({"security_token":"security_token_value_1","method":"serverVersion","params":[],"id":1,"jsonrpc":"2.0"}); |
|
|
|
}); |
|
|
|
it('returns the result for a successful response', () => { |
|
|
|
return expect(result).to.eventually.have |
|
|
|
.property('pep_protocol_version', '2.1'); |
|
|
|
}); |
|
|
|
}); |
|
|
|
describe('after a failed response with an unchanged token', () => { |
|
|
|
before(() => { |
|
|
|
b1(); |
|
|
|
queue.respondWith(wrongToken); |
|
|
|
result = controller.getVersion(); |
|
|
|
}); |
|
|
|
after(() => { |
|
|
|
a1(); |
|
|
|
}); |
|
|
|
it('fetches fresh connection data', () => { |
|
|
|
expect(spy.calledTwice).to.be.true; |
|
|
|
}); |
|
|
|
it('gives up without retrying', () => { |
|
|
|
return expect(result).to.eventually.be.an.instanceof(TypeError); |
|
|
|
}); |
|
|
|
it('performed one call', () => { |
|
|
|
expect(queue.countRequests()).to.equal(1); |
|
|
|
}); |
|
|
|
}); |
|
|
|
describe('after a failed response with a changed token and a successful reply', () => { |
|
|
|
before(() => { |
|
|
|
b1(); |
|
|
|
security_token = "security_token_value_2"; |
|
|
|
queue.respondWith(wrongToken); |
|
|
|
result = controller.getVersion(); |
|
|
|
queue.respondWith(success); |
|
|
|
}); |
|
|
|
after(() => { |
|
|
|
a1(); |
|
|
|
}); |
|
|
|
it('fetches fresh connection data', () => { |
|
|
|
expect(spy.calledTwice).to.be.true; |
|
|
|
}); |
|
|
|
it('requests with the updated token', () => { |
|
|
|
queue.expectSent({"security_token":"security_token_value_2","method":"serverVersion","params":[],"id":2,"jsonrpc":"2.0"}, 1); |
|
|
|
}); |
|
|
|
it('returns the result for a successful response', () => { |
|
|
|
return expect(result).to.eventually.have |
|
|
|
.property('pep_protocol_version', '2.1'); |
|
|
|
}); |
|
|
|
it('performed two calls', () => { |
|
|
|
expect(queue.countRequests()).to.equal(2); |
|
|
|
}); |
|
|
|
}); |
|
|
|
describe('after a failed response with a changed token and a failed reply', () => { |
|
|
|
before(() => { |
|
|
|
b1(); |
|
|
|
queue.respondWith(wrongToken); |
|
|
|
security_token = "security_token_value_2"; |
|
|
|
result = controller.getVersion(); |
|
|
|
queue.respondWith(wrongToken); |
|
|
|
}); |
|
|
|
after(() => { |
|
|
|
a1(); |
|
|
|
}); |
|
|
|
it('fetches fresh connection data', () => { |
|
|
|
expect(spy.calledTwice).to.be.true; |
|
|
|
}); |
|
|
|
it('requests with the updated token', () => { |
|
|
|
queue.expectSent({"security_token":"security_token_value_2","method":"serverVersion","params":[],"id":2,"jsonrpc":"2.0"}, 1); |
|
|
|
}); |
|
|
|
it('gives up', () => { |
|
|
|
return expect(result).to.eventually.be.an.instanceof(TypeError); |
|
|
|
}); |
|
|
|
it('performed two calls', () => { |
|
|
|
expect(queue.countRequests()).to.equal(2); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |