1 |
|
2 |
|
3 |
|
4 | redirect = require '../libs/redirect'
|
5 |
|
6 | describe 'Lib', ->
|
7 |
|
8 | describe '#redirect()', (done) ->
|
9 |
|
10 | res =
|
11 | headers: {}
|
12 | setHeader: (header, url) ->
|
13 | this.headers[header] = url
|
14 | end: ->
|
15 |
|
16 | it 'should exist as a public function', (done) ->
|
17 | redirect.should.be.a.Function
|
18 | done()
|
19 |
|
20 | it 'should throw an error if no res parameter was passed', (done) ->
|
21 |
|
22 | redirect.bind(null).should.throw '"res" parameter is required'
|
23 | done()
|
24 |
|
25 | it 'should throw an error if no redirectUrl parameter was passed', (done) ->
|
26 |
|
27 | redirect.bind(null, {}).should.throw '"redirectUrl" parameter is required'
|
28 | done()
|
29 |
|
30 | it 'should set status code to 302', (done) ->
|
31 |
|
32 | redirectUrl = '/admin/checkout'
|
33 |
|
34 | redirect res, redirectUrl
|
35 | res.statusCode.should.be.equal 302
|
36 | done()
|
37 |
|
38 | it 'should set Location header to redirect url', (done) ->
|
39 |
|
40 | redirectUrl = '/admin/checkout'
|
41 |
|
42 | redirect res, redirectUrl
|
43 | res.headers['Location'].should.be.equal '/admin/checkout'
|
44 |
|
45 | done()
|
46 |
|
47 | it 'should call res.end()', (done) ->
|
48 |
|
49 | res.end = ->
|
50 | done()
|
51 |
|
52 | redirectUrl = '/admin/checkout'
|
53 |
|
54 | redirect res, redirectUrl
|
55 |
|
56 | it 'should pass a querystring "previousUrl" if one was passed as parameter', (done) ->
|
57 |
|
58 | redirectUrl = '/admin/logout'
|
59 | previousUrl = '/admin/checkout'
|
60 |
|
61 | res.end = ->
|
62 | res.headers['Location'].should.be.equal '/admin/logout?previousUrl=/admin/checkout'
|
63 | done()
|
64 |
|
65 | redirect res, redirectUrl, previousUrl
|
66 |
|