fix(deps)!: mime-types@^3.0.0 (#5882)
[express.git] / test / app.request.js
blob4930af84c25dafe3d8c7c5e8e32298161784b833
1 'use strict'
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){
10 var app = express();
12 app.request.querystring = function(){
13 return require('url').parse(this.url).query;
16 app.use(function(req, res){
17 res.end(req.querystring());
18 });
20 request(app)
21 .get('/foo?name=tobi')
22 .expect('name=tobi', done);
25 it('should only extend for the referenced app', function (done) {
26 var app1 = express()
27 var app2 = express()
28 var cb = after(2, done)
30 app1.request.foobar = function () {
31 return 'tobi'
34 app1.get('/', function (req, res) {
35 res.send(req.foobar())
38 app2.get('/', function (req, res) {
39 res.send(req.foobar())
42 request(app1)
43 .get('/')
44 .expect(200, 'tobi', cb)
46 request(app2)
47 .get('/')
48 .expect(500, /(?:not a function|has no method)/, cb)
51 it('should inherit to sub apps', function (done) {
52 var app1 = express()
53 var app2 = express()
54 var cb = after(2, done)
56 app1.request.foobar = function () {
57 return 'tobi'
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())
70 request(app1)
71 .get('/')
72 .expect(200, 'tobi', cb)
74 request(app1)
75 .get('/sub')
76 .expect(200, 'tobi', cb)
79 it('should allow sub app to override', function (done) {
80 var app1 = express()
81 var app2 = express()
82 var cb = after(2, done)
84 app1.request.foobar = function () {
85 return 'tobi'
88 app2.request.foobar = function () {
89 return 'loki'
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())
102 request(app1)
103 .get('/')
104 .expect(200, 'tobi', cb)
106 request(app1)
107 .get('/sub')
108 .expect(200, 'loki', cb)
111 it('should not pollute parent app', function (done) {
112 var app1 = express()
113 var app2 = express()
114 var cb = after(2, done)
116 app1.request.foobar = function () {
117 return 'tobi'
120 app2.request.foobar = function () {
121 return 'loki'
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())
134 request(app1)
135 .get('/sub')
136 .expect(200, 'loki', cb)
138 request(app1)
139 .get('/sub/foo')
140 .expect(200, 'tobi', cb)