forked from loafle/openapi-generator-original
fix null ref on invalid requestBody reference (#13199)
This commit is contained in:
@@ -167,7 +167,7 @@ public class InlineModelResolver {
|
||||
* Return true if a model should be generated e.g. object with properties,
|
||||
* enum, oneOf, allOf, anyOf, etc.
|
||||
*
|
||||
* @param schema target schema
|
||||
* @param schema target schema
|
||||
* @param visitedSchemas Visited schemas
|
||||
*/
|
||||
private boolean isModelNeeded(Schema schema, Set<Schema> visitedSchemas) {
|
||||
@@ -429,6 +429,10 @@ public class InlineModelResolver {
|
||||
if (requestBody.get$ref() != null) {
|
||||
String ref = ModelUtils.getSimpleRef(requestBody.get$ref());
|
||||
requestBody = openAPI.getComponents().getRequestBodies().get(ref);
|
||||
|
||||
if (requestBody == null) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
flattenContent(requestBody.getContent(),
|
||||
|
||||
@@ -351,6 +351,19 @@ public class InlineModelResolverTest {
|
||||
assertTrue(user.getProperties().get("city") instanceof StringSchema);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resolveRequestBodyInvalidRef() {
|
||||
OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/inline_model_resolver.yaml");
|
||||
new InlineModelResolver().flatten(openAPI);
|
||||
|
||||
RequestBody requestBodyReference = openAPI
|
||||
.getPaths()
|
||||
.get("/resolve_request_body_invalid_ref")
|
||||
.getPost()
|
||||
.getRequestBody();
|
||||
assertNull(requestBodyReference.getContent());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resolveInlineRequestBody() {
|
||||
OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/inline_model_resolver.yaml");
|
||||
@@ -611,7 +624,7 @@ public class InlineModelResolverTest {
|
||||
Schema requestBodySchema = ModelUtils.getReferencedSchema(openAPI, mediaType.getSchema());
|
||||
assertNotNull(requestBodySchema);
|
||||
assertEquals(1, requestBodySchema.getProperties().size(), 1);
|
||||
assertTrue(requestBodySchema.getProperties().get("arbitrary_object_request_body_property") instanceof ObjectSchema);
|
||||
assertTrue(requestBodySchema.getProperties().get("arbitrary_object_request_body_property") instanceof ObjectSchema);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -954,12 +967,12 @@ public class InlineModelResolverTest {
|
||||
.getContent()
|
||||
.get("application/json")
|
||||
.getSchema();
|
||||
//.getProperties()
|
||||
//.get("nullable_request_body_property");
|
||||
//.getProperties()
|
||||
//.get("nullable_request_body_property");
|
||||
Schema nullableRequestBodySchema = ModelUtils.getReferencedSchema(openAPI, nullableRequestBodyReference);
|
||||
//assertEquals(nullableRequestBodySchema, "");
|
||||
Schema nullableSchema = ModelUtils.getReferencedSchema(openAPI,
|
||||
((Schema)nullableRequestBodySchema.getProperties().get("nullable_request_body_property")));
|
||||
((Schema) nullableRequestBodySchema.getProperties().get("nullable_request_body_property")));
|
||||
assertTrue(nullableSchema.getNullable());
|
||||
}
|
||||
|
||||
@@ -1047,7 +1060,7 @@ public class InlineModelResolverTest {
|
||||
requestBodyReference.getContent().get("application/json").getSchema().get$ref());
|
||||
//assertEquals("#/components/schemas/resolveInlineRequestBodyAllOf_request", requestBodyReference.get$ref());
|
||||
|
||||
ComposedSchema allOfModel =(ComposedSchema) openAPI.getComponents().getSchemas().get("resolveInlineRequestBodyAllOf_request");
|
||||
ComposedSchema allOfModel = (ComposedSchema) openAPI.getComponents().getSchemas().get("resolveInlineRequestBodyAllOf_request");
|
||||
assertEquals("#/components/schemas/resolveInlineRequestBody_request", allOfModel.getAllOf().get(0).get$ref());
|
||||
//Schema allOfModel = ModelUtils.getReferencedSchema(openAPI, requestBodyReference.get$ref());
|
||||
|
||||
|
||||
@@ -7,6 +7,14 @@ info:
|
||||
servers:
|
||||
- url: http://api.example.xyz/v1
|
||||
paths:
|
||||
/resolve_request_body_invalid_ref:
|
||||
post:
|
||||
requestBody:
|
||||
$ref: '#/components/schemas/Invalid'
|
||||
operationId: resolveRequestBodyInvalidRef
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
/resolve_inline_request_body:
|
||||
post:
|
||||
requestBody:
|
||||
@@ -348,6 +356,7 @@ paths:
|
||||
data:
|
||||
type: string
|
||||
components:
|
||||
requestBodies: {}
|
||||
schemas:
|
||||
Users:
|
||||
type: array
|
||||
|
||||
Reference in New Issue
Block a user