1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | client = require('./client')
|
7 | server = require('connect').createServer()
|
8 | assert = require 'assert'
|
9 |
|
10 | describe "An app with @before middleware", ->
|
11 | stack = ['findResource', 'coerceParams', 'dispatchHandler', 'renderResponse']
|
12 | server = require('../lib/lazorse') ->
|
13 | @port = 0
|
14 |
|
15 | response_data = word: 'up'
|
16 |
|
17 |
|
18 | extraAsserts =
|
19 | findResource: (req, res) -> assert.ok not req.resource
|
20 | coerceParams: (req, res) -> assert.ok req.resource; assert.deepEqual req.vars, {}
|
21 | renderResponse: (req, res) -> assert.equal res.data, response_data
|
22 |
|
23 | for mw, i in stack then do (i, mw) =>
|
24 | @before @[mw], (req, res, next) ->
|
25 | if i > 0
|
26 | assert.equal stack[i-1], req.lastLayer
|
27 | extraAsserts[mw]?(req, res)
|
28 | res.allLayers ?= []
|
29 | res.allLayers.push mw
|
30 | req.lastLayer = mw
|
31 | next()
|
32 |
|
33 | @before @renderResponse, (req, res, next) ->
|
34 | res.setHeader 'cool', res.allLayers.join ','
|
35 | next()
|
36 |
|
37 | @resource '/ok': GET: -> @ok response_data
|
38 | before -> client.usePort server.address().port
|
39 | after -> server.close()
|
40 |
|
41 | it 'calls extra middleware at the right times', (done) ->
|
42 | client.GET "/ok", (res) ->
|
43 | assert.ok res.headers.cool
|
44 | assert.deepEqual res.headers.cool.split(','), stack
|
45 | done()
|