express-middleware
Version:
Set of middlewares for Chauffeur-Privé
61 lines (44 loc) • 1.71 kB
JavaScript
;
const { expect } = require('chai');
const sinon = require('sinon');
const requestId = require('../../../src/middleware/requestId.js');
describe('request id middleware - requestId.js', () => {
it('should correctly created and called', done => {
const req = { get: () => {} };
const res = { set: () => {} };
const middleware = requestId();
expect(middleware).to.be.instanceof(Function);
middleware(req, res, done);
});
it('should create an new id', () => {
const req = { get: () => {} };
const res = { set: () => {} };
const getSpy = sinon.spy(req, 'get');
const setSpy = sinon.spy(res, 'set');
const middleware = requestId();
middleware(req, res, () => {});
getSpy.withArgs('x-request-id').calledOnce;
setSpy.calledOnce;
const args = setSpy.args[0];
expect(args.length).to.equal(2);
expect(args[0]).to.equal('x-request-id');
expect(args[1]).to.match(/^[0-9a-f-]+$/);
expect(req.requestId).to.equal(args[1]);
});
it('should concate a new id to the current x-request-id header', () => {
const currentReqId = '6ca66f56-dec4-45dd-9dd0-fd1fe6806b18';
const req = { get: () => currentReqId };
const res = { set: () => {} };
const getSpy = sinon.spy(req, 'get');
const setSpy = sinon.spy(res, 'set');
const middleware = requestId();
middleware(req, res, () => {});
getSpy.withArgs('x-request-id').calledOnce;
setSpy.calledOnce;
const args = setSpy.args[0];
expect(args.length).to.equal(2);
expect(args[0]).to.equal('x-request-id');
expect(args[1]).to.match(new RegExp(`^${currentReqId}.[0-9a-f-]+$`));
expect(req.requestId).to.equal(args[1]);
});
});