9
9
from openapi_core import shortcuts
10
10
from openapi_core .schema .specs .models import Spec as OpenApiSpec
11
11
from openapi_core .validation .request .validators import RequestValidator
12
+ from openapi_core .validation .response .validators import ResponseValidator
12
13
13
14
from .openapi_wrappers import (PARAMETERS_KEYS , AiohttpOpenAPIRequest ,
14
15
AiohttpOpenAPIResponse )
15
16
16
- log = logging .getLogger (__name__ )
17
+ logger = logging .getLogger (__name__ )
17
18
18
19
#from openapi_core.wrappers.mock import MockRequest
19
20
@@ -32,7 +33,6 @@ async def validate_request(request: web.Request, spec: OpenApiSpec):
32
33
33
34
return result .parameters , result .body , result .errors
34
35
35
-
36
36
async def validate_parameters (spec : OpenApiSpec , request : web .Request ):
37
37
req = await AiohttpOpenAPIRequest .create (request )
38
38
return shortcuts .validate_parameters (spec , req )
@@ -41,6 +41,9 @@ async def validate_body(spec: OpenApiSpec, request: web.Request):
41
41
req = await AiohttpOpenAPIRequest .create (request )
42
42
return shortcuts .validate_body (spec , req )
43
43
44
+
45
+
46
+
44
47
async def validate_data (spec : OpenApiSpec , request , response : web .Response ):
45
48
46
49
if isinstance (request , web .Request ):
@@ -58,7 +61,26 @@ async def validate_data(spec: OpenApiSpec, request, response: web.Response):
58
61
req = request
59
62
60
63
res = await AiohttpOpenAPIResponse .create (response )
61
- return shortcuts .validate_data (spec , req , res )
64
+
65
+ validator = ResponseValidator (spec )
66
+ result = validator .validate (req , res )
67
+
68
+ result .raise_for_errors ()
69
+
70
+ return result .data
71
+
72
+ async def validate_response (spec : OpenApiSpec , request : web .Request , response : web .Response ):
73
+ """
74
+ Validates server response against openapi specs
75
+
76
+ Raises exceptions OpenAPIError, OpenAPIMappingError
77
+ """
78
+ validator = ResponseValidator (spec )
79
+
80
+ req = await AiohttpOpenAPIRequest .create (request )
81
+ res = AiohttpOpenAPIResponse (response , response .text ) # FIXME:ONLY IN SERVER side. Async in client!
82
+ result = validator .validate (req , res )
83
+ result .raise_for_errors ()
62
84
63
85
64
86
__all__ = (
0 commit comments