diff --git a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedExample.java b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedExample.java index 4e540eca..2fbb93b1 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedExample.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedExample.java @@ -30,9 +30,10 @@ public void setRightExample(Object rightExample) { @Override public DiffResult isChanged() { - if (!Objects.equals(leftExample, rightExample)) { + if (!Objects.deepEquals(leftExample, rightExample)) { return DiffResult.METADATA; } + return DiffResult.NO_CHANGES; } diff --git a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedExamples.java b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedExamples.java index c1a00bbb..5bf27a72 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedExamples.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedExamples.java @@ -30,7 +30,7 @@ public void setRightExamples(Object rightExamples) { @Override public DiffResult isChanged() { - if (!Objects.equals(leftExamples, rightExamples)) { + if (!Objects.deepEquals(leftExamples, rightExamples)) { return DiffResult.METADATA; } return DiffResult.NO_CHANGES; diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java b/core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java index ac7c997b..b45b2034 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java @@ -34,7 +34,7 @@ public void render(ChangedOpenApi diff, OutputStreamWriter outputStreamWriter) { diff.getNewSpecOpenApi().getInfo().getVersion())); safelyAppend(outputStreamWriter, System.lineSeparator()); safelyAppend(outputStreamWriter, System.lineSeparator()); - safelyAppend(outputStreamWriter, "NOTE: No differences. Specifications are equivalents"); + safelyAppend(outputStreamWriter, "NOTE: No differences. Specifications are equivalent"); } else { safelyAppend( outputStreamWriter, diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java b/core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java index 4f8e10fc..37b926cd 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java @@ -27,7 +27,7 @@ public class ConsoleRender implements Render { public void render(ChangedOpenApi diff, OutputStreamWriter outputStreamWriter) { this.diff = diff; if (diff.isUnchanged()) { - safelyAppend(outputStreamWriter, "No differences. Specifications are equivalents"); + safelyAppend(outputStreamWriter, "No differences. Specifications are equivalent"); } else { safelyAppend(outputStreamWriter, bigTitle("Api Change Log")); safelyAppend( diff --git a/core/src/test/java/org/openapitools/openapidiff/core/SchemaDiffTest.java b/core/src/test/java/org/openapitools/openapidiff/core/SchemaDiffTest.java index 1f41406a..b5cdae03 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/SchemaDiffTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/SchemaDiffTest.java @@ -438,4 +438,21 @@ public void testAllOfDiff() { assertThat(changedSchema.getRequired().getMissing()).containsExactly("fieldA"); assertThat(changedSchema.getRequired().getIncreased()).isEmpty(); } + + @Test + void renderShowsNoDifferencesWhenCSVMediaTypeResponseExampleIsByteArray() { + ChangedOpenApi changedOpenApi = + OpenApiCompare.fromLocations( + "schemaDiff/issue-828-binary-example-for-csv-media-type.yaml", + "schemaDiff/issue-828-binary-example-for-csv-media-type.yaml"); + + assertThat(changedOpenApi).isNotNull(); + + assertThat(changedOpenApi.isUnchanged()).isTrue(); + assertThat(changedOpenApi.isDifferent()).isFalse(); + assertThat(changedOpenApi.isChanged()).isEqualTo(DiffResult.NO_CHANGES); + assertThat(changedOpenApi.isIncompatible()).isFalse(); + assertThat(changedOpenApi.isCompatible()).isTrue(); + assertThat(changedOpenApi.isCoreChanged()).isEqualTo(DiffResult.NO_CHANGES); + } } diff --git a/core/src/test/resources/schemaDiff/issue-828-binary-example-for-csv-media-type.yaml b/core/src/test/resources/schemaDiff/issue-828-binary-example-for-csv-media-type.yaml new file mode 100644 index 00000000..4da624e5 --- /dev/null +++ b/core/src/test/resources/schemaDiff/issue-828-binary-example-for-csv-media-type.yaml @@ -0,0 +1,26 @@ +openapi: 3.0.1 +info: + title: My API + version: 1.0.0 +paths: + /api/v1/csv: + get: + operationId: someCsvEndpoint + responses: + "200": + content: + text/csv: + schema: + type: string + format: binary + example: Example + description: Successful operation + security: + - Bearer: [] + summary: Download a CSV or something +components: + securitySchemes: + Bearer: + bearerFormat: JWT + scheme: bearer + type: http \ No newline at end of file