3 var after
= require('after')
4 var express
= require('../')
5 , request
= require('supertest');
7 describe('app', function(){
8 describe('.request', function(){
9 it('should extend the request prototype', function(done
){
12 app
.request
.querystring = function(){
13 return require('url').parse(this.url
).query
;
16 app
.use(function(req
, res
){
17 res
.end(req
.querystring());
21 .get('/foo?name=tobi')
22 .expect('name=tobi', done
);
25 it('should only extend for the referenced app', function (done
) {
28 var cb
= after(2, done
)
30 app1
.request
.foobar = function () {
34 app1
.get('/', function (req
, res
) {
35 res
.send(req
.foobar())
38 app2
.get('/', function (req
, res
) {
39 res
.send(req
.foobar())
44 .expect(200, 'tobi', cb
)
48 .expect(500, /(?:not a function|has no method)/, cb
)
51 it('should inherit to sub apps', function (done
) {
54 var cb
= after(2, done
)
56 app1
.request
.foobar = function () {
60 app1
.use('/sub', app2
)
62 app1
.get('/', function (req
, res
) {
63 res
.send(req
.foobar())
66 app2
.get('/', function (req
, res
) {
67 res
.send(req
.foobar())
72 .expect(200, 'tobi', cb
)
76 .expect(200, 'tobi', cb
)
79 it('should allow sub app to override', function (done
) {
82 var cb
= after(2, done
)
84 app1
.request
.foobar = function () {
88 app2
.request
.foobar = function () {
92 app1
.use('/sub', app2
)
94 app1
.get('/', function (req
, res
) {
95 res
.send(req
.foobar())
98 app2
.get('/', function (req
, res
) {
99 res
.send(req
.foobar())
104 .expect(200, 'tobi', cb
)
108 .expect(200, 'loki', cb
)
111 it('should not pollute parent app', function (done
) {
114 var cb
= after(2, done
)
116 app1
.request
.foobar = function () {
120 app2
.request
.foobar = function () {
124 app1
.use('/sub', app2
)
126 app1
.get('/sub/foo', function (req
, res
) {
127 res
.send(req
.foobar())
130 app2
.get('/', function (req
, res
) {
131 res
.send(req
.foobar())
136 .expect(200, 'loki', cb
)
140 .expect(200, 'tobi', cb
)