Extract JSON request body validation to middleware (#1588)

* Set up code skeleton for validation middleware

* Add more boilerplate code

* WIP

* Add ASGI JSONBodyValidator

* Revert example changes

* Remove incorrect content type test

Co-authored-by: Ruwan <ruwanlambrichts@gmail.com>
This commit is contained in:
Robbe Sneyders
2022-09-18 10:55:16 +02:00
committed by GitHub
parent e4b7827b6d
commit fb071ea56f
14 changed files with 2539 additions and 77 deletions

View File

@@ -6,6 +6,7 @@ from connexion import App
from connexion.decorators.validation import RequestBodyValidator
from connexion.json_schema import Draft4RequestValidator
from connexion.spec import Specification
from connexion.validators import JSONBodyValidator
from jsonschema.validators import _utils, extend
from conftest import build_app_from_fixture
@@ -30,11 +31,11 @@ def test_validator_map(json_validation_spec_dir, spec):
MinLengthRequestValidator = extend(Draft4RequestValidator, {"type": validate_type})
class MyRequestBodyValidator(RequestBodyValidator):
class MyJSONBodyValidator(JSONBodyValidator):
def __init__(self, *args, **kwargs):
super().__init__(*args, validator=MinLengthRequestValidator, **kwargs)
validator_map = {"body": MyRequestBodyValidator}
validator_map = {"body": {"application/json": MyJSONBodyValidator}}
app = App(__name__, specification_dir=json_validation_spec_dir)
app.add_api(spec, validate_responses=True, validator_map=validator_map)