-
Notifications
You must be signed in to change notification settings - Fork 2
/
middleware.js
36 lines (30 loc) · 990 Bytes
/
middleware.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var sinon = require('sinon')
var Next = require('./support/next')
var Middleware = require('../lib/middleware')
describe('Middleware', function () {
var m, next, req, res, handler
beforeEach(function () {
handler = sinon.spy()
m = Middleware('root', handler)
next = Next()
req = { method: 'GET'}
res = {}
})
function test (url) {
req.url = url
m(req, res, next)
}
it('Should pass path, req, res and next to the handler', function () {
test('/article')
handler.calledWithExactly('root/article', req, res, next).should.be.true
})
it('Should support urlencoded paths', function () {
test('/path%20with%20spaces.md')
handler.calledWith('root/path with spaces.md')
})
it('Should respond with 403 Forbidden when traversing root', function () {
test('/malicious/%2e%2e/%2e%2e/path')
next.error(403)
handler.called.should.be.false
})
})