Skip to content

Commit

Permalink
tests: add rewriting tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dougwilson committed May 23, 2015
1 parent 76b02a0 commit c69a466
Showing 1 changed file with 67 additions and 24 deletions.
91 changes: 67 additions & 24 deletions test/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ var Router = require('..')
var utils = require('./support/utils')

var assert = utils.assert
var createHitHandle = utils.createHitHandle
var createServer = utils.createServer
var request = utils.request
var shouldHitHandle = utils.shouldHitHandle
var shouldNotHitHandle = utils.shouldNotHitHandle

describe('Router', function () {
it('should return a function', function () {
Expand Down Expand Up @@ -214,12 +217,12 @@ describe('Router', function () {
var router = new Router()
var server = createServer(router)

router[method]('/', sethit(1), sethit(2), helloWorld)
router[method]('/', createHitHandle(1), createHitHandle(2), helloWorld)

request(server)
[method]('/')
.expect('x-fn-1', 'hit')
.expect('x-fn-2', 'hit')
.expect(shouldHitHandle(1))
.expect(shouldHitHandle(2))
.expect(200, body, done)
})

Expand Down Expand Up @@ -349,39 +352,39 @@ describe('Router', function () {
var router = new Router()
var server = createServer(router)

router.use(sethit(1), sethit(2), helloWorld)
router.use(createHitHandle(1), createHitHandle(2), helloWorld)

request(server)
.get('/')
.expect('x-fn-1', 'hit')
.expect('x-fn-2', 'hit')
.expect(shouldHitHandle(1))
.expect(shouldHitHandle(2))
.expect(200, 'hello, world', done)
})

it('should accept single array of middleware', function (done) {
var router = new Router()
var server = createServer(router)

router.use([sethit(1), sethit(2), helloWorld])
router.use([createHitHandle(1), createHitHandle(2), helloWorld])

request(server)
.get('/')
.expect('x-fn-1', 'hit')
.expect('x-fn-2', 'hit')
.expect(shouldHitHandle(1))
.expect(shouldHitHandle(2))
.expect(200, 'hello, world', done)
})

it('should accept nested arrays of middleware', function (done) {
var router = new Router()
var server = createServer(router)

router.use([[sethit(1), sethit(2)], sethit(3)], helloWorld)
router.use([[createHitHandle(1), createHitHandle(2)], createHitHandle(3)], helloWorld)

request(server)
.get('/')
.expect('x-fn-1', 'hit')
.expect('x-fn-2', 'hit')
.expect('x-fn-3', 'hit')
.expect(shouldHitHandle(1))
.expect(shouldHitHandle(2))
.expect(shouldHitHandle(3))
.expect(200, 'hello, world', done)
})

Expand Down Expand Up @@ -493,12 +496,12 @@ describe('Router', function () {
var router = new Router()
var server = createServer(router)

router.use('/foo', sethit(1), sethit(2), helloWorld)
router.use('/foo', createHitHandle(1), createHitHandle(2), helloWorld)

request(server)
.get('/foo')
.expect('x-fn-1', 'hit')
.expect('x-fn-2', 'hit')
.expect(shouldHitHandle(1))
.expect(shouldHitHandle(2))
.expect(200, 'hello, world', done)
})

Expand Down Expand Up @@ -710,6 +713,54 @@ describe('Router', function () {
})
})
})

describe('request rewriting', function () {
it('should support altering req.method', function (done) {
var router = new Router()
var server = createServer(router)

router.put('/foo', createHitHandle(1))
router.post('/foo', createHitHandle(2), function (req, res, next) {
req.method = 'PUT'
next()
})

router.post('/foo', createHitHandle(3))
router.put('/foo', createHitHandle(4))
router.use(saw)

request(server)
.post('/foo')
.expect(shouldNotHitHandle(1))
.expect(shouldHitHandle(2))
.expect(shouldNotHitHandle(3))
.expect(shouldHitHandle(4))
.expect(200, 'saw PUT /foo', done)
})

it('should support altering req.url', function (done) {
var router = new Router()
var server = createServer(router)

router.get('/bar', createHitHandle(1))
router.get('/foo', createHitHandle(2), function (req, res, next) {
req.url = '/bar'
next()
})

router.get('/foo', createHitHandle(3))
router.get('/bar', createHitHandle(4))
router.use(saw)

request(server)
.get('/foo')
.expect(shouldNotHitHandle(1))
.expect(shouldHitHandle(2))
.expect(shouldNotHitHandle(3))
.expect(shouldHitHandle(4))
.expect(200, 'saw GET /bar', done)
})
})
})

function helloWorld(req, res) {
Expand All @@ -718,14 +769,6 @@ function helloWorld(req, res) {
res.end('hello, world')
}

function sethit(num) {
var name = 'x-fn-' + String(num)
return function hit(req, res, next) {
res.setHeader(name, 'hit')
next()
}
}

function setsaw(num) {
var name = 'x-saw-' + String(num)
return function saw(req, res, next) {
Expand Down

0 comments on commit c69a466

Please sign in to comment.