From c065bcefffd688d6dd94d4ff09da1a5d4e6f7f12 Mon Sep 17 00:00:00 2001 From: Ken Chen Date: Tue, 8 Dec 2020 16:56:26 +0800 Subject: [PATCH 1/4] fix path finding in express --- src/frameworks/express.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/frameworks/express.js b/src/frameworks/express.js index d55ea52..505f27e 100644 --- a/src/frameworks/express.js +++ b/src/frameworks/express.js @@ -8,6 +8,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; From f50368c752c3e5008afd8e7072fa03d0120b0ecc Mon Sep 17 00:00:00 2001 From: Ken Chen Date: Tue, 8 Dec 2020 18:40:14 +0800 Subject: [PATCH 2/4] fix indentation --- src/frameworks/express.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/frameworks/express.js b/src/frameworks/express.js index 505f27e..ec441fe 100644 --- a/src/frameworks/express.js +++ b/src/frameworks/express.js @@ -9,9 +9,9 @@ function getValidator(validateRequest) { function _getParameters(req) { const requestOptions = {}; if (!req.route || !req.route.path) { - req.route = { - path: req.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; From 5ca35039ccf93bdb6e76664e149e4fece42f2b02 Mon Sep 17 00:00:00 2001 From: Ken Chen Date: Fri, 11 Dec 2020 15:47:32 +0800 Subject: [PATCH 3/4] add testcase for router module --- test/express/middleware-test.js | 14 ++++++++++++++ test/express/test-simple-server.js | 2 ++ 2 files changed, 16 insertions(+) diff --git a/test/express/middleware-test.js b/test/express/middleware-test.js index 4e96ca2..563453d 100644 --- a/test/express/middleware-test.js +++ b/test/express/middleware-test.js @@ -44,6 +44,20 @@ describe('input-validation middleware tests - Express', function () { before(function () { app = require('./test-simple-server')(); }); + it.only('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(); + }); + }); it('valid request - should pass validation', function (done) { request(app) .get('/pets') 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) }); From bb33d1a0714ad0281dcbc6646132b11d09587d86 Mon Sep 17 00:00:00 2001 From: Ken Chen Date: Fri, 11 Dec 2020 15:57:58 +0800 Subject: [PATCH 4/4] remove .only in testcase --- test/express/middleware-test.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/test/express/middleware-test.js b/test/express/middleware-test.js index 563453d..0eacc98 100644 --- a/test/express/middleware-test.js +++ b/test/express/middleware-test.js @@ -44,20 +44,6 @@ describe('input-validation middleware tests - Express', function () { before(function () { app = require('./test-simple-server')(); }); - it.only('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(); - }); - }); it('valid request - should pass validation', function (done) { request(app) .get('/pets') @@ -428,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;