diff --git a/src/frameworks/express.js b/src/frameworks/express.js index c2c8e64..3110c0d 100644 --- a/src/frameworks/express.js +++ b/src/frameworks/express.js @@ -10,6 +10,11 @@ function getValidator(validateRequest) { function _getParameters(req) { const requestOptions = {}; + if (!req.route || !req.route.path) { + req.route = { + path: req.path + }; + } const path = req.baseUrl.concat(req.route.path); requestOptions.path = path.endsWith('/') ? path.substring(0, path.length - 1) : path; requestOptions.headers = req.headers; diff --git a/test/express/middleware-test.js b/test/express/middleware-test.js index 27612a5..24a35d2 100644 --- a/test/express/middleware-test.js +++ b/test/express/middleware-test.js @@ -414,6 +414,20 @@ describe('input-validation middleware tests - Express', function () { done(); }); }); + it('valid request - use with router module', function (done) { + request(app) + .get('/petsRouter/pets/1234') + .set('api-version', '1.0') + .set('request-id', '123456') + .query({ page: 0 }) + .expect(200, function (err, res) { + if (err) { + throw err; + } + expect(res.body.result).to.equal('OK'); + done(); + }); + }); }); describe('Simple server - type coercion enabled', function () { let app; diff --git a/test/express/test-simple-server.js b/test/express/test-simple-server.js index 83f2bd0..6cd3dff 100644 --- a/test/express/test-simple-server.js +++ b/test/express/test-simple-server.js @@ -3,6 +3,7 @@ const express = require('express'); const bodyParser = require('body-parser'); const inputValidation = require('../../src/middleware'); +const router = require('../router'); module.exports = () => { inputValidation.init('test/pet-store-swagger.yaml'); @@ -24,6 +25,7 @@ module.exports = () => { app.put('/pets', inputValidation.validate, function (req, res, next) { res.json({ result: 'OK' }); }); + app.use('/petsRouter', inputValidation.validate, router); app.use(function (err, req, res, next) { if (err instanceof inputValidation.InputValidationError) { res.status(400).json({ more_info: JSON.stringify(err.errors) });