Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions test/app.router.js
Original file line number Diff line number Diff line change
Expand Up @@ -1130,6 +1130,56 @@ describe('app.router', function(){
var app = express();
assert.strictEqual(app.get('/', function () {}), app)
})

it('should should not use disposed router/middleware', function(done){
// more context: https://github.com/expressjs/express/issues/5743#issuecomment-2277148412

var app = express();
var router = new express.Router();

router.use(function(req, res, next){
res.setHeader('old', 'foo');
next();
});

app.use(function (req, res, next) {
return router.handle(req, res, next);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To demonstrate the issue I am trying to address, replace
return router.handle(req, res, next);
with
console.log('I want to remove this'); return router.handle(req, res, next);

Is there a mechanism in this case to remove the console.log(...)?

});

app.get('/', function(req, res, next){
res.send('yee');
next();
});

request(app)
.get('/')
.expect('old', 'foo')
.expect(function(res) {
if (typeof res.headers['new'] !== 'undefined') {
throw new Error('`new` header should not be present');
}
})
.expect(200, 'yee', function(err, res) {
if (err) return done(err);

router = new express.Router();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't want to replace the router, I want to completely remove it.


router.use(function(req, res, next){
res.setHeader('new', 'bar');
next();
});

request(app)
.get('/')
.expect('new', 'bar')
.expect(function(res) {
if (typeof res.headers['old'] !== 'undefined') {
throw new Error('`old` header should not be present');
}
})
.expect(200, 'yee', done);
});
})
})

function supportsRegexp(source) {
Expand Down
Loading