fh-wfm-user
Version:
121 lines (99 loc) • 3.11 kB
JavaScript
var sinon = require('sinon');
var proxyquire = require('proxyquire');
var mockMbaasApi = require('../../mocks/mbaasApiMock.js');
var mockVerifySession = require('../../mocks/verifySessionMock');
var mediator = require('fh-wfm-mediator/lib/mediator');
describe('Session Validation Middleware', function() {
var mockNext = sinon.spy();
var mockRes = {};
var statusStub = sinon.stub().returns(mockRes);
var jsonStub = sinon.stub().returns(mockRes);
mockRes.status = statusStub;
mockRes.json = jsonStub;
var mbaasApi,
validateSession;
beforeEach(function(done) {
validateSession = proxyquire('../../../lib/cloud/middleware/validateSession.js', {
'./verifySession': mockVerifySession()
});
mbaasApi = mockMbaasApi();
done();
});
afterEach(function(done) {
statusStub.reset();
jsonStub.reset();
mockNext.reset();
done();
});
it('should return 401 if no session token is available', function(done) {
var mockReq = {
fh_params: {
__fh: {
cuid: "some_cuid",
projectid:"some_project_id",
appid: "some_app_id",
appkey: "some_app_key"
}
}
};
validateSession(mediator, mbaasApi)(mockReq, mockRes, mockNext);
sinon.assert.calledWith(statusStub, sinon.match(401));
sinon.assert.calledWith(jsonStub, sinon.match(new Error("Unauthorized")));
sinon.assert.notCalled(mockNext);
done();
});
it('should proceed if session token is valid', function(done) {
var mockReq = {
fh_params: {
__fh: {
cuid: "some_cuid",
sessiontoken: "valid_sessionToken",
projectid: "some_project_id",
appid: "some_app_id",
appkey: "some_app_key"
}
}
};
validateSession(mediator, mbaasApi)(mockReq, mockRes, mockNext);
sinon.assert.notCalled(statusStub);
sinon.assert.notCalled(jsonStub);
sinon.assert.calledOnce(mockNext);
done();
});
it('should save a valid session if it is not in cache', function(done) {
var mockReq = {
fh_params: {
__fh: {
cuid: "some_cuid",
sessiontoken: "some_valid_sessionToken",
projectid: "some_project_id",
appid: "some_app_id",
appkey: "some_app_key"
}
}
};
validateSession(mediator, mbaasApi)(mockReq, mockRes, mockNext);
sinon.assert.notCalled(statusStub);
sinon.assert.notCalled(jsonStub);
sinon.assert.calledOnce(mockNext);
done();
});
it('should return a 401 if session is not valid', function(done) {
var mockReq = {
fh_params: {
__fh: {
cuid: "some_cuid",
sessiontoken: "invalid_sessionToken",
projectid: "some_project_id",
appid: "some_app_id",
appkey: "some_app_key"
}
}
};
validateSession(mediator, mbaasApi)(mockReq, mockRes, mockNext);
sinon.assert.calledOnce(statusStub);
sinon.assert.calledWith(jsonStub, sinon.match(new Error("Unauthorized")));
sinon.assert.notCalled(mockNext);
done();
});
});