1717from openapi_core .schema .responses .models import Response
1818from openapi_core .schema .schemas .exceptions import (
1919 UndefinedSchemaProperty , MissingSchemaProperty , NoOneOfSchema ,
20+ NoValidSchema ,
2021)
2122from openapi_core .schema .schemas .models import Schema
2223from openapi_core .schema .servers .exceptions import InvalidServer
@@ -1037,9 +1038,10 @@ def test_post_tags_created_now(
10371038 self , spec , response_validator ):
10381039 host_url = 'http://petstore.swagger.io/v1'
10391040 path_pattern = '/v1/tags'
1041+ created = 'now'
10401042 pet_name = 'Dog'
10411043 data_json = {
1042- 'created' : 'now' ,
1044+ 'created' : created ,
10431045 'name' : pet_name ,
10441046 }
10451047 data = json .dumps (data_json )
@@ -1053,8 +1055,14 @@ def test_post_tags_created_now(
10531055 body = request .get_body (spec )
10541056
10551057 assert parameters == {}
1056- assert body == data_json
1058+ assert isinstance (body , BaseModel )
1059+ assert body .created == created
1060+ assert body .name == pet_name
10571061
1062+ code = 400
1063+ message = 'Bad request'
1064+ rootCause = 'Tag already exist'
1065+ additionalinfo = 'Tag Dog already exist'
10581066 data_json = {
10591067 'code' : 400 ,
10601068 'message' : 'Bad request' ,
@@ -1067,15 +1075,20 @@ def test_post_tags_created_now(
10671075 response_result = response_validator .validate (request , response )
10681076
10691077 assert response_result .errors == []
1070- assert response_result .data == data_json
1078+ assert isinstance (response_result .data , BaseModel )
1079+ assert response_result .data .code == code
1080+ assert response_result .data .message == message
1081+ assert response_result .data .rootCause == rootCause
1082+ assert response_result .data .additionalinfo == additionalinfo
10711083
10721084 def test_post_tags_created_datetime (
10731085 self , spec , response_validator ):
10741086 host_url = 'http://petstore.swagger.io/v1'
10751087 path_pattern = '/v1/tags'
1088+ created = '2016-04-16T16:06:05Z'
10761089 pet_name = 'Dog'
10771090 data_json = {
1078- 'created' : '2016-04-16T16:06:05Z' ,
1091+ 'created' : created ,
10791092 'name' : pet_name ,
10801093 }
10811094 data = json .dumps (data_json )
@@ -1089,13 +1102,65 @@ def test_post_tags_created_datetime(
10891102 body = request .get_body (spec )
10901103
10911104 assert parameters == {}
1092- assert body == data_json
1105+ assert isinstance (body , BaseModel )
1106+ assert body .created == created
1107+ assert body .name == pet_name
10931108
1109+ code = 400
1110+ message = 'Bad request'
1111+ rootCause = 'Tag already exist'
1112+ additionalinfo = 'Tag Dog already exist'
10941113 data_json = {
1095- 'code' : 400 ,
1096- 'message' : 'Bad request' ,
1097- 'rootCause' : 'Tag already exist' ,
1098- 'additionalinfo' : 'Tag Dog already exist' ,
1114+ 'code' : code ,
1115+ 'message' : message ,
1116+ 'rootCause' : rootCause ,
1117+ 'additionalinfo' : additionalinfo ,
1118+ }
1119+ data = json .dumps (data_json )
1120+ response = MockResponse (data , status_code = 404 )
1121+
1122+ response_result = response_validator .validate (request , response )
1123+
1124+ assert response_result .errors == []
1125+ assert isinstance (response_result .data , BaseModel )
1126+ assert response_result .data .code == code
1127+ assert response_result .data .message == message
1128+ assert response_result .data .rootCause == rootCause
1129+ assert response_result .data .additionalinfo == additionalinfo
1130+
1131+ @pytest .mark .xfail (reason = 'OneOf for string not supported atm' )
1132+ def test_post_tags_created_invalid_type (
1133+ self , spec , response_validator ):
1134+ host_url = 'http://petstore.swagger.io/v1'
1135+ path_pattern = '/v1/tags'
1136+ created = 'long time ago'
1137+ pet_name = 'Dog'
1138+ data_json = {
1139+ 'created' : created ,
1140+ 'name' : pet_name ,
1141+ }
1142+ data = json .dumps (data_json )
1143+
1144+ request = MockRequest (
1145+ host_url , 'POST' , '/tags' ,
1146+ path_pattern = path_pattern , data = data ,
1147+ )
1148+
1149+ parameters = request .get_parameters (spec )
1150+ with pytest .raises (NoValidSchema ):
1151+ request .get_body (spec )
1152+
1153+ assert parameters == {}
1154+
1155+ code = 400
1156+ message = 'Bad request'
1157+ rootCause = 'Tag already exist'
1158+ additionalinfo = 'Tag Dog already exist'
1159+ data_json = {
1160+ 'code' : code ,
1161+ 'message' : message ,
1162+ 'rootCause' : rootCause ,
1163+ 'additionalinfo' : additionalinfo ,
10991164 }
11001165 data = json .dumps (data_json )
11011166 response = MockResponse (data , status_code = 404 )
0 commit comments