1 | import { expect } from 'chai';
|
2 | import sinon from 'sinon';
|
3 |
|
4 | import header from '../../../src/middleware/header';
|
5 |
|
6 | describe('header', () => {
|
7 | let res;
|
8 | let req;
|
9 | let next;
|
10 |
|
11 | beforeEach(() => {
|
12 | req = {};
|
13 | res = {
|
14 | setHeader: sinon.spy(),
|
15 | };
|
16 | next = {
|
17 | request: sinon.spy(),
|
18 | error: sinon.spy(),
|
19 | };
|
20 | });
|
21 |
|
22 | it('should call next request', (done) => {
|
23 | const app = header()(next);
|
24 | app.request(req, res).then(() => {
|
25 | expect(next.request).to.be.calledWith(req, res);
|
26 | done();
|
27 | });
|
28 | });
|
29 |
|
30 | it('should call res.setHeader', (done) => {
|
31 | const app = header('foo', 'bar')(next);
|
32 | app.request(req, res).then(() => {
|
33 | expect(res.setHeader).to.be.calledWith('foo', 'bar');
|
34 | done();
|
35 | });
|
36 | });
|
37 |
|
38 | it('should call function argument', (done) => {
|
39 | const handler = sinon.spy(() => 'bar');
|
40 | const app = header('foo', handler)(next);
|
41 | app.request(req, res).then(() => {
|
42 | expect(handler).to.be.calledWith(req);
|
43 | expect(res.setHeader).to.be.calledWith('foo', 'bar');
|
44 | done();
|
45 | });
|
46 | });
|
47 |
|
48 | it('should not call setHeader if value is falsy', (done) => {
|
49 | const app = header('foo', false)(next);
|
50 | app.request(req, res).then(() => {
|
51 | expect(res.setHeader).to.not.have.been.called;
|
52 | done();
|
53 | });
|
54 | });
|
55 |
|
56 | it('should call next error', (done) => {
|
57 | const err = new Error();
|
58 | const handler = () => {
|
59 | throw err;
|
60 | };
|
61 | const app = header('foo', handler)(next);
|
62 | app.request(req, res).then(() => {
|
63 | expect(next.error).to.be.calledWith(err, req, res);
|
64 | expect(res.setHeader).to.not.have.been.called;
|
65 | done();
|
66 | });
|
67 | });
|
68 | });
|