UNPKG

3.55 kBtext/coffeescriptView Raw
1###
2Module dependencies.
3###
4
5rewire = require 'rewire'
6httpErrorResponse = rewire '../libs/http-errors'
7
8fsMock = require './mocks/fs.mock'
9
10httpErrorResponse.__set__ 'fs', fsMock
11
12
13describe 'Lib', ->
14
15 describe '#httpErrorResponse()', ->
16
17 it 'should exist as a public function', (done) ->
18
19 httpErrorResponse.should.be.a.Function
20 done()
21
22 it 'should throw an error if res was not passed as parameter', (done) ->
23
24 httpErrorResponse.bind(null).should.throw '"res" parameter is required'
25 done()
26
27 it 'should throw an error if statusCode was not passed as parameter', (done) ->
28
29 res = {}
30
31 httpErrorResponse.bind(null, res).should.throw '"statusCode" parameter is required'
32 done()
33
34 it 'should return a function', (done) ->
35
36 res = {}
37 statusCode = 404
38
39 notFoundErrorResponse = httpErrorResponse res, statusCode
40
41 notFoundErrorResponse.should.be.a.Function
42 done()
43
44 describe 'Response function', ->
45
46 # Silences console.warns for testing
47 console.warn = ->
48
49 it 'should throw an error if body was not passed as parameter', (done) ->
50
51 res = {}
52 statusCode = 404
53
54 notFoundErrorResponse = httpErrorResponse res, statusCode
55
56 notFoundErrorResponse.bind(null).should.throw '"body" parameter is required'
57 done()
58
59 it 'should throw an error if cookie was not passed as parameter', (done) ->
60
61 res = {}
62 statusCode = 404
63
64 body = ''
65
66 notFoundErrorResponse = httpErrorResponse res, statusCode
67
68 notFoundErrorResponse.bind(null, body).should.throw '"cookie" parameter is required'
69 done()
70
71 it 'should change response status code', (done) ->
72
73 res =
74 statusCode: 0
75 write: ->
76 end: ->
77
78 statusCode = 404
79
80 notFoundErrorResponse = httpErrorResponse res, statusCode
81 notFoundErrorResponse res, statusCode
82
83 res.statusCode.should.be.equal 404
84 done()
85
86 it 'shoul output the error page in the response object', (done) ->
87
88 res =
89 statusCode: 0
90 end: ->
91 write: (page) ->
92 page.should.be.a.String
93 page.should.be.equal 'html-mock'
94 done()
95
96 statusCode = 404
97
98 notFoundErrorResponse = httpErrorResponse res, statusCode
99 notFoundErrorResponse res, statusCode
100
101 it 'should send response', (done) ->
102
103 res =
104 statusCode: 0
105 write: ->
106 end: ->
107 done()
108
109 statusCode = 404
110
111 notFoundErrorResponse = httpErrorResponse res, statusCode
112 notFoundErrorResponse res, statusCode
113
114 it 'should render page from custom path if passed as parameter', (done) ->
115
116 res =
117 statusCode: 0
118 end: ->
119 write: (page) ->
120 page.should.be.a.String
121 page.should.be.equal 'custom-path'
122 done()
123
124 statusCode = 404
125 customPath = 'custom/path.html'
126
127 notFoundErrorResponse = httpErrorResponse res, statusCode, customPath
128 notFoundErrorResponse res, statusCode
129
130 it 'should send a fallback error if no page was found', (done) ->
131
132 res =
133 end: ->
134 write: (page) ->
135 page.should.be.a.String
136 page.should.be.equal 'Error 403: Unauthorized access for auth cookie 1'
137 done()
138
139 statusCode = 403
140
141 notFoundErrorResponse = httpErrorResponse res, statusCode, 'FORCE_ERROR'
142 notFoundErrorResponse res, 1