diff --git a/core/src/main/java/org/openapitools/openapidiff/core/compare/HeaderDiff.java b/core/src/main/java/org/openapitools/openapidiff/core/compare/HeaderDiff.java index 0f71c4963..593c29df1 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/compare/HeaderDiff.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/compare/HeaderDiff.java @@ -4,7 +4,6 @@ import io.swagger.v3.oas.models.headers.Header; import java.util.HashSet; import java.util.Objects; -import java.util.Optional; import org.openapitools.openapidiff.core.model.Changed; import org.openapitools.openapidiff.core.model.ChangedExample; import org.openapitools.openapidiff.core.model.ChangedExamples; @@ -46,12 +45,10 @@ protected DeferredChanged computeDiff( DeferredBuilder builder = new DeferredBuilder<>(); ChangedHeader changedHeader = new ChangedHeader(left, right, context) - .setRequired(getBooleanDiff(left.getRequired(), right.getRequired())) - .setDeprecated( - !Boolean.TRUE.equals(left.getDeprecated()) - && Boolean.TRUE.equals(right.getDeprecated())) + .setRequired(!Objects.equals(left.getRequired(), right.getRequired())) + .setDeprecated(!Objects.equals(left.getDeprecated(), right.getDeprecated())) .setStyle(!Objects.equals(left.getStyle(), right.getStyle())) - .setExplode(getBooleanDiff(left.getExplode(), right.getExplode())) + .setExplode(!Objects.equals(left.getExplode(), right.getExplode())) .setExamples(new ChangedExamples(left.getExamples(), right.getExamples())) .setExample(new ChangedExample(left.getExample(), right.getExample())); builder @@ -77,10 +74,4 @@ protected DeferredChanged computeDiff( .ifPresent(changedHeader::setExtensions); return builder.buildIsChanged(changedHeader); } - - private boolean getBooleanDiff(Boolean left, Boolean right) { - boolean leftRequired = Optional.ofNullable(left).orElse(Boolean.FALSE); - boolean rightRequired = Optional.ofNullable(right).orElse(Boolean.FALSE); - return leftRequired != rightRequired; - } } diff --git a/core/src/main/java/org/openapitools/openapidiff/core/compare/OperationDiff.java b/core/src/main/java/org/openapitools/openapidiff/core/compare/OperationDiff.java index 8d960ba31..b44093263 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/compare/OperationDiff.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/compare/OperationDiff.java @@ -57,8 +57,7 @@ public DeferredChanged diff( .diff(oldOperation.getOperationId(), newOperation.getOperationId(), context)) .ifPresent(changedOperation::setOperationId); changedOperation.setDeprecated( - !Boolean.TRUE.equals(oldOperation.getDeprecated()) - && Boolean.TRUE.equals(newOperation.getDeprecated())); + !Objects.equals(oldOperation.getDeprecated(), newOperation.getDeprecated())); if (oldOperation.getRequestBody() != null || newOperation.getRequestBody() != null) { builder diff --git a/core/src/main/java/org/openapitools/openapidiff/core/compare/ParameterDiff.java b/core/src/main/java/org/openapitools/openapidiff/core/compare/ParameterDiff.java index d85ad92a8..3a8389d16 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/compare/ParameterDiff.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/compare/ParameterDiff.java @@ -4,7 +4,6 @@ import io.swagger.v3.oas.models.parameters.Parameter; import java.util.HashSet; import java.util.Objects; -import java.util.Optional; import org.openapitools.openapidiff.core.model.Changed; import org.openapitools.openapidiff.core.model.ChangedExample; import org.openapitools.openapidiff.core.model.ChangedExamples; @@ -51,14 +50,12 @@ protected DeferredChanged computeDiff( new ChangedParameter(right.getName(), right.getIn(), context) .setOldParameter(left) .setNewParameter(right) - .setChangeRequired(getBooleanDiff(left.getRequired(), right.getRequired())) - .setDeprecated( - !Boolean.TRUE.equals(left.getDeprecated()) - && Boolean.TRUE.equals(right.getDeprecated())) + .setChangeRequired(!Objects.equals(left.getRequired(), right.getRequired())) + .setDeprecated(!Objects.equals(left.getDeprecated(), right.getDeprecated())) .setChangeAllowEmptyValue( - getBooleanDiff(left.getAllowEmptyValue(), right.getAllowEmptyValue())) + !Objects.equals(left.getAllowEmptyValue(), right.getAllowEmptyValue())) .setChangeStyle(!Objects.equals(left.getStyle(), right.getStyle())) - .setChangeExplode(getBooleanDiff(left.getExplode(), right.getExplode())) + .setChangeExplode(!Objects.equals(left.getExplode(), right.getExplode())) .setExamples(new ChangedExamples(left.getExamples(), right.getExamples())) .setExample(new ChangedExample(left.getExample(), right.getExample())); builder @@ -84,10 +81,4 @@ protected DeferredChanged computeDiff( .ifPresent(changedParameter::setExtensions); return builder.buildIsChanged(changedParameter); } - - private boolean getBooleanDiff(Boolean left, Boolean right) { - boolean leftRequired = Optional.ofNullable(left).orElse(Boolean.FALSE); - boolean rightRequired = Optional.ofNullable(right).orElse(Boolean.FALSE); - return leftRequired != rightRequired; - } } diff --git a/core/src/main/java/org/openapitools/openapidiff/core/compare/schemadiffresult/SchemaDiffResult.java b/core/src/main/java/org/openapitools/openapidiff/core/compare/schemadiffresult/SchemaDiffResult.java index 7b59bc3b1..1cd63ae83 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/compare/schemadiffresult/SchemaDiffResult.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/compare/schemadiffresult/SchemaDiffResult.java @@ -50,9 +50,7 @@ public , X> DeferredChanged diff( .setContext(context) .setOldSchema(left) .setNewSchema(right) - .setChangeDeprecated( - !Boolean.TRUE.equals(left.getDeprecated()) - && Boolean.TRUE.equals(right.getDeprecated())) + .setChangeDeprecated(!Objects.equals(left.getDeprecated(), right.getDeprecated())) .setChangeTitle(!Objects.equals(left.getTitle(), right.getTitle())) .setRequired( ListDiff.diff(new ChangedRequired(left.getRequired(), right.getRequired(), context))) diff --git a/core/src/test/java/org/openapitools/openapidiff/core/AddPropDiffTest.java b/core/src/test/java/org/openapitools/openapidiff/core/AddPropDiffTest.java deleted file mode 100644 index 6d668c115..000000000 --- a/core/src/test/java/org/openapitools/openapidiff/core/AddPropDiffTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.openapitools.openapidiff.core; - -import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiAreEquals; -import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiBackwardCompatible; - -import org.junit.jupiter.api.Test; - -public class AddPropDiffTest { - private final String OPENAPI_DOC1 = "add-prop-1.yaml"; - private final String OPENAPI_DOC2 = "add-prop-2.yaml"; - - @Test - public void testDiffSame() { - assertOpenApiAreEquals(OPENAPI_DOC1, OPENAPI_DOC1); - } - - @Test - public void testDiffDifferent() { - assertOpenApiBackwardCompatible(OPENAPI_DOC1, OPENAPI_DOC2, true); - } -} diff --git a/core/src/test/java/org/openapitools/openapidiff/core/AddPropPutDiffTest.java b/core/src/test/java/org/openapitools/openapidiff/core/AddPropPutDiffTest.java deleted file mode 100644 index 6ecc1bc22..000000000 --- a/core/src/test/java/org/openapitools/openapidiff/core/AddPropPutDiffTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.openapitools.openapidiff.core; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiAreEquals; - -import org.junit.jupiter.api.Test; -import org.openapitools.openapidiff.core.model.ChangedOpenApi; - -public class AddPropPutDiffTest { - private final String OPENAPI_DOC1 = "add-prop-put-1.yaml"; - private final String OPENAPI_DOC2 = "add-prop-put-2.yaml"; - - @Test - public void testDiffSame() { - assertOpenApiAreEquals(OPENAPI_DOC1, OPENAPI_DOC1); - } - - @Test - public void testFieldAdditionalInPutApiIsCompatible() { - // See https://github.com/OpenAPITools/openapi-diff/pull/537 - ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); - assertThat(changedOpenApi.isDifferent()).isTrue(); - assertThat(changedOpenApi.isCompatible()).isTrue(); - } -} diff --git a/core/src/test/java/org/openapitools/openapidiff/core/AdditionalPropertiesTest.java b/core/src/test/java/org/openapitools/openapidiff/core/AdditionalPropertiesTest.java deleted file mode 100644 index 7fabd712c..000000000 --- a/core/src/test/java/org/openapitools/openapidiff/core/AdditionalPropertiesTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.openapitools.openapidiff.core; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.io.ByteArrayOutputStream; -import java.io.OutputStreamWriter; -import org.junit.jupiter.api.Test; -import org.openapitools.openapidiff.core.model.ChangedOpenApi; -import org.openapitools.openapidiff.core.output.ConsoleRender; - -class AdditionalPropertiesTest { - @Test - void booleanAdditionalPropertiesAreSupported() { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); - ChangedOpenApi diff = OpenApiCompare.fromLocations("issue-256_1.json", "issue-256_2.json"); - ConsoleRender render = new ConsoleRender(); - render.render(diff, outputStreamWriter); - assertThat(outputStream.toString()).isNotBlank(); - } -} diff --git a/core/src/test/java/org/openapitools/openapidiff/core/ChangesResolver.java b/core/src/test/java/org/openapitools/openapidiff/core/ChangesResolver.java new file mode 100644 index 000000000..0050f95ad --- /dev/null +++ b/core/src/test/java/org/openapitools/openapidiff/core/ChangesResolver.java @@ -0,0 +1,72 @@ +package org.openapitools.openapidiff.core; + +import io.swagger.v3.oas.models.PathItem.HttpMethod; +import java.util.Optional; +import javax.annotation.Nullable; +import org.openapitools.openapidiff.core.model.ChangedApiResponse; +import org.openapitools.openapidiff.core.model.ChangedContent; +import org.openapitools.openapidiff.core.model.ChangedHeaders; +import org.openapitools.openapidiff.core.model.ChangedMediaType; +import org.openapitools.openapidiff.core.model.ChangedOpenApi; +import org.openapitools.openapidiff.core.model.ChangedOperation; +import org.openapitools.openapidiff.core.model.ChangedParameter; +import org.openapitools.openapidiff.core.model.ChangedParameters; +import org.openapitools.openapidiff.core.model.ChangedRequestBody; +import org.openapitools.openapidiff.core.model.ChangedResponse; +import org.openapitools.openapidiff.core.model.ChangedSchema; + +public class ChangesResolver { + + @Nullable + public static ChangedOperation getChangedOperation( + ChangedOpenApi changedOpenApi, HttpMethod method, String path) { + return changedOpenApi.getChangedOperations().stream() + .filter( + operation -> + operation.getHttpMethod().equals(method) && operation.getPathUrl().equals(path)) + .findFirst() + .orElse(null); + } + + @Nullable + public static ChangedParameter getChangedParameter( + ChangedOpenApi changedOpenApi, HttpMethod method, String path, String parameterName) { + ChangedOperation changedOperation = getChangedOperation(changedOpenApi, method, path); + + if (changedOperation == null) { + return null; + } + + return Optional.ofNullable(changedOperation.getParameters()) + .map(ChangedParameters::getChanged) + .flatMap( + changedParameters -> + changedParameters.stream() + .filter(changedParameter -> changedParameter.getName().equals(parameterName)) + .findFirst()) + .orElse(null); + } + + @Nullable + public static ChangedHeaders getChangedResponseHeaders( + ChangedOpenApi changedOpenApi, HttpMethod method, String path, String responseCode) { + return Optional.ofNullable(getChangedOperation(changedOpenApi, method, path)) + .map(ChangedOperation::getApiResponses) + .map(ChangedApiResponse::getChanged) + .map(responses -> responses.get(responseCode)) + .map(ChangedResponse::getHeaders) + .orElse(null); + } + + @Nullable + public static ChangedSchema getRequestBodyChangedSchema( + ChangedOperation changedOperation, String mediaType) { + return Optional.ofNullable(changedOperation) + .map(ChangedOperation::getRequestBody) + .map(ChangedRequestBody::getContent) + .map(ChangedContent::getChanged) + .map(changedMediaTypes -> changedMediaTypes.get(mediaType)) + .map(ChangedMediaType::getSchema) + .orElse(null); + } +} diff --git a/core/src/test/java/org/openapitools/openapidiff/core/OperationDiffTest.java b/core/src/test/java/org/openapitools/openapidiff/core/OperationDiffTest.java index 79f929f82..4a1794204 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/OperationDiffTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/OperationDiffTest.java @@ -1,23 +1,69 @@ package org.openapitools.openapidiff.core; +import static io.swagger.v3.oas.models.PathItem.HttpMethod.*; import static org.assertj.core.api.Assertions.assertThat; +import static org.openapitools.openapidiff.core.ChangesResolver.getChangedOperation; import org.junit.jupiter.api.Test; import org.openapitools.openapidiff.core.model.ChangedOpenApi; +import org.openapitools.openapidiff.core.model.ChangedOperation; import org.openapitools.openapidiff.core.model.DiffResult; public class OperationDiffTest { - private final String OPENAPI_DOC1 = "operation_diff_1.yaml"; - private final String OPENAPI_DOC2 = "operation_diff_2.yaml"; + private final String OPENAPI_DOC1 = "operationDiff/operation_diff_1.yaml"; + private final String OPENAPI_DOC2 = "operationDiff/operation_diff_2.yaml"; @Test - public void testContentDiffWithOneEmptyMediaType() { + public void testOperationIdChanged() { ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); - assertThat(changedOpenApi.isChanged()).isEqualTo(DiffResult.METADATA); - assertThat(changedOpenApi.isDifferent()).isTrue(); - assertThat(changedOpenApi.getChangedOperations().size()).isEqualTo(1); - assertThat(changedOpenApi.getChangedOperations().get(0).getOperationId().isDifferent()) - .isTrue(); + ChangedOperation changedOperation = + getChangedOperation(changedOpenApi, GET, "/operation/operation-id"); + + assertThat(changedOperation).isNotNull(); + assertThat(changedOperation.isChanged()).isEqualTo(DiffResult.METADATA); + assertThat(changedOperation.getOperationId().getRight()).isEqualTo("changed"); + } + + @Test + public void testOperationSummaryChanged() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedOperation changedOperation = + getChangedOperation(changedOpenApi, GET, "/operation/summary"); + + assertThat(changedOperation).isNotNull(); + assertThat(changedOperation.isChanged()).isEqualTo(DiffResult.METADATA); + assertThat(changedOperation.getSummary().getRight()).isEqualTo("changed"); + } + + @Test + public void testOperationDescriptionChanged() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedOperation changedOperation = + getChangedOperation(changedOpenApi, GET, "/operation/description"); + + assertThat(changedOperation).isNotNull(); + assertThat(changedOperation.isChanged()).isEqualTo(DiffResult.METADATA); + assertThat(changedOperation.getDescription().getRight()).isEqualTo("changed"); + } + + @Test + public void testOperationBecomesDeprecated() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedOperation changedOperation = + getChangedOperation(changedOpenApi, GET, "/operation/becomes-deprecated"); + + assertThat(changedOperation).isNotNull(); + assertThat(changedOperation.isDeprecated()).isTrue(); + } + + @Test + public void testOperationBecomesNotDeprecated() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedOperation changedOperation = + getChangedOperation(changedOpenApi, GET, "/operation/becomes-not-deprecated"); + + assertThat(changedOperation).isNotNull(); + assertThat(changedOperation.isDeprecated()).isTrue(); } } diff --git a/core/src/test/java/org/openapitools/openapidiff/core/ParameterDiffTest.java b/core/src/test/java/org/openapitools/openapidiff/core/ParameterDiffTest.java index d04305ed8..40f0cba74 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/ParameterDiffTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/ParameterDiffTest.java @@ -1,96 +1,277 @@ package org.openapitools.openapidiff.core; +import static io.swagger.v3.oas.models.PathItem.HttpMethod.GET; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.openapitools.openapidiff.core.ChangesResolver.getChangedOperation; +import static org.openapitools.openapidiff.core.ChangesResolver.getChangedParameter; +import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiAreEquals; import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiChangedEndpoints; +import io.swagger.v3.oas.models.parameters.Parameter; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.model.ChangedOpenApi; +import org.openapitools.openapidiff.core.model.ChangedOperation; +import org.openapitools.openapidiff.core.model.ChangedParameter; +import org.openapitools.openapidiff.core.model.ChangedParameters; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ParameterDiffTest { + private final String OPENAPI_DOC1 = "parameterDiff/parameter_diff_1.yaml"; + private final String OPENAPI_DOC2 = "parameterDiff/parameter_diff_2.yaml"; + private final String OVERLOADED_PARAMETERS = "parameterDiff/parameters_overloading.yaml"; + private final String DUPLICATED_PARAMETER_TYPES = "parameterDiff/parameters_overloading_2.yaml"; + + @Test + public void testAddParameter() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedOperation changedOperation = + getChangedOperation(changedOpenApi, GET, "/parameter/added"); + + assertThat(changedOperation).isNotNull(); + List increasedParams = + Optional.ofNullable(changedOperation.getParameters()) + .map(ChangedParameters::getIncreased) + .orElse(Collections.emptyList()); + assertThat(increasedParams.size()).isEqualTo(1); + assertThat(increasedParams.get(0).getName()).isEqualTo("param"); + } + + @Test + public void testRemoveParameter() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedOperation changedOperation = + getChangedOperation(changedOpenApi, GET, "/parameter/removed"); + + assertThat(changedOperation).isNotNull(); + List missingParams = + Optional.ofNullable(changedOperation.getParameters()) + .map(ChangedParameters::getMissing) + .orElse(Collections.emptyList()); + assertThat(missingParams.size()).isEqualTo(1); + assertThat(missingParams.get(0).getName()).isEqualTo("param"); + } + @Test - public void testDiffDifferent() { - assertOpenApiChangedEndpoints("parameters_diff_1.yaml", "parameters_diff_2.yaml"); + public void testParameterBecomesDeprecated() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedParameter changedParameter = + getChangedParameter(changedOpenApi, GET, "/parameter/becomes-deprecated", "X-Header"); + + assertThat(changedParameter).isNotNull(); + assertThat(changedParameter.isDeprecated()).isTrue(); + } + + @Test + public void testParameterBecomesNotDeprecated() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedParameter changedParameter = + getChangedParameter(changedOpenApi, GET, "/parameter/becomes-not-deprecated", "X-Header"); + + assertThat(changedParameter).isNotNull(); + assertThat(changedParameter.isDeprecated()).isTrue(); + } + + @Test + public void testParameterRequiredChanged() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedParameter changedParameter = + getChangedParameter(changedOpenApi, GET, "/parameter/required", "param"); + + assertThat(changedParameter).isNotNull(); + assertThat(changedParameter.isChangeRequired()).isTrue(); + } + + @Test + public void testParameterDescriptionChanged() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedParameter changedParameter = + getChangedParameter(changedOpenApi, GET, "/parameter/description", "param"); + + assertThat(changedParameter).isNotNull(); + assertThat(changedParameter.getDescription().getRight()).isEqualTo("changed"); + } + + @Test + public void testParameterExplodeChanged() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedParameter changedParameter = + getChangedParameter(changedOpenApi, GET, "/parameter/explode", "param"); + + assertThat(changedParameter).isNotNull(); + assertThat(changedParameter.isChangeExplode()).isTrue(); + } + + @Test + public void testParameterStyleChanged() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedParameter changedParameter = + getChangedParameter(changedOpenApi, GET, "/parameter/style", "param"); + + assertThat(changedParameter).isNotNull(); + assertThat(changedParameter.isChangeStyle()).isTrue(); + } + + @Test + void testDiffWithOverloadedParameterTypes() { + assertDoesNotThrow( + () -> OpenApiCompare.fromLocations(OVERLOADED_PARAMETERS, OVERLOADED_PARAMETERS)); + assertOpenApiAreEquals(OVERLOADED_PARAMETERS, OVERLOADED_PARAMETERS); + } + + @Test + void testDiffWithDuplicatedParameterTypes() { + assertThrows( + IllegalArgumentException.class, + () -> OpenApiCompare.fromLocations(DUPLICATED_PARAMETER_TYPES, DUPLICATED_PARAMETER_TYPES), + "Two path items have the same signature: /projects/{}"); } @Test public void issue458MaximumDecreased() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_1.yaml", "issue-458-integer-limits_2.yaml"); + "parameterDiff/issue-458-integer-limits_1.yaml", + "parameterDiff/issue-458-integer-limits_2.yaml"); } @Test public void issue458MaximumIncreased() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_1.yaml", "issue-458-integer-limits_3.yaml"); + "parameterDiff/issue-458-integer-limits_1.yaml", + "parameterDiff/issue-458-integer-limits_3.yaml"); } @Test public void issue458MinimumDecreased() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_1.yaml", "issue-458-integer-limits_4.yaml"); + "parameterDiff/issue-458-integer-limits_1.yaml", + "parameterDiff/issue-458-integer-limits_4.yaml"); } @Test public void issue458MinimumIncreased() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_1.yaml", "issue-458-integer-limits_5.yaml"); + "parameterDiff/issue-458-integer-limits_1.yaml", + "parameterDiff/issue-458-integer-limits_5.yaml"); } @Test public void issue458IntegerFormatChanged() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_1.yaml", "issue-458-integer-limits_6.yaml"); + "parameterDiff/issue-458-integer-limits_1.yaml", + "parameterDiff/issue-458-integer-limits_6.yaml"); } @Test public void issue458ExclusiveMinimumChanged() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_1.yaml", "issue-458-integer-limits_7.yaml"); + "parameterDiff/issue-458-integer-limits_1.yaml", + "parameterDiff/issue-458-integer-limits_7.yaml"); } @Test public void issue458ExclusiveMaximumChanged() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_1.yaml", "issue-458-integer-limits_8.yaml"); + "parameterDiff/issue-458-integer-limits_1.yaml", + "parameterDiff/issue-458-integer-limits_8.yaml"); } @Test public void issue458ExclusiveMinimumRemoved() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_1.yaml", "issue-458-integer-limits_9.yaml"); + "parameterDiff/issue-458-integer-limits_1.yaml", + "parameterDiff/issue-458-integer-limits_9.yaml"); } @Test public void issue458ExclusiveMaximumRemoved() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_1.yaml", "issue-458-integer-limits_10.yaml"); + "parameterDiff/issue-458-integer-limits_1.yaml", + "parameterDiff/issue-458-integer-limits_10.yaml"); } @Test public void issue458ExclusiveMaximumTrueToFalse() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_11.yaml", "issue-458-integer-limits_12.yaml"); + "parameterDiff/issue-458-integer-limits_11.yaml", + "parameterDiff/issue-458-integer-limits_12.yaml"); } @Test public void issue458ExclusiveMinimumTrueToFalse() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_11.yaml", "issue-458-integer-limits_13.yaml"); + "parameterDiff/issue-458-integer-limits_11.yaml", + "parameterDiff/issue-458-integer-limits_13.yaml"); } @Test public void issue458ExclusiveMaximumTrueRemoved() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_11.yaml", "issue-458-integer-limits_12.yaml"); + "parameterDiff/issue-458-integer-limits_11.yaml", + "parameterDiff/issue-458-integer-limits_12.yaml"); } @Test public void issue458ExclusiveMinimumTrueRemoved() { assertOpenApiChangedEndpoints( - "issue-458-integer-limits_11.yaml", "issue-458-integer-limits_13.yaml"); + "parameterDiff/issue-458-integer-limits_11.yaml", + "parameterDiff/issue-458-integer-limits_13.yaml"); } @Test public void issue488RenameParameterAddAndRemoveParameterReturnFalse() { - assertOpenApiChangedEndpoints("issue-488-1.json", "issue-488-2.json"); + assertOpenApiChangedEndpoints( + "parameterDiff/issue-488-1.json", "parameterDiff/issue-488-2.json"); + } + + final String TEST_MSG_1 = + "Testing: \n" + + "1. Same path but different pathParameters\n" + + "2. different parameters in the parameters: section\n" + + "3. Parameters have different schema\n" + + "eg:\n" + + "old path -- students/{id}\n" + + "old schema -- id: integer\n" + + "new path -- students/{username}\n" + + "new schema -- username: string"; + + @Test + @DisplayName( + "Same Path, different PathParams, Params in the `Parameters`: match pathParam, Different Schema") + public void pathSamePathParamsDiffParamSameAsInPathButSchemaDiff() { + final Logger logger = LoggerFactory.getLogger(ParameterDiffTest.class); + logger.info(TEST_MSG_1); + String OPENAPI_DOC1 = "parameterDiff/path_parameter_diff_param_schema_diff_old.yaml"; + String OPENAPI_DOC2 = "parameterDiff/path_parameter_diff_param_schema_diff_new.yaml"; + ChangedOpenApi diff = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + Assertions.assertTrue(diff.isDifferent()); + Assertions.assertFalse(diff.isCompatible()); + } + + final String TEST_MSG_2 = + "Testing: \n" + + "1. Same path but different pathParameters\n" + + "2. different parameters in the parameters: section\n" + + "3. Parameters have same schema\n"; + + @Test + @DisplayName( + "Same Path, different PathParams, Params in the `Parameters`: match pathParam, same Schema") + public void pathSamePathParamsDiffParamNameDiffSchemaSame() { + final Logger logger = LoggerFactory.getLogger(ParameterDiffTest.class); + logger.info(TEST_MSG_2); + String OPENAPI_DOC1 = "parameterDiff/path_parameter_diff_param_name_diff_old.yaml"; + String OPENAPI_DOC2 = "parameterDiff/path_parameter_diff_param_name_diff_new.yaml"; + ChangedOpenApi diff = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + Assertions.assertFalse(diff.isDifferent()); + Assertions.assertTrue(diff.isCompatible()); } } diff --git a/core/src/test/java/org/openapitools/openapidiff/core/ParametersOverloadingTest.java b/core/src/test/java/org/openapitools/openapidiff/core/ParametersOverloadingTest.java deleted file mode 100644 index bc779be56..000000000 --- a/core/src/test/java/org/openapitools/openapidiff/core/ParametersOverloadingTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.openapitools.openapidiff.core; - -import static org.junit.jupiter.api.Assertions.*; -import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiAreEquals; - -import org.junit.jupiter.api.Test; - -class ParametersOverloadingTest { - - private final String OVERLOADED_PARAMETERS = "parameters_overloading.yaml"; - private final String DUPLICATED_PARAMETER_TYPES = "parameters_overloading_2.yaml"; - - @Test - void testDiffWithOverloadedParameterTypes() { - assertDoesNotThrow( - () -> OpenApiCompare.fromLocations(OVERLOADED_PARAMETERS, OVERLOADED_PARAMETERS)); - assertOpenApiAreEquals(OVERLOADED_PARAMETERS, OVERLOADED_PARAMETERS); - } - - @Test - void testDiffWithDuplicatedParameterTypes() { - assertThrows( - IllegalArgumentException.class, - () -> OpenApiCompare.fromLocations(DUPLICATED_PARAMETER_TYPES, DUPLICATED_PARAMETER_TYPES), - "Two path items have the same signature: /projects/{}"); - } -} diff --git a/core/src/test/java/org/openapitools/openapidiff/core/PathParameterSchemaDiffTest.java b/core/src/test/java/org/openapitools/openapidiff/core/PathParameterSchemaDiffTest.java deleted file mode 100644 index 1c4065ed9..000000000 --- a/core/src/test/java/org/openapitools/openapidiff/core/PathParameterSchemaDiffTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.openapitools.openapidiff.core; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.openapitools.openapidiff.core.model.ChangedOpenApi; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class PathParameterSchemaDiffTest { - final String TEST_MSG_1 = - "Testing: \n" - + "1. Same path but different pathParameters\n" - + "2. different parameters in the parameters: section\n" - + "3. Parameters have different schema\n" - + "eg:\n" - + "old path -- students/{id}\n" - + "old schema -- id: integer\n" - + "new path -- students/{username}\n" - + "new schema -- username: string"; - - final String TEST_MSG_2 = - "Testing: \n" - + "1. Same path but different pathParameters\n" - + "2. different parameters in the parameters: section\n" - + "3. Parameters have same schema\n"; - - @Test - @DisplayName( - "Same Path, different PathParams, Params in the `Parameters`: match pathParam, Different Schema") - public void pathSamePathParamsDiffParamSameAsInPathButSchemaDiff() { - final Logger logger = LoggerFactory.getLogger(PathParameterSchemaDiffTest.class); - logger.info(TEST_MSG_1); - String OPENAPI_DOC1 = "path_parameter_diff_param_schema_diff_old.yaml"; - String OPENAPI_DOC2 = "path_parameter_diff_param_schema_diff_new.yaml"; - ChangedOpenApi diff = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); - Assertions.assertTrue(diff.isDifferent()); - Assertions.assertFalse(diff.isCompatible()); - } - - @Test - @DisplayName( - "Same Path, different PathParams, Params in the `Parameters`: match pathParam, same Schema") - public void pathSamePathParamsDiffParamNameDiffSchemaSame() { - final Logger logger = LoggerFactory.getLogger(PathParameterSchemaDiffTest.class); - logger.info(TEST_MSG_2); - String OPENAPI_DOC1 = "path_parameter_diff_param_name_diff_old.yaml"; - String OPENAPI_DOC2 = "path_parameter_diff_param_name_diff_new.yaml"; - ChangedOpenApi diff = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); - Assertions.assertFalse(diff.isDifferent()); - Assertions.assertTrue(diff.isCompatible()); - } -} diff --git a/core/src/test/java/org/openapitools/openapidiff/core/ResponseHeaderDiffTest.java b/core/src/test/java/org/openapitools/openapidiff/core/ResponseHeaderDiffTest.java index 05e4ecfe3..c388e9692 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/ResponseHeaderDiffTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/ResponseHeaderDiffTest.java @@ -1,34 +1,86 @@ package org.openapitools.openapidiff.core; +import static io.swagger.v3.oas.models.PathItem.HttpMethod.GET; import static org.assertj.core.api.Assertions.assertThat; +import static org.openapitools.openapidiff.core.ChangesResolver.getChangedResponseHeaders; import java.util.Map; import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.model.ChangedHeader; import org.openapitools.openapidiff.core.model.ChangedHeaders; import org.openapitools.openapidiff.core.model.ChangedOpenApi; -import org.openapitools.openapidiff.core.model.ChangedResponse; public class ResponseHeaderDiffTest { - private final String OPENAPI_DOC1 = "header_1.yaml"; - private final String OPENAPI_DOC2 = "header_2.yaml"; + private final String OPENAPI_DOC1 = "responseHeaderDiff/response_header_1.yaml"; + private final String OPENAPI_DOC2 = "responseHeaderDiff/response_header_2.yaml"; @Test - public void testDiffDifferent() { + public void testResponseHeadersDescriptionChanges() { ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedHeaders changedResponseHeaders = + getChangedResponseHeaders(changedOpenApi, GET, "/response/headers/description", "200"); - assertThat(changedOpenApi.getNewEndpoints()).isEmpty(); - assertThat(changedOpenApi.getMissingEndpoints()).isEmpty(); - assertThat(changedOpenApi.getChangedOperations()).isNotEmpty(); - - Map changedResponses = - changedOpenApi.getChangedOperations().get(0).getApiResponses().getChanged(); - assertThat(changedResponses).isNotEmpty(); - assertThat(changedResponses).containsKey("200"); - ChangedHeaders changedHeaders = changedResponses.get("200").getHeaders(); - assertThat(changedHeaders.isDifferent()).isTrue(); - assertThat(changedHeaders.getChanged()).hasSize(1); - assertThat(changedHeaders.getIncreased()).hasSize(1); - assertThat(changedHeaders.getMissing()).hasSize(1); + assertThat(changedResponseHeaders).isNotNull(); + Map changedHeaders = changedResponseHeaders.getChanged(); + + assertThat(changedHeaders).containsKey("x-header-description-changed"); + assertThat(changedHeaders.get("x-header-description-changed").getDescription()).isNotNull(); + assertThat(changedHeaders.get("x-header-description-changed").getDescription().getLeft()) + .isEqualTo("old description"); + assertThat(changedHeaders.get("x-header-description-changed").getDescription().getRight()) + .isEqualTo("new description"); + + assertThat(changedHeaders).containsKey("x-header-description-added"); + assertThat(changedHeaders.get("x-header-description-added").getDescription()).isNotNull(); + assertThat(changedHeaders.get("x-header-description-added").getDescription().getLeft()) + .isNull(); + assertThat(changedHeaders.get("x-header-description-added").getDescription().getRight()) + .isEqualTo("added description"); + + assertThat(changedHeaders).containsKey("x-header-description-removed"); + assertThat(changedHeaders.get("x-header-description-removed").getDescription()).isNotNull(); + assertThat(changedHeaders.get("x-header-description-removed").getDescription().getLeft()) + .isEqualTo("old description"); + assertThat(changedHeaders.get("x-header-description-removed").getDescription().getRight()) + .isNull(); + } + + @Test + public void testResponseHeadersRequiredChanges() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedHeaders changedResponseHeaders = + getChangedResponseHeaders(changedOpenApi, GET, "/response/headers/required", "200"); + + assertThat(changedResponseHeaders).isNotNull(); + Map changedHeaders = changedResponseHeaders.getChanged(); + + assertThat(changedHeaders).containsKey("x-header-required-changed"); + } + + @Test + public void testResponseHeadersExplodeChanges() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedHeaders changedResponseHeaders = + getChangedResponseHeaders(changedOpenApi, GET, "/response/headers/explode", "200"); + + assertThat(changedResponseHeaders).isNotNull(); + Map changedHeaders = changedResponseHeaders.getChanged(); + + assertThat(changedHeaders).containsKey("x-header-explode-changed"); + } + + @Test // issue #485 + public void testResponseHeadersDeprecatedChanges() { + ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2); + ChangedHeaders changedResponseHeaders = + getChangedResponseHeaders(changedOpenApi, GET, "/response/headers/deprecated", "200"); + + assertThat(changedResponseHeaders).isNotNull(); + Map changedHeaders = changedResponseHeaders.getChanged(); + assertThat(changedHeaders).containsKey("x-header-becomes-deprecated"); + assertThat(changedHeaders.get("x-header-becomes-deprecated").isDeprecated()).isTrue(); + assertThat(changedHeaders).containsKey("x-header-becomes-not-deprecated"); + assertThat(changedHeaders.get("x-header-becomes-not-deprecated").isDeprecated()).isTrue(); } } diff --git a/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java b/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java deleted file mode 100644 index 52abeac6d..000000000 --- a/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.openapitools.openapidiff.core; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import org.junit.jupiter.api.Test; -import org.openapitools.openapidiff.core.model.ChangedOpenApi; -import org.openapitools.openapidiff.core.model.ChangedSchema; - -public class SchemaDefaultsTest { - - @Test - public void issue717DefaultsInSchema() { - ChangedOpenApi changedOpenApi = - OpenApiCompare.fromLocations( - "issue-717-schema-defaults-handling-1.yaml", - "issue-717-schema-defaults-handling-2.yaml"); - - assertEquals(1, changedOpenApi.getChangedOperations().size()); - assertEquals(1, changedOpenApi.getChangedSchemas().size()); - ChangedSchema changedSchema = changedOpenApi.getChangedSchemas().get(0); - assertEquals(1, changedSchema.getChangedProperties().size()); - assertTrue(changedSchema.getChangedProperties().containsKey("field1")); - assertTrue(changedSchema.getChangedProperties().get("field1").isChangeDefault()); - } -} diff --git a/core/src/test/java/org/openapitools/openapidiff/core/SchemaDiffTest.java b/core/src/test/java/org/openapitools/openapidiff/core/SchemaDiffTest.java new file mode 100644 index 000000000..9016f2b91 --- /dev/null +++ b/core/src/test/java/org/openapitools/openapidiff/core/SchemaDiffTest.java @@ -0,0 +1,107 @@ +package org.openapitools.openapidiff.core; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.openapitools.openapidiff.core.ChangesResolver.getChangedOperation; +import static org.openapitools.openapidiff.core.ChangesResolver.getRequestBodyChangedSchema; +import static org.openapitools.openapidiff.core.TestUtils.assertOpenApiBackwardCompatible; + +import io.swagger.v3.oas.models.PathItem.HttpMethod; +import java.io.ByteArrayOutputStream; +import java.io.OutputStreamWriter; +import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.model.ChangedOpenApi; +import org.openapitools.openapidiff.core.model.ChangedOperation; +import org.openapitools.openapidiff.core.model.ChangedSchema; +import org.openapitools.openapidiff.core.output.ConsoleRender; + +public class SchemaDiffTest { + + @Test // issue #717 + public void schemaPropertyDefaultChanged() { + ChangedOpenApi changedOpenApi = + OpenApiCompare.fromLocations( + "schemaDiff/schema-props-defaults-handling-1.yaml", + "schemaDiff/schema-props-defaults-handling-2.yaml"); + + assertEquals(1, changedOpenApi.getChangedOperations().size()); + assertEquals(1, changedOpenApi.getChangedSchemas().size()); + ChangedSchema changedSchema = changedOpenApi.getChangedSchemas().get(0); + assertEquals(1, changedSchema.getChangedProperties().size()); + assertTrue(changedSchema.getChangedProperties().containsKey("field1")); + assertTrue(changedSchema.getChangedProperties().get("field1").isChangeDefault()); + } + + @Test + public void schemaPropertyTypeChanged() { + ChangedOpenApi changedOpenApi = + OpenApiCompare.fromLocations( + "schemaDiff/schema-props-defaults-handling-1.yaml", + "schemaDiff/schema-props-defaults-handling-2.yaml"); + } + + @Test // issue #485 + public void schemaBecomesDeprecatedTest() { + ChangedOpenApi changedOpenApi = + OpenApiCompare.fromLocations( + "schemaDiff/schema-deprecated-handling-1.yaml", + "schemaDiff/schema-deprecated-handling-2.yaml"); + + ChangedOperation operation = + getChangedOperation(changedOpenApi, HttpMethod.POST, "/schema-diff/deprecated/added"); + assertNotNull(operation); + + ChangedSchema requestBodySchema = getRequestBodyChangedSchema(operation, "application/json"); + assertNotNull(requestBodySchema); + assertTrue(requestBodySchema.isChangeDeprecated()); + } + + @Test // issue #485 + public void schemaBecomesNotDeprecatedTest() { + ChangedOpenApi changedOpenApi = + OpenApiCompare.fromLocations( + "schemaDiff/schema-deprecated-handling-1.yaml", + "schemaDiff/schema-deprecated-handling-2.yaml"); + + ChangedOperation operation = + getChangedOperation(changedOpenApi, HttpMethod.POST, "/schema-diff/deprecated/removed"); + assertNotNull(operation); + + ChangedSchema requestBodySchema = getRequestBodyChangedSchema(operation, "application/json"); + assertNotNull(requestBodySchema); + assertTrue(requestBodySchema.isChangeDeprecated()); + } + + @Test // issue #256 + void booleanAdditionalPropertiesAreSupported() { + ChangedOpenApi diff = + OpenApiCompare.fromLocations( + "schemaDiff/schema-additional-properties-1.json", + "schemaDiff/schema-additional-properties-2.json"); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); + ConsoleRender render = new ConsoleRender(); + render.render(diff, outputStreamWriter); + assertThat(outputStream.toString()).isNotBlank(); + } + + @Test + public void addPropertyHandlingTest() { + assertOpenApiBackwardCompatible( + "schemaDiff/schema-add-property-1.yaml", "schemaDiff/schema-add-property-2.yaml", true); + } + + @Test // issue #537 + public void addPropertyInPutApiIsCompatible() { + ChangedOpenApi changedOpenApi = + OpenApiCompare.fromLocations( + "schemaDiff/schema-add-property-put-1.yaml", + "schemaDiff/schema-add-property-put-2.yaml"); + + assertThat(changedOpenApi.isDifferent()).isTrue(); + assertThat(changedOpenApi.isCompatible()).isTrue(); + } +} diff --git a/core/src/test/resources/header_1.yaml b/core/src/test/resources/header_1.yaml deleted file mode 100644 index 66f4a1665..000000000 --- a/core/src/test/resources/header_1.yaml +++ /dev/null @@ -1,129 +0,0 @@ -openapi: 3.0.0 -servers: - - url: 'http://petstore.swagger.io/v2' -info: - description: >- - This is a sample server Petstore server. You can find out more about - Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, - #swagger](http://swagger.io/irc/). For this sample, you can use the api key - `special-key` to test the authorization filters. - version: 1.0.0 - title: Swagger Petstore - termsOfService: 'http://swagger.io/terms/' - contact: - email: apiteam@swagger.io - license: - name: Apache 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0.html' -tags: - - name: pet - description: Everything about your Pets - externalDocs: - description: Find out more - url: 'http://swagger.io' - - name: store - description: Access to Petstore orders - - name: user - description: Operations about user - externalDocs: - description: Find out more about our store - url: 'http://swagger.io' -paths: - /user/login: - get: - tags: - - user - summary: Logs user into the system - description: '' - operationId: loginUser - parameters: - - name: username - in: query - description: The user name for login - required: true - schema: - type: string - responses: - '200': - description: successful operation - headers: - X-Rate-Limit: - description: calls per hour allowed by the user - schema: - type: integer - format: int32 - X-Expires-After: - description: date in UTC when token expires - schema: - type: integer - content: - application/xml: - schema: - type: integer - application/json: - schema: - type: string - '400': - description: Invalid username/password supplied -externalDocs: - description: Find out more about Swagger - url: 'http://swagger.io' -components: - requestBodies: - Pet: - content: - application/json: - schema: - $ref: '#/components/schemas/Pet' - description: Pet object that needs to be added to the store - required: true - securitySchemes: - petstore_auth: - type: oauth2 - flows: - implicit: - authorizationUrl: 'http://petstore.swagger.io/oauth/dialog' - scopes: - 'write:pets': modify pets in your account - 'read:pets': read your pets - api_key: - type: apiKey - name: api_key - in: header - schemas: - Pet: - type: object - required: - - pet_type - properties: - pet_type: - type: string - discriminator: - propertyName: pet_type - mapping: - cachorro: Dog - Cat: - type: object - properties: - name: - type: string - Dog: - type: object - properties: - bark: - type: string - Lizard: - type: object - properties: - lovesRocks: - type: boolean - - MyResponseType: - oneOf: - - $ref: '#/components/schemas/Cat' - - $ref: '#/components/schemas/Dog' - - $ref: '#/components/schemas/Lizard' - discriminator: - propertyName: pet_type - mapping: - dog: '#/components/schemas/Dog' \ No newline at end of file diff --git a/core/src/test/resources/header_2.yaml b/core/src/test/resources/header_2.yaml deleted file mode 100644 index 124b75ef3..000000000 --- a/core/src/test/resources/header_2.yaml +++ /dev/null @@ -1,129 +0,0 @@ -openapi: 3.0.0 -servers: - - url: 'http://petstore.swagger.io/v2' -info: - description: >- - This is a sample server Petstore server. You can find out more about - Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, - #swagger](http://swagger.io/irc/). For this sample, you can use the api key - `special-key` to test the authorization filters. - version: 1.0.0 - title: Swagger Petstore - termsOfService: 'http://swagger.io/terms/' - contact: - email: apiteam@swagger.io - license: - name: Apache 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0.html' -tags: - - name: pet - description: Everything about your Pets - externalDocs: - description: Find out more - url: 'http://swagger.io' - - name: store - description: Access to Petstore orders - - name: user - description: Operations about user - externalDocs: - description: Find out more about our store - url: 'http://swagger.io' -paths: - /user/login: - get: - tags: - - user - summary: Logs user into the system - description: '' - operationId: loginUser - parameters: - - name: username - in: query - description: The user name for login - required: true - schema: - type: string - responses: - '200': - description: successful operation - headers: - X-Rate-Limit-New: - description: calls per hour allowed by the user - schema: - type: integer - format: int32 - X-Expires-After: - description: date in UTC when token expires - schema: - type: string - content: - application/xml: - schema: - type: integer - application/json: - schema: - type: string - '400': - description: Invalid username/password supplied -externalDocs: - description: Find out more about Swagger - url: 'http://swagger.io' -components: - requestBodies: - Pet: - content: - application/json: - schema: - $ref: '#/components/schemas/Pet' - description: Pet object that needs to be added to the store - required: true - securitySchemes: - petstore_auth: - type: oauth2 - flows: - implicit: - authorizationUrl: 'http://petstore.swagger.io/oauth/dialog' - scopes: - 'write:pets': modify pets in your account - 'read:pets': read your pets - api_key: - type: apiKey - name: api_key - in: header - schemas: - Pet: - type: object - required: - - pet_type - properties: - pet_type: - type: string - discriminator: - propertyName: pet_type - mapping: - cachorro: Dog - Cat: - type: object - properties: - name: - type: string - Dog: - type: object - properties: - bark: - type: string - Lizard: - type: object - properties: - lovesRocks: - type: boolean - - MyResponseType: - oneOf: - - $ref: '#/components/schemas/Cat' - - $ref: '#/components/schemas/Dog' - - $ref: '#/components/schemas/Lizard' - discriminator: - propertyName: pet_type - mapping: - dog: '#/components/schemas/Dog' \ No newline at end of file diff --git a/core/src/test/resources/operationDiff/operation_diff_1.yaml b/core/src/test/resources/operationDiff/operation_diff_1.yaml new file mode 100644 index 000000000..e0faf2df2 --- /dev/null +++ b/core/src/test/resources/operationDiff/operation_diff_1.yaml @@ -0,0 +1,54 @@ +--- +openapi: "3.0.1" +info: + title: "Test title" + description: "This is a test metadata" + termsOfService: "http://test.com" + contact: + name: "Mark Snijder" + url: "marksnijder.nl" + email: "snijderd@gmail.com" + license: + name: "To be decided" + url: "http://test.com" + version: "version 1.0" +paths: + /operation/operation-id: + get: + operationId: operation + responses: + '200': + description: response + content: + application/json: {} + /operation/summary: + get: + summary: summary + responses: + '200': + description: response + content: + application/json: { } + /operation/description: + get: + description: description + responses: + '200': + description: response + content: + application/json: { } + /operation/becomes-deprecated: + get: + responses: + '200': + description: response + content: + application/json: { } + /operation/becomes-not-deprecated: + get: + deprecated: true + responses: + '200': + description: response + content: + application/json: { } diff --git a/core/src/test/resources/operationDiff/operation_diff_2.yaml b/core/src/test/resources/operationDiff/operation_diff_2.yaml new file mode 100644 index 000000000..8f5124955 --- /dev/null +++ b/core/src/test/resources/operationDiff/operation_diff_2.yaml @@ -0,0 +1,55 @@ +--- +openapi: "3.0.1" +info: + title: "Test title" + description: "This is a test metadata" + termsOfService: "http://test.com" + contact: + name: "Mark Snijder" + url: "marksnijder.nl" + email: "snijderd@gmail.com" + license: + name: "To be decided" + url: "http://test.com" + version: "version 1.0" +paths: + /operation/operation-id: + get: + operationId: changed + responses: + '200': + description: response + content: + application/json: {} + /operation/summary: + get: + summary: changed + responses: + '200': + description: response + content: + application/json: { } + /operation/description: + get: + description: changed + responses: + '200': + description: response + content: + application/json: { } + /operation/becomes-deprecated: + get: + deprecated: true + responses: + '200': + description: response + content: + application/json: { } + /operation/becomes-not-deprecated: + get: + deprecated: false + responses: + '200': + description: response + content: + application/json: { } diff --git a/core/src/test/resources/operation_diff_1.yaml b/core/src/test/resources/operation_diff_1.yaml deleted file mode 100644 index 0618b58e6..000000000 --- a/core/src/test/resources/operation_diff_1.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -openapi: "3.0.1" -info: - title: "Test title" - description: "This is a test metadata" - termsOfService: "http://test.com" - contact: - name: "Mark Snijder" - url: "marksnijder.nl" - email: "snijderd@gmail.com" - license: - name: "To be decided" - url: "http://test.com" - version: "version 1.0" -paths: - /pets/{id}: - get: - description: Returns a user based on a single ID, if the user does not have access to the pet - operationId: operation - responses: - '200': - description: response - content: - application/json: {} diff --git a/core/src/test/resources/operation_diff_2.yaml b/core/src/test/resources/operation_diff_2.yaml deleted file mode 100644 index 8d60a2dc1..000000000 --- a/core/src/test/resources/operation_diff_2.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -openapi: "3.0.1" -info: - title: "Test title" - description: "This is a test metadata" - termsOfService: "http://test.com" - contact: - name: "Mark Snijder" - url: "marksnijder.nl" - email: "snijderd@gmail.com" - license: - name: "To be decided" - url: "http://test.com" - version: "version 1.0" -paths: - /pets/{id}: - get: - description: Returns a user based on a single ID, if the user does not have access to the pet - operationId: changed - responses: - '200': - description: response - content: - application/json: {} diff --git a/core/src/test/resources/issue-458-integer-limits_1.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_1.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_1.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_1.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_10.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_10.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_10.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_10.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_11.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_11.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_11.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_11.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_12.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_12.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_12.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_12.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_13.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_13.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_13.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_13.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_14.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_14.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_14.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_14.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_15.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_15.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_15.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_15.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_2.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_2.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_2.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_2.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_3.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_3.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_3.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_3.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_4.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_4.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_4.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_4.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_5.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_5.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_5.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_5.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_6.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_6.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_6.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_6.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_7.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_7.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_7.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_7.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_8.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_8.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_8.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_8.yaml diff --git a/core/src/test/resources/issue-458-integer-limits_9.yaml b/core/src/test/resources/parameterDiff/issue-458-integer-limits_9.yaml similarity index 100% rename from core/src/test/resources/issue-458-integer-limits_9.yaml rename to core/src/test/resources/parameterDiff/issue-458-integer-limits_9.yaml diff --git a/core/src/test/resources/issue-488-1.json b/core/src/test/resources/parameterDiff/issue-488-1.json similarity index 100% rename from core/src/test/resources/issue-488-1.json rename to core/src/test/resources/parameterDiff/issue-488-1.json diff --git a/core/src/test/resources/issue-488-2.json b/core/src/test/resources/parameterDiff/issue-488-2.json similarity index 100% rename from core/src/test/resources/issue-488-2.json rename to core/src/test/resources/parameterDiff/issue-488-2.json diff --git a/core/src/test/resources/parameterDiff/parameter_diff_1.yaml b/core/src/test/resources/parameterDiff/parameter_diff_1.yaml new file mode 100644 index 000000000..c17217338 --- /dev/null +++ b/core/src/test/resources/parameterDiff/parameter_diff_1.yaml @@ -0,0 +1,102 @@ +openapi: "3.1.0" +info: + title: "Parameters diff test" + description: "TParameters diff test" + version: "1.0" +paths: + /parameter/added: + get: + responses: + '200': + description: response + content: + application/json: { } + /parameter/removed: + get: + parameters: + - in: query + name: param + schema: + type: string + responses: + '200': + description: response + content: + application/json: { } + /parameter/becomes-deprecated: + get: + parameters: + - in: header + name: X-Header + schema: + type: string + responses: + '200': + description: response + content: + application/json: { } + /parameter/becomes-not-deprecated: + get: + parameters: + - in: header + name: X-Header + deprecated: true + schema: + type: string + responses: + '200': + description: response + content: + application/json: { } + /parameter/required: + get: + parameters: + - in: query + name: param + required: true + schema: + type: string + responses: + '200': + description: response + content: + application/json: { } + /parameter/description: + get: + parameters: + - in: query + name: param + description: description + schema: + type: string + responses: + '200': + description: response + content: + application/json: { } + /parameter/explode: + get: + parameters: + - in: query + name: param + schema: + type: string + explode: true + responses: + '200': + description: response + content: + application/json: { } + /parameter/style: + get: + parameters: + - in: query + name: param + schema: + type: string + style: simple + responses: + '200': + description: response + content: + application/json: { } \ No newline at end of file diff --git a/core/src/test/resources/parameterDiff/parameter_diff_2.yaml b/core/src/test/resources/parameterDiff/parameter_diff_2.yaml new file mode 100644 index 000000000..0c30b6b1d --- /dev/null +++ b/core/src/test/resources/parameterDiff/parameter_diff_2.yaml @@ -0,0 +1,102 @@ +openapi: "3.1.0" +info: + title: "Parameters diff test" + description: "TParameters diff test" + version: "1.0" +paths: + /parameter/added: + get: + parameters: + - in: query + name: param + schema: + type: string + responses: + '200': + description: response + content: + application/json: {} + /parameter/removed: + get: + responses: + '200': + description: response + content: + application/json: { } + /parameter/becomes-deprecated: + get: + parameters: + - in: header + name: X-Header + deprecated: true + schema: + type: string + responses: + '200': + description: response + content: + application/json: { } + /parameter/becomes-not-deprecated: + get: + parameters: + - in: header + name: X-Header + schema: + type: string + responses: + '200': + description: response + content: + application/json: { } + /parameter/required: + get: + parameters: + - in: query + name: param + required: false + schema: + type: string + responses: + '200': + description: response + content: + application/json: { } + /parameter/description: + get: + parameters: + - in: query + name: param + description: changed + schema: + type: string + responses: + '200': + description: response + content: + application/json: { } + /parameter/explode: + get: + parameters: + - in: query + name: param + schema: + type: string + explode: false + responses: + '200': + description: response + content: + application/json: { } + /parameter/style: + get: + parameters: + - in: query + name: param + schema: + type: string + style: matrix + responses: + '200': + description: response + content: + application/json: { } \ No newline at end of file diff --git a/core/src/test/resources/parameters_overloading.yaml b/core/src/test/resources/parameterDiff/parameters_overloading.yaml similarity index 100% rename from core/src/test/resources/parameters_overloading.yaml rename to core/src/test/resources/parameterDiff/parameters_overloading.yaml diff --git a/core/src/test/resources/parameters_overloading_2.yaml b/core/src/test/resources/parameterDiff/parameters_overloading_2.yaml similarity index 100% rename from core/src/test/resources/parameters_overloading_2.yaml rename to core/src/test/resources/parameterDiff/parameters_overloading_2.yaml diff --git a/core/src/test/resources/path_parameter_diff_param_name_diff_new.yaml b/core/src/test/resources/parameterDiff/path_parameter_diff_param_name_diff_new.yaml similarity index 100% rename from core/src/test/resources/path_parameter_diff_param_name_diff_new.yaml rename to core/src/test/resources/parameterDiff/path_parameter_diff_param_name_diff_new.yaml diff --git a/core/src/test/resources/path_parameter_diff_param_name_diff_old.yaml b/core/src/test/resources/parameterDiff/path_parameter_diff_param_name_diff_old.yaml similarity index 100% rename from core/src/test/resources/path_parameter_diff_param_name_diff_old.yaml rename to core/src/test/resources/parameterDiff/path_parameter_diff_param_name_diff_old.yaml diff --git a/core/src/test/resources/path_parameter_diff_param_schema_diff_new.yaml b/core/src/test/resources/parameterDiff/path_parameter_diff_param_schema_diff_new.yaml similarity index 100% rename from core/src/test/resources/path_parameter_diff_param_schema_diff_new.yaml rename to core/src/test/resources/parameterDiff/path_parameter_diff_param_schema_diff_new.yaml diff --git a/core/src/test/resources/path_parameter_diff_param_schema_diff_old.yaml b/core/src/test/resources/parameterDiff/path_parameter_diff_param_schema_diff_old.yaml similarity index 100% rename from core/src/test/resources/path_parameter_diff_param_schema_diff_old.yaml rename to core/src/test/resources/parameterDiff/path_parameter_diff_param_schema_diff_old.yaml diff --git a/core/src/test/resources/parameters_diff.yaml b/core/src/test/resources/parameters_diff.yaml deleted file mode 100644 index 97cc8e9b9..000000000 --- a/core/src/test/resources/parameters_diff.yaml +++ /dev/null @@ -1,185 +0,0 @@ -openapi: 3.0.0 -servers: - - url: 'http://petstore.swagger.io/v2' -info: - description: >- - This is a sample server Petstore server. You can find out more about - Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, - #swagger](http://swagger.io/irc/). For this sample, you can use the api key - `special-key` to test the authorization filters. - version: 1.0.0 - title: Swagger Petstore - termsOfService: 'http://swagger.io/terms/' - contact: - email: apiteam@swagger.io - license: - name: Apache 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0.html' -tags: - - name: pet - description: Everything about your Pets - externalDocs: - description: Find out more - url: 'http://swagger.io' - - name: store - description: Access to Petstore orders - - name: user - description: Operations about user - externalDocs: - description: Find out more about our store - url: 'http://swagger.io' -paths: - '/pet/{petId}': - parameters: - - name: newHeaderParam - in: header - required: false - schema: - type: integer - delete: - tags: - - pet - summary: Deletes a pet - description: '' - operationId: deletePet - parameters: - - name: api_key - in: header - required: false - schema: - type: string - - name: newHeaderParam - in: header - required: false - schema: - type: string - - name: petId - in: path - description: Pet id to delete - required: true - schema: - type: integer - format: int64 - responses: - '400': - description: Invalid ID supplied - '404': - description: Pet not found - /pet: - post: - tags: - - pet - summary: Add a new pet to the store - description: '' - operationId: addPet - responses: - '405': - description: Invalid input - requestBody: - $ref: '#/components/requestBodies/Pet' - /pet/findByStatus2: - get: - tags: - - pet - summary: Finds Pets by status - description: Multiple status values can be provided with comma separated strings - operationId: findPetsByStatus - parameters: - - name: status - in: query - deprecated: true - description: Status values that need to be considered for filter - required: true - explode: true - schema: - type: array - items: - type: string - enum: - - available - - pending - - sold - default: available - responses: - '200': - description: successful operation - content: - application/xml: - schema: - type: array - items: - $ref: '#/components/schemas/Pet' - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Pet' - '400': - description: Invalid status value -externalDocs: - description: Find out more about Swagger - url: 'http://swagger.io' -components: - requestBodies: - Pet: - content: - application/json: - schema: - $ref: '#/components/schemas/Pet' - application/xml: - schema: - $ref: '#/components/schemas/Pet' - description: Pet object that needs to be added to the store - required: true - schemas: - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - xml: - name: Tag - Pet: - type: object - required: - - name - - photoUrls - properties: - id: - type: integer - format: int64 - category: - type: string - name: - type: string - example: doggie - newField: - type: string - example: a field demo - description: a field demo - photoUrls: - type: array - xml: - name: photoUrl - wrapped: true - items: - type: string - tags: - type: array - xml: - name: tag - wrapped: true - items: - $ref: '#/components/schemas/Tag' - status: - type: string - description: pet status in the store - enum: - - available - - pending - - sold - xml: - name: Pet \ No newline at end of file diff --git a/core/src/test/resources/parameters_diff_1.yaml b/core/src/test/resources/parameters_diff_1.yaml deleted file mode 100644 index 97cc8e9b9..000000000 --- a/core/src/test/resources/parameters_diff_1.yaml +++ /dev/null @@ -1,185 +0,0 @@ -openapi: 3.0.0 -servers: - - url: 'http://petstore.swagger.io/v2' -info: - description: >- - This is a sample server Petstore server. You can find out more about - Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, - #swagger](http://swagger.io/irc/). For this sample, you can use the api key - `special-key` to test the authorization filters. - version: 1.0.0 - title: Swagger Petstore - termsOfService: 'http://swagger.io/terms/' - contact: - email: apiteam@swagger.io - license: - name: Apache 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0.html' -tags: - - name: pet - description: Everything about your Pets - externalDocs: - description: Find out more - url: 'http://swagger.io' - - name: store - description: Access to Petstore orders - - name: user - description: Operations about user - externalDocs: - description: Find out more about our store - url: 'http://swagger.io' -paths: - '/pet/{petId}': - parameters: - - name: newHeaderParam - in: header - required: false - schema: - type: integer - delete: - tags: - - pet - summary: Deletes a pet - description: '' - operationId: deletePet - parameters: - - name: api_key - in: header - required: false - schema: - type: string - - name: newHeaderParam - in: header - required: false - schema: - type: string - - name: petId - in: path - description: Pet id to delete - required: true - schema: - type: integer - format: int64 - responses: - '400': - description: Invalid ID supplied - '404': - description: Pet not found - /pet: - post: - tags: - - pet - summary: Add a new pet to the store - description: '' - operationId: addPet - responses: - '405': - description: Invalid input - requestBody: - $ref: '#/components/requestBodies/Pet' - /pet/findByStatus2: - get: - tags: - - pet - summary: Finds Pets by status - description: Multiple status values can be provided with comma separated strings - operationId: findPetsByStatus - parameters: - - name: status - in: query - deprecated: true - description: Status values that need to be considered for filter - required: true - explode: true - schema: - type: array - items: - type: string - enum: - - available - - pending - - sold - default: available - responses: - '200': - description: successful operation - content: - application/xml: - schema: - type: array - items: - $ref: '#/components/schemas/Pet' - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Pet' - '400': - description: Invalid status value -externalDocs: - description: Find out more about Swagger - url: 'http://swagger.io' -components: - requestBodies: - Pet: - content: - application/json: - schema: - $ref: '#/components/schemas/Pet' - application/xml: - schema: - $ref: '#/components/schemas/Pet' - description: Pet object that needs to be added to the store - required: true - schemas: - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - xml: - name: Tag - Pet: - type: object - required: - - name - - photoUrls - properties: - id: - type: integer - format: int64 - category: - type: string - name: - type: string - example: doggie - newField: - type: string - example: a field demo - description: a field demo - photoUrls: - type: array - xml: - name: photoUrl - wrapped: true - items: - type: string - tags: - type: array - xml: - name: tag - wrapped: true - items: - $ref: '#/components/schemas/Tag' - status: - type: string - description: pet status in the store - enum: - - available - - pending - - sold - xml: - name: Pet \ No newline at end of file diff --git a/core/src/test/resources/parameters_diff_2.yaml b/core/src/test/resources/parameters_diff_2.yaml deleted file mode 100644 index a4e38e85d..000000000 --- a/core/src/test/resources/parameters_diff_2.yaml +++ /dev/null @@ -1,183 +0,0 @@ -openapi: 3.0.0 -servers: - - url: 'http://petstore.swagger.io/v2' -info: - description: >- - This is a sample server Petstore server. You can find out more about - Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, - #swagger](http://swagger.io/irc/). For this sample, you can use the api key - `special-key` to test the authorization filters. - version: 2.0.0 - title: Swagger Petstore - termsOfService: 'http://swagger.io/terms/' - contact: - email: apiteam@swagger.io - license: - name: Apache 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0.html' -tags: - - name: pet - description: Everything about your Pets - externalDocs: - description: Find out more - url: 'http://swagger.io' - - name: store - description: Access to Petstore orders - - name: user - description: Operations about user - externalDocs: - description: Find out more about our store - url: 'http://swagger.io' -paths: - '/pet/{petId}': - delete: - tags: - - pet - summary: Deletes a pet - description: '' - operationId: deletePet - parameters: - - name: api_key - in: header - required: false - schema: - type: string - - name: petId - in: path - description: Pet id to delete - required: true - schema: - type: integer - format: int64 - responses: - '400': - description: Invalid ID supplied - '404': - description: Pet not found - /pet: - post: - tags: - - pet - summary: Add a new pet to the store - description: '' - operationId: addPet - parameters: - - name: tags - in: query - description: add new query param demo - required: true - explode: true - schema: - type: array - items: - type: string - responses: - '405': - description: Invalid input - requestBody: - $ref: '#/components/requestBodies/Pet' - /pet/findByStatus2: - get: - tags: - - pet - summary: Finds Pets by status - description: Multiple status values can be provided with comma separated strings - operationId: findPetsByStatus - parameters: - - name: status - in: query - description: Status values that need to be considered for filter - required: true - explode: true - schema: - type: array - items: - type: string - enum: - - available - - pending - - sold - default: available - responses: - '200': - description: successful operation - content: - application/xml: - schema: - type: array - items: - $ref: '#/components/schemas/Pet' - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Pet' - '400': - description: Invalid status value -externalDocs: - description: Find out more about Swagger - url: 'http://swagger.io' -components: - requestBodies: - Pet: - content: - application/json: - schema: - $ref: '#/components/schemas/Pet' - application/xml: - schema: - $ref: '#/components/schemas/Pet' - description: Pet object that needs to be added to the store - required: true - schemas: - Tag: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - xml: - name: Tag - Pet: - type: object - required: - - name - - photoUrls - properties: - id: - type: integer - format: int64 - category: - type: string - name: - type: string - example: doggie - newField: - type: string - example: a field demo - description: a field demo - photoUrls: - type: array - xml: - name: photoUrl - wrapped: true - items: - type: string - tags: - type: array - xml: - name: tag - wrapped: true - items: - $ref: '#/components/schemas/Tag' - status: - type: string - description: pet status in the store - enum: - - available - - pending - - sold - xml: - name: Pet \ No newline at end of file diff --git a/core/src/test/resources/responseHeaderDiff/response_header_1.yaml b/core/src/test/resources/responseHeaderDiff/response_header_1.yaml new file mode 100644 index 000000000..d668deb9a --- /dev/null +++ b/core/src/test/resources/responseHeaderDiff/response_header_1.yaml @@ -0,0 +1,64 @@ +openapi: 3.1.0 +info: + description: Response headers handling + title: response headers + version: 1.0.0 +paths: + /response/headers/deprecated: + get: + responses: + '200': + description: some description + headers: + x-header-becomes-deprecated: + schema: + type: string + x-header-becomes-not-deprecated: + deprecated: true + schema: + type: string + content: + application/json: { } + /response/headers/description: + get: + responses: + '200': + description: some description + headers: + x-header-description-changed: + description: old description + schema: + type: string + x-header-description-added: + schema: + type: string + x-header-description-removed: + description: old description + schema: + type: string + content: + application/json: { } + /response/headers/required: + get: + responses: + '200': + description: some description + headers: + x-header-required-changed: + required: true + schema: + type: string + content: + application/json: { } + /response/headers/explode: + get: + responses: + '200': + description: some description + headers: + x-header-explode-changed: + explode: false + schema: + type: string + content: + application/json: { } \ No newline at end of file diff --git a/core/src/test/resources/responseHeaderDiff/response_header_2.yaml b/core/src/test/resources/responseHeaderDiff/response_header_2.yaml new file mode 100644 index 000000000..fc2175233 --- /dev/null +++ b/core/src/test/resources/responseHeaderDiff/response_header_2.yaml @@ -0,0 +1,64 @@ +openapi: 3.1.0 +info: + description: Response headers handling + title: response headers + version: 1.0.0 +paths: + /response/headers/deprecated: + get: + responses: + '200': + description: some description + headers: + x-header-becomes-deprecated: + deprecated: true + schema: + type: string + x-header-becomes-not-deprecated: + schema: + type: string + content: + application/json: {} + /response/headers/description: + get: + responses: + '200': + description: some description + headers: + x-header-description-changed: + description: new description + schema: + type: string + x-header-description-added: + description: added description + schema: + type: string + x-header-description-removed: + schema: + type: string + content: + application/json: { } + /response/headers/required: + get: + responses: + '200': + description: some description + headers: + x-header-required-changed: + required: false + schema: + type: string + content: + application/json: { } + /response/headers/explode: + get: + responses: + '200': + description: some description + headers: + x-header-explode-changed: + explode: true + schema: + type: string + content: + application/json: { } \ No newline at end of file diff --git a/core/src/test/resources/add-prop-1.yaml b/core/src/test/resources/schemaDiff/schema-add-property-1.yaml similarity index 100% rename from core/src/test/resources/add-prop-1.yaml rename to core/src/test/resources/schemaDiff/schema-add-property-1.yaml diff --git a/core/src/test/resources/add-prop-2.yaml b/core/src/test/resources/schemaDiff/schema-add-property-2.yaml similarity index 100% rename from core/src/test/resources/add-prop-2.yaml rename to core/src/test/resources/schemaDiff/schema-add-property-2.yaml diff --git a/core/src/test/resources/add-prop-put-1.yaml b/core/src/test/resources/schemaDiff/schema-add-property-put-1.yaml similarity index 100% rename from core/src/test/resources/add-prop-put-1.yaml rename to core/src/test/resources/schemaDiff/schema-add-property-put-1.yaml diff --git a/core/src/test/resources/add-prop-put-2.yaml b/core/src/test/resources/schemaDiff/schema-add-property-put-2.yaml similarity index 100% rename from core/src/test/resources/add-prop-put-2.yaml rename to core/src/test/resources/schemaDiff/schema-add-property-put-2.yaml diff --git a/core/src/test/resources/issue-256_1.json b/core/src/test/resources/schemaDiff/schema-additional-properties-1.json similarity index 100% rename from core/src/test/resources/issue-256_1.json rename to core/src/test/resources/schemaDiff/schema-additional-properties-1.json diff --git a/core/src/test/resources/issue-256_2.json b/core/src/test/resources/schemaDiff/schema-additional-properties-2.json similarity index 100% rename from core/src/test/resources/issue-256_2.json rename to core/src/test/resources/schemaDiff/schema-additional-properties-2.json diff --git a/core/src/test/resources/schemaDiff/schema-deprecated-handling-1.yaml b/core/src/test/resources/schemaDiff/schema-deprecated-handling-1.yaml new file mode 100644 index 000000000..48dcd021e --- /dev/null +++ b/core/src/test/resources/schemaDiff/schema-deprecated-handling-1.yaml @@ -0,0 +1,33 @@ +openapi: 3.1.0 +info: + description: Schema deprecated handling + title: defaults + version: 1.0.0 +paths: + /schema-diff/deprecated/added: + post: + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeprecatedAdded" + /schema-diff/deprecated/removed: + post: + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeprecatedRemoved" +components: + schemas: + DeprecatedAdded: + type: object + properties: + field1: + type: string + DeprecatedRemoved: + type: object + deprecated: true + properties: + field1: + type: string \ No newline at end of file diff --git a/core/src/test/resources/schemaDiff/schema-deprecated-handling-2.yaml b/core/src/test/resources/schemaDiff/schema-deprecated-handling-2.yaml new file mode 100644 index 000000000..00432216c --- /dev/null +++ b/core/src/test/resources/schemaDiff/schema-deprecated-handling-2.yaml @@ -0,0 +1,33 @@ +openapi: 3.1.0 +info: + description: Schema deprecated handling + title: defaults + version: 1.0.0 +paths: + /schema-diff/deprecated/added: + post: + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeprecatedAdded" + /schema-diff/deprecated/removed: + post: + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeprecatedRemoved" +components: + schemas: + DeprecatedAdded: + deprecated: true + type: object + properties: + field1: + type: string + DeprecatedRemoved: + type: object + properties: + field1: + type: string \ No newline at end of file diff --git a/core/src/test/resources/issue-717-schema-defaults-handling-1.yaml b/core/src/test/resources/schemaDiff/schema-props-defaults-handling-1.yaml similarity index 100% rename from core/src/test/resources/issue-717-schema-defaults-handling-1.yaml rename to core/src/test/resources/schemaDiff/schema-props-defaults-handling-1.yaml diff --git a/core/src/test/resources/issue-717-schema-defaults-handling-2.yaml b/core/src/test/resources/schemaDiff/schema-props-defaults-handling-2.yaml similarity index 100% rename from core/src/test/resources/issue-717-schema-defaults-handling-2.yaml rename to core/src/test/resources/schemaDiff/schema-props-defaults-handling-2.yaml