diff --git a/test/app.request.js b/test/app.request.js index b6c00f5baa3..a4522496178 100644 --- a/test/app.request.js +++ b/test/app.request.js @@ -2,7 +2,7 @@ var after = require('after') var express = require('../') - , request = require('supertest'); +var request = require('supertest'); describe('app', function(){ describe('.request', function(){ @@ -18,15 +18,15 @@ describe('app', function(){ }); request(app) - .get('/foo?name=tobi') - .expect('name=tobi', done); + .get('/foo?name=tobi') + .expect(200) + .expect('name=tobi', done); }) it('should only extend for the referenced app', function (done) { var app1 = express() var app2 = express() - var cb = after(2, done) - + app1.request.foobar = function () { return 'tobi' } @@ -36,23 +36,50 @@ describe('app', function(){ }) app2.get('/', function (req, res) { - res.send(req.foobar()) + // This should fail because foobar doesn't exist on app2's request + try { + res.send(req.foobar()) + } catch (err) { + res.status(500).send(err.message) + } }) + var completed = 0 + var total = 2 + + function checkDone() { + completed++ + if (completed === total) { + done() + } + } + request(app1) .get('/') - .expect(200, 'tobi', cb) + .expect(200) + .expect('tobi', checkDone) request(app2) .get('/') - .expect(500, /(?:not a function|has no method)/, cb) + .expect(500) + .expect(function(res) { + // Check that the error indicates foobar is not a function + var errorMsg = res.text || res.body + if (typeof errorMsg === 'string') { + if (!errorMsg.includes('not a function') && + !errorMsg.includes('has no method') && + !errorMsg.includes('is not a function')) { + throw new Error('Expected error message about missing function, got: ' + errorMsg) + } + } + }) + .end(checkDone) }) it('should inherit to sub apps', function (done) { var app1 = express() var app2 = express() - var cb = after(2, done) - + app1.request.foobar = function () { return 'tobi' } @@ -67,20 +94,32 @@ describe('app', function(){ res.send(req.foobar()) }) + var completed = 0 + var total = 2 + + function checkDone(err) { + if (err) return done(err) + completed++ + if (completed === total) { + done() + } + } + request(app1) .get('/') - .expect(200, 'tobi', cb) + .expect(200) + .expect('tobi', checkDone) request(app1) .get('/sub') - .expect(200, 'tobi', cb) + .expect(200) + .expect('tobi', checkDone) }) it('should allow sub app to override', function (done) { var app1 = express() var app2 = express() - var cb = after(2, done) - + app1.request.foobar = function () { return 'tobi' } @@ -99,20 +138,32 @@ describe('app', function(){ res.send(req.foobar()) }) + var completed = 0 + var total = 2 + + function checkDone(err) { + if (err) return done(err) + completed++ + if (completed === total) { + done() + } + } + request(app1) .get('/') - .expect(200, 'tobi', cb) + .expect(200) + .expect('tobi', checkDone) request(app1) .get('/sub') - .expect(200, 'loki', cb) + .expect(200) + .expect('loki', checkDone) }) it('should not pollute parent app', function (done) { var app1 = express() var app2 = express() - var cb = after(2, done) - + app1.request.foobar = function () { return 'tobi' } @@ -131,13 +182,26 @@ describe('app', function(){ res.send(req.foobar()) }) + var completed = 0 + var total = 2 + + function checkDone(err) { + if (err) return done(err) + completed++ + if (completed === total) { + done() + } + } + request(app1) .get('/sub') - .expect(200, 'loki', cb) + .expect(200) + .expect('loki', checkDone) request(app1) .get('/sub/foo') - .expect(200, 'tobi', cb) + .expect(200) + .expect('tobi', checkDone) }) }) })