diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/HtmlRender.java b/core/src/main/java/org/openapitools/openapidiff/core/output/HtmlRender.java index eb4c5b88..518f1071 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/HtmlRender.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/HtmlRender.java @@ -342,13 +342,15 @@ private LiTag li_missingRequest(String name, MediaType request) { } private LiTag li_changedRequest(String name, ChangedMediaType request) { - LiTag li = - li().with(div_changedSchema(request.getSchema())) - .withText(String.format("Changed body: '%s'", name)); - if (request.isIncompatible() && !showAllChanges) { - incompatibilities(li, request.getSchema()); - } else if (showAllChanges) { - allChanges(li, request.getSchema()); + LiTag li = li().withText(String.format("Changed body: '%s'", name)); + ChangedSchema schema = request.getSchema(); + if (schema != null) { + li.with(div_changedSchema(schema)); + if (request.isIncompatible() && !showAllChanges) { + incompatibilities(li, schema); + } else if (showAllChanges) { + allChanges(li, schema); + } } return li; } diff --git a/core/src/test/java/org/openapitools/openapidiff/core/output/HtmlRenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/HtmlRenderTest.java index e62268d1..2d770e00 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/output/HtmlRenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/HtmlRenderTest.java @@ -19,4 +19,28 @@ public void renderDoesNotFailWhenPropertyHasBeenRemoved() { render.render(diff, outputStreamWriter); assertThat(outputStream.toString()).isNotBlank(); } + + @Test + public void issue865_renderDoesNotFailWhenSchemaIsNullButExampleChanged() { + HtmlRender render = new HtmlRender(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); + ChangedOpenApi diff = + OpenApiCompare.fromLocations( + "issue-865-null-schema-1.yaml", "issue-865-null-schema-2.yaml"); + render.render(diff, outputStreamWriter); + assertThat(outputStream.toString()).isNotBlank(); + } + + @Test + public void issue865_renderWithShowAllChangesDoesNotFailWhenSchemaIsNullButExampleChanged() { + HtmlRender render = new HtmlRender(true); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); + ChangedOpenApi diff = + OpenApiCompare.fromLocations( + "issue-865-null-schema-1.yaml", "issue-865-null-schema-2.yaml"); + render.render(diff, outputStreamWriter); + assertThat(outputStream.toString()).isNotBlank(); + } } diff --git a/core/src/test/resources/issue-865-null-schema-1.yaml b/core/src/test/resources/issue-865-null-schema-1.yaml new file mode 100644 index 00000000..10d03cfb --- /dev/null +++ b/core/src/test/resources/issue-865-null-schema-1.yaml @@ -0,0 +1,21 @@ +openapi: 3.0.2 +info: + description: Test for null schema issue + title: Null Schema Test + version: 1.0.0 +paths: + /test: + post: + requestBody: + content: + application/json: + example: original example + schema: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + type: string diff --git a/core/src/test/resources/issue-865-null-schema-2.yaml b/core/src/test/resources/issue-865-null-schema-2.yaml new file mode 100644 index 00000000..9caf660c --- /dev/null +++ b/core/src/test/resources/issue-865-null-schema-2.yaml @@ -0,0 +1,21 @@ +openapi: 3.0.2 +info: + description: Test for null schema issue + title: Null Schema Test + version: 1.0.0 +paths: + /test: + post: + requestBody: + content: + application/json: + example: updated example + schema: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + type: string