diff --git a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedSchema.java b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedSchema.java index 0dfd49ae5..e56d0cb90 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedSchema.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedSchema.java @@ -1,6 +1,5 @@ package org.openapitools.openapidiff.core.model; -import io.swagger.v3.oas.models.PathItem; import io.swagger.v3.oas.models.media.Schema; import java.util.LinkedHashMap; import java.util.List; @@ -75,9 +74,10 @@ public DiffResult isCoreChanged() { && !discriminatorPropertyChanged) { return DiffResult.NO_CHANGES; } + boolean compatibleForRequest = (oldSchema != null || newSchema == null); boolean compatibleForResponse = missingProperties.isEmpty() && (oldSchema == null || newSchema != null); - if ((context.isRequest() && compatibleForRequest() + if ((context.isRequest() && compatibleForRequest || context.isResponse() && compatibleForResponse) && !changedType && !discriminatorPropertyChanged) { @@ -86,15 +86,6 @@ public DiffResult isCoreChanged() { return DiffResult.INCOMPATIBLE; } - private boolean compatibleForRequest() { - if (PathItem.HttpMethod.PUT.equals(context.getMethod())) { - if (increasedProperties.size() > 0) { - return false; - } - } - return (oldSchema != null || newSchema == null); - } - public DiffContext getContext() { return this.context; } diff --git a/core/src/test/java/org/openapitools/openapidiff/core/AddPropPutDiffTest.java b/core/src/test/java/org/openapitools/openapidiff/core/AddPropPutDiffTest.java index d42d1716f..4ec3c6091 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/AddPropPutDiffTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/AddPropPutDiffTest.java @@ -1,7 +1,7 @@ package org.openapitools.openapidiff.core; import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiAreEquals; -import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiBackwardIncompatible; +import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiBackwardCompatible; import org.junit.jupiter.api.Test; @@ -16,7 +16,7 @@ public void testDiffSame() { } @Test - public void testDiffDifferent() { - assertOpenApiBackwardIncompatible(OPENAPI_DOC1, OPENAPI_DOC2); + public void testDiffReportsNonBreakingChange() { + assertOpenApiBackwardCompatible(OPENAPI_DOC1, OPENAPI_DOC2, true); } }