diff --git a/.circleci/config.yml b/.circleci/config.yml
index e683fd70d..e58107c83 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -5,7 +5,7 @@ jobs:
working_directory: ~/openapi-diff
docker:
- - image: circleci/openjdk:8-jdk-browsers
+ - image: circleci/openjdk:8-jdk-node-browsers
steps:
@@ -21,7 +21,7 @@ jobs:
- ~/.m2
key: openapi-diff-{{ checksum "pom.xml" }}
- - run: mvn package
+ - run: mvn package -X
- store_test_results:
path: target/surefire-reports
diff --git a/pom.xml b/pom.xml
index f369cfd05..658d3d8a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,13 +53,17 @@
UTF-8
github
+ 2.19.1
+ 5.1.0
+ 1.1.0
+ 3.10.0
io.swagger.parser.v3
swagger-parser-v3
- 2.0.4
+ 2.0.5
com.j2html
@@ -67,9 +71,33 @@
1.2.0
- junit
- junit
- 4.8.2
+ org.junit.jupiter
+ junit-jupiter-engine
+ ${junit.jupiter.version}
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ ${junit.jupiter.version}
+ test
+
+
+ org.junit.platform
+ junit-platform-runner
+ ${junit.platform.version}
+ test
+
+
+ org.junit.platform
+ junit-platform-launcher
+ ${junit.platform.version}
+ test
+
+
+ org.assertj
+ assertj-core
+ ${assertj-core.version}
test
@@ -221,6 +249,32 @@
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ **/Test*.java
+ **/*Test.java
+ **/*Tests.java
+ **/*TestCase.java
+
+ false
+
+
+
+ org.junit.platform
+ junit-platform-surefire-provider
+ ${junit.platform.version}
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ ${junit.jupiter.version}
+
+
+
com.coveo
fmt-maven-plugin
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/ApiResponseDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/ApiResponseDiff.java
index 7bfe55d51..03b0216ae 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/ApiResponseDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/ApiResponseDiff.java
@@ -23,9 +23,6 @@ public ApiResponseDiff(OpenApiDiff openApiDiff) {
public Optional diff(
ApiResponses left, ApiResponses right, DiffContext context) {
MapKeyDiff responseMapKeyDiff = MapKeyDiff.diff(left, right);
- ChangedApiResponse changedApiResponse = new ChangedApiResponse(left, right, context);
- changedApiResponse.setAddResponses(responseMapKeyDiff.getIncreased());
- changedApiResponse.setMissingResponses(responseMapKeyDiff.getMissing());
List sharedResponseCodes = responseMapKeyDiff.getSharedKey();
Map resps = new LinkedHashMap<>();
for (String responseCode : sharedResponseCodes) {
@@ -34,11 +31,15 @@ public Optional diff(
.diff(left.get(responseCode), right.get(responseCode), context)
.ifPresent(changedResponse -> resps.put(responseCode, changedResponse));
}
- changedApiResponse.setChangedResponses(resps);
+ ChangedApiResponse changedApiResponse =
+ new ChangedApiResponse(left, right, context)
+ .setIncreased(responseMapKeyDiff.getIncreased())
+ .setMissing(responseMapKeyDiff.getMissing())
+ .setChanged(resps);
openApiDiff
.getExtensionsDiff()
.diff(left.getExtensions(), right.getExtensions(), context)
- .ifPresent(changedApiResponse::setChangedExtensions);
+ .ifPresent(changedApiResponse::setExtensions);
return isChanged(changedApiResponse);
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/ContentDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/ContentDiff.java
index f45eefbe2..67eeda204 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/ContentDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/ContentDiff.java
@@ -24,11 +24,8 @@ public boolean compare(Content left, Content right) {
}
public Optional diff(Content left, Content right, DiffContext context) {
- ChangedContent changedContent = new ChangedContent(left, right, context);
MapKeyDiff mediaTypeDiff = MapKeyDiff.diff(left, right);
- changedContent.setIncreased(mediaTypeDiff.getIncreased());
- changedContent.setMissing(mediaTypeDiff.getMissing());
List sharedMediaTypes = mediaTypeDiff.getSharedKey();
Map changedMediaTypes = new LinkedHashMap<>();
for (String mediaTypeKey : sharedMediaTypes) {
@@ -43,12 +40,15 @@ public Optional diff(Content left, Content right, DiffContext co
oldMediaType.getSchema(),
newMediaType.getSchema(),
context.copyWithRequired(true))
- .ifPresent(changedMediaType::setChangedSchema);
+ .ifPresent(changedMediaType::setSchema);
if (!isUnchanged(changedMediaType)) {
changedMediaTypes.put(mediaTypeKey, changedMediaType);
}
}
- changedContent.setChanged(changedMediaTypes);
- return isChanged(changedContent);
+ return isChanged(
+ new ChangedContent(left, right, context)
+ .setIncreased(mediaTypeDiff.getIncreased())
+ .setMissing(mediaTypeDiff.getMissing())
+ .setChanged(changedMediaTypes));
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/HeaderDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/HeaderDiff.java
index 2804695ef..fc37f8f38 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/HeaderDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/HeaderDiff.java
@@ -14,10 +14,10 @@
/** Created by adarsh.sharma on 28/12/17. */
public class HeaderDiff extends ReferenceDiffCache {
+ private static RefPointer refPointer = new RefPointer<>(RefType.HEADERS);
private OpenApiDiff openApiDiff;
private Components leftComponents;
private Components rightComponents;
- private static RefPointer refPointer = new RefPointer<>(RefType.HEADERS);
public HeaderDiff(OpenApiDiff openApiDiff) {
this.openApiDiff = openApiDiff;
@@ -41,27 +41,30 @@ protected Optional computeDiff(
left = refPointer.resolveRef(leftComponents, left, left.get$ref());
right = refPointer.resolveRef(rightComponents, right, right.get$ref());
- ChangedHeader changedHeader = new ChangedHeader(left, right, context);
-
- changedHeader.setChangeDescription(
- !Objects.equals(left.getDescription(), right.getDescription()));
- changedHeader.setChangeRequired(getBooleanDiff(left.getRequired(), right.getRequired()));
- changedHeader.setChangeDeprecated(
- !Boolean.TRUE.equals(left.getDeprecated()) && Boolean.TRUE.equals(right.getDeprecated()));
- changedHeader.setChangeStyle(!Objects.equals(left.getStyle(), right.getStyle()));
- changedHeader.setChangeExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
+ ChangedHeader changedHeader =
+ new ChangedHeader(left, right, context)
+ .setRequired(getBooleanDiff(left.getRequired(), right.getRequired()))
+ .setDeprecated(
+ !Boolean.TRUE.equals(left.getDeprecated())
+ && Boolean.TRUE.equals(right.getDeprecated()))
+ .setStyle(!Objects.equals(left.getStyle(), right.getStyle()))
+ .setExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
+ openApiDiff
+ .getMetadataDiff()
+ .diff(left.getDescription(), right.getDescription(), context)
+ .ifPresent(changedHeader::setDescription);
openApiDiff
.getSchemaDiff()
.diff(new HashSet<>(), left.getSchema(), right.getSchema(), context.copyWithRequired(true))
- .ifPresent(changedHeader::setChangedSchema);
+ .ifPresent(changedHeader::setSchema);
openApiDiff
.getContentDiff()
.diff(left.getContent(), right.getContent(), context)
- .ifPresent(changedHeader::setChangedContent);
+ .ifPresent(changedHeader::setContent);
openApiDiff
.getExtensionsDiff()
.diff(left.getExtensions(), right.getExtensions(), context)
- .ifPresent(changedHeader::setChangedExtensions);
+ .ifPresent(changedHeader::setExtensions);
return isChanged(changedHeader);
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/HeadersDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/HeadersDiff.java
index 587bff116..6bc6ede80 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/HeadersDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/HeadersDiff.java
@@ -21,10 +21,7 @@ public HeadersDiff(OpenApiDiff openApiDiff) {
public Optional diff(
Map left, Map right, DiffContext context) {
- ChangedHeaders changedHeaders = new ChangedHeaders(left, right, context);
MapKeyDiff headerMapDiff = MapKeyDiff.diff(left, right);
- changedHeaders.setIncreased(headerMapDiff.getIncreased());
- changedHeaders.setMissing(headerMapDiff.getMissing());
List sharedHeaderKeys = headerMapDiff.getSharedKey();
Map changed = new LinkedHashMap<>();
@@ -36,8 +33,10 @@ public Optional diff(
.diff(oldHeader, newHeader, context)
.ifPresent(changedHeader -> changed.put(headerKey, changedHeader));
}
- changedHeaders.setChanged(changed);
-
- return isChanged(changedHeaders);
+ return isChanged(
+ new ChangedHeaders(left, right, context)
+ .setIncreased(headerMapDiff.getIncreased())
+ .setMissing(headerMapDiff.getMissing())
+ .setChanged(changed));
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/MetadataDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/MetadataDiff.java
new file mode 100644
index 000000000..d8d418135
--- /dev/null
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/MetadataDiff.java
@@ -0,0 +1,31 @@
+package com.qdesrame.openapi.diff.compare;
+
+import static com.qdesrame.openapi.diff.utils.ChangedUtils.isChanged;
+
+import com.qdesrame.openapi.diff.model.ChangedMetadata;
+import com.qdesrame.openapi.diff.model.DiffContext;
+import io.swagger.v3.oas.models.Components;
+import java.util.Optional;
+
+public class MetadataDiff {
+
+ private Components leftComponents;
+ private Components rightComponents;
+ private OpenApiDiff openApiDiff;
+
+ public MetadataDiff(OpenApiDiff openApiDiff) {
+ this.openApiDiff = openApiDiff;
+ this.leftComponents =
+ openApiDiff.getOldSpecOpenApi() != null
+ ? openApiDiff.getOldSpecOpenApi().getComponents()
+ : null;
+ this.rightComponents =
+ openApiDiff.getNewSpecOpenApi() != null
+ ? openApiDiff.getNewSpecOpenApi().getComponents()
+ : null;
+ }
+
+ public Optional diff(String left, String right, DiffContext context) {
+ return isChanged(new ChangedMetadata().setLeft(left).setRight(right));
+ }
+}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowDiff.java
index da60d2971..d3d5b8f71 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowDiff.java
@@ -24,16 +24,16 @@ private static Map getExtensions(OAuthFlow oAuthFlow) {
public Optional diff(OAuthFlow left, OAuthFlow right) {
ChangedOAuthFlow changedOAuthFlow = new ChangedOAuthFlow(left, right);
if (left != null && right != null) {
- changedOAuthFlow.setChangedAuthorizationUrl(
- !Objects.equals(left.getAuthorizationUrl(), right.getAuthorizationUrl()));
- changedOAuthFlow.setChangedTokenUrl(!Objects.equals(left.getTokenUrl(), right.getTokenUrl()));
- changedOAuthFlow.setChangedRefreshUrl(
- !Objects.equals(left.getRefreshUrl(), right.getRefreshUrl()));
+ changedOAuthFlow
+ .setAuthorizationUrl(
+ !Objects.equals(left.getAuthorizationUrl(), right.getAuthorizationUrl()))
+ .setTokenUrl(!Objects.equals(left.getTokenUrl(), right.getTokenUrl()))
+ .setRefreshUrl(!Objects.equals(left.getRefreshUrl(), right.getRefreshUrl()));
}
openApiDiff
.getExtensionsDiff()
.diff(getExtensions(left), getExtensions(right))
- .ifPresent(changedOAuthFlow::setChangedExtensions);
+ .ifPresent(changedOAuthFlow::setExtensions);
return isChanged(changedOAuthFlow);
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowsDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowsDiff.java
index df7caaee4..ae2f84fc7 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowsDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowsDiff.java
@@ -26,24 +26,24 @@ public Optional diff(OAuthFlows left, OAuthFlows right) {
openApiDiff
.getOAuthFlowDiff()
.diff(left.getImplicit(), right.getImplicit())
- .ifPresent(changedOAuthFlows::setChangedImplicitOAuthFlow);
+ .ifPresent(changedOAuthFlows::setImplicitOAuthFlow);
openApiDiff
.getOAuthFlowDiff()
.diff(left.getPassword(), right.getPassword())
- .ifPresent(changedOAuthFlows::setChangedPasswordOAuthFlow);
+ .ifPresent(changedOAuthFlows::setPasswordOAuthFlow);
openApiDiff
.getOAuthFlowDiff()
.diff(left.getClientCredentials(), right.getClientCredentials())
- .ifPresent(changedOAuthFlows::setChangedClientCredentialOAuthFlow);
+ .ifPresent(changedOAuthFlows::setClientCredentialOAuthFlow);
openApiDiff
.getOAuthFlowDiff()
.diff(left.getAuthorizationCode(), right.getAuthorizationCode())
- .ifPresent(changedOAuthFlows::setChangedAuthorizationCodeOAuthFlow);
+ .ifPresent(changedOAuthFlows::setAuthorizationCodeOAuthFlow);
}
openApiDiff
.getExtensionsDiff()
.diff(getExtensions(left), getExtensions(right))
- .ifPresent(changedOAuthFlows::setChangedExtensions);
+ .ifPresent(changedOAuthFlows::setExtensions);
return isChanged(changedOAuthFlows);
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/OpenApiDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/OpenApiDiff.java
index 945391fc8..cec341993 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/OpenApiDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/OpenApiDiff.java
@@ -24,7 +24,6 @@ public class OpenApiDiff {
private static Logger logger = LoggerFactory.getLogger(OpenApiDiff.class);
- private ChangedOpenApi changedOpenApi;
private PathsDiff pathsDiff;
private PathDiff pathDiff;
private SchemaDiff schemaDiff;
@@ -43,6 +42,7 @@ public class OpenApiDiff {
private OAuthFlowsDiff oAuthFlowsDiff;
private OAuthFlowDiff oAuthFlowDiff;
private ExtensionsDiff extensionsDiff;
+ private MetadataDiff metadataDiff;
private OpenAPI oldSpecOpenApi;
private OpenAPI newSpecOpenApi;
@@ -56,7 +56,6 @@ public class OpenApiDiff {
* @param newSpecOpenApi
*/
private OpenApiDiff(OpenAPI oldSpecOpenApi, OpenAPI newSpecOpenApi) {
- this.changedOpenApi = new ChangedOpenApi();
this.oldSpecOpenApi = oldSpecOpenApi;
this.newSpecOpenApi = newSpecOpenApi;
if (null == oldSpecOpenApi || null == newSpecOpenApi) {
@@ -88,6 +87,7 @@ private void initializeFields() {
this.oAuthFlowsDiff = new OAuthFlowsDiff(this);
this.oAuthFlowDiff = new OAuthFlowDiff(this);
this.extensionsDiff = new ExtensionsDiff(this);
+ this.metadataDiff = new MetadataDiff(this);
}
private ChangedOpenApi compare() {
@@ -167,12 +167,12 @@ private void preProcess(OpenAPI openApi) {
}
private ChangedOpenApi getChangedOpenApi() {
- changedOpenApi.setMissingEndpoints(missingEndpoints);
- changedOpenApi.setNewEndpoints(newEndpoints);
- changedOpenApi.setNewSpecOpenApi(newSpecOpenApi);
- changedOpenApi.setOldSpecOpenApi(oldSpecOpenApi);
- changedOpenApi.setChangedOperations(changedOperations);
- changedOpenApi.setChangedExtensions(changedExtensions);
- return changedOpenApi;
+ return new ChangedOpenApi()
+ .setMissingEndpoints(missingEndpoints)
+ .setNewEndpoints(newEndpoints)
+ .setNewSpecOpenApi(newSpecOpenApi)
+ .setOldSpecOpenApi(oldSpecOpenApi)
+ .setChangedOperations(changedOperations)
+ .setChangedExtensions(changedExtensions);
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/OperationDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/OperationDiff.java
index a7ac3f199..4c3de2cf8 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/OperationDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/OperationDiff.java
@@ -24,7 +24,14 @@ public Optional diff(
ChangedOperation changedOperation =
new ChangedOperation(context.getUrl(), context.getMethod(), oldOperation, newOperation);
- changedOperation.setSummary(newOperation.getSummary());
+ openApiDiff
+ .getMetadataDiff()
+ .diff(oldOperation.getSummary(), newOperation.getSummary(), context)
+ .ifPresent(changedOperation::setSummary);
+ openApiDiff
+ .getMetadataDiff()
+ .diff(oldOperation.getDescription(), newOperation.getDescription(), context)
+ .ifPresent(changedOperation::setDescription);
changedOperation.setDeprecated(
!Boolean.TRUE.equals(oldOperation.getDeprecated())
&& Boolean.TRUE.equals(newOperation.getDeprecated()));
@@ -34,7 +41,7 @@ public Optional diff(
.getRequestBodyDiff()
.diff(
oldOperation.getRequestBody(), newOperation.getRequestBody(), context.copyAsRequest())
- .ifPresent(changedOperation::setChangedRequestBody);
+ .ifPresent(changedOperation::setRequestBody);
}
openApiDiff
@@ -43,27 +50,27 @@ public Optional diff(
.ifPresent(
params -> {
removePathParameters(context.getParameters(), params);
- changedOperation.setChangedParameters(params);
+ changedOperation.setParameters(params);
});
if (oldOperation.getResponses() != null || newOperation.getResponses() != null) {
openApiDiff
.getApiResponseDiff()
.diff(oldOperation.getResponses(), newOperation.getResponses(), context.copyAsResponse())
- .ifPresent(changedOperation::setChangedApiResponse);
+ .ifPresent(changedOperation::setApiResponses);
}
if (oldOperation.getSecurity() != null || newOperation.getSecurity() != null) {
openApiDiff
.getSecurityRequirementsDiff()
.diff(oldOperation.getSecurity(), newOperation.getSecurity(), context)
- .ifPresent(changedOperation::setChangedSecurityRequirements);
+ .ifPresent(changedOperation::setSecurityRequirements);
}
openApiDiff
.getExtensionsDiff()
.diff(oldOperation.getExtensions(), newOperation.getExtensions(), context)
- .ifPresent(changedOperation::setChangedExtensions);
+ .ifPresent(extensions -> changedOperation.setExtensions(extensions));
return isChanged(changedOperation);
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/ParameterDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/ParameterDiff.java
index 8e3845b60..7a9d9b970 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/ParameterDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/ParameterDiff.java
@@ -3,7 +3,6 @@
import static com.qdesrame.openapi.diff.utils.ChangedUtils.isChanged;
import com.qdesrame.openapi.diff.model.ChangedParameter;
-import com.qdesrame.openapi.diff.model.ChangedSchema;
import com.qdesrame.openapi.diff.model.DiffContext;
import com.qdesrame.openapi.diff.utils.RefPointer;
import com.qdesrame.openapi.diff.utils.RefType;
@@ -15,10 +14,10 @@
public class ParameterDiff extends ReferenceDiffCache {
+ private static RefPointer refPointer = new RefPointer<>(RefType.PARAMETERS);
private Components leftComponents;
private Components rightComponents;
private OpenApiDiff openApiDiff;
- private static RefPointer refPointer = new RefPointer<>(RefType.PARAMETERS);
public ParameterDiff(OpenApiDiff openApiDiff) {
this.openApiDiff = openApiDiff;
@@ -39,38 +38,37 @@ public Optional diff(Parameter left, Parameter right, DiffCont
@Override
protected Optional computeDiff(
HashSet refSet, Parameter left, Parameter right, DiffContext context) {
- ChangedParameter changedParameter =
- new ChangedParameter(right.getName(), right.getIn(), context);
left = refPointer.resolveRef(this.leftComponents, left, left.get$ref());
right = refPointer.resolveRef(this.rightComponents, right, right.get$ref());
- changedParameter.setOldParameter(left);
- changedParameter.setNewParameter(right);
-
- changedParameter.setChangeDescription(
- !Objects.equals(left.getDescription(), right.getDescription()));
- changedParameter.setChangeRequired(getBooleanDiff(left.getRequired(), right.getRequired()));
- changedParameter.setDeprecated(
- !Boolean.TRUE.equals(left.getDeprecated()) && Boolean.TRUE.equals(right.getDeprecated()));
- changedParameter.setChangeAllowEmptyValue(
- getBooleanDiff(left.getAllowEmptyValue(), right.getAllowEmptyValue()));
- changedParameter.setChangeStyle(!Objects.equals(left.getStyle(), right.getStyle()));
- changedParameter.setChangeExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
- Optional changedSchema =
- openApiDiff
- .getSchemaDiff()
- .diff(refSet, left.getSchema(), right.getSchema(), context.copyWithRequired(true));
- if (changedSchema.isPresent()) {
- changedParameter.setChangedSchema(changedSchema.get());
- }
+ ChangedParameter changedParameter =
+ 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()))
+ .setChangeAllowEmptyValue(
+ getBooleanDiff(left.getAllowEmptyValue(), right.getAllowEmptyValue()))
+ .setChangeStyle(!Objects.equals(left.getStyle(), right.getStyle()))
+ .setChangeExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
+ openApiDiff
+ .getSchemaDiff()
+ .diff(refSet, left.getSchema(), right.getSchema(), context.copyWithRequired(true))
+ .ifPresent(changedParameter::setSchema);
+ openApiDiff
+ .getMetadataDiff()
+ .diff(left.getDescription(), right.getDescription(), context)
+ .ifPresent(changedParameter::setDescription);
openApiDiff
.getContentDiff()
.diff(left.getContent(), right.getContent(), context)
- .ifPresent(changedParameter::setChangedContent);
+ .ifPresent(changedParameter::setContent);
openApiDiff
.getExtensionsDiff()
.diff(left.getExtensions(), right.getExtensions(), context)
- .ifPresent(changedParameter::setChangedExtensions);
+ .ifPresent(changedParameter::setExtensions);
return isChanged(changedParameter);
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/PathDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/PathDiff.java
index 31b5c08fe..ef0e0e60a 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/PathDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/PathDiff.java
@@ -18,15 +18,15 @@ public PathDiff(OpenApiDiff openApiDiff) {
}
public Optional diff(PathItem left, PathItem right, DiffContext context) {
- ChangedPath changedPath = new ChangedPath(context.getUrl(), left, right, context);
-
Map oldOperationMap = left.readOperationsMap();
Map newOperationMap = right.readOperationsMap();
MapKeyDiff operationsDiff =
MapKeyDiff.diff(oldOperationMap, newOperationMap);
- changedPath.setIncreased(operationsDiff.getIncreased());
- changedPath.setMissing(operationsDiff.getMissing());
List sharedMethods = operationsDiff.getSharedKey();
+ ChangedPath changedPath =
+ new ChangedPath(context.getUrl(), left, right, context)
+ .setIncreased(operationsDiff.getIncreased())
+ .setMissing(operationsDiff.getMissing());
for (PathItem.HttpMethod method : sharedMethods) {
Operation oldOperation = oldOperationMap.get(method);
Operation newOperation = newOperationMap.get(method);
@@ -38,7 +38,7 @@ public Optional diff(PathItem left, PathItem right, DiffContext con
openApiDiff
.getExtensionsDiff()
.diff(left.getExtensions(), right.getExtensions(), context)
- .ifPresent(changedPath::setChangedExtensions);
+ .ifPresent(changedPath::setExtensions);
return isChanged(changedPath);
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/RequestBodyDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/RequestBodyDiff.java
index 8338885bb..731873947 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/RequestBodyDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/RequestBodyDiff.java
@@ -11,18 +11,21 @@
import io.swagger.v3.oas.models.parameters.RequestBody;
import java.util.HashSet;
import java.util.Map;
-import java.util.Objects;
import java.util.Optional;
/** Created by adarsh.sharma on 28/12/17. */
public class RequestBodyDiff extends ReferenceDiffCache {
- private OpenApiDiff openApiDiff;
private static RefPointer refPointer = new RefPointer<>(RefType.REQUEST_BODIES);
+ private OpenApiDiff openApiDiff;
public RequestBodyDiff(OpenApiDiff openApiDiff) {
this.openApiDiff = openApiDiff;
}
+ private static Map getExtensions(RequestBody body) {
+ return ofNullable(body).map(RequestBody::getExtensions).orElse(null);
+ }
+
public Optional diff(
RequestBody left, RequestBody right, DiffContext context) {
String leftRef = left != null ? left.get$ref() : null,
@@ -30,10 +33,6 @@ public Optional diff(
return cachedDiff(new HashSet<>(), left, right, leftRef, rightRef, context);
}
- private static Map getExtensions(RequestBody body) {
- return ofNullable(body).map(RequestBody::getExtensions).orElse(null);
- }
-
@Override
protected Optional computeDiff(
HashSet refSet, RequestBody left, RequestBody right, DiffContext context) {
@@ -57,27 +56,29 @@ protected Optional computeDiff(
newRequestContent = newRequestBody.getContent();
}
}
- ChangedRequestBody changedRequestBody =
- new ChangedRequestBody(oldRequestBody, newRequestBody, context);
-
boolean leftRequired =
oldRequestBody != null && Boolean.TRUE.equals(oldRequestBody.getRequired());
boolean rightRequired =
newRequestBody != null && Boolean.TRUE.equals(newRequestBody.getRequired());
- changedRequestBody.setChangeRequired(leftRequired != rightRequired);
-
- String leftDescription = oldRequestBody != null ? oldRequestBody.getDescription() : null;
- String rightDescription = newRequestBody != null ? newRequestBody.getDescription() : null;
- changedRequestBody.setChangeDescription(!Objects.equals(leftDescription, rightDescription));
+ ChangedRequestBody changedRequestBody =
+ new ChangedRequestBody(oldRequestBody, newRequestBody, context)
+ .setChangeRequired(leftRequired != rightRequired);
+ openApiDiff
+ .getMetadataDiff()
+ .diff(
+ oldRequestBody != null ? oldRequestBody.getDescription() : null,
+ newRequestBody != null ? newRequestBody.getDescription() : null,
+ context)
+ .ifPresent(changedRequestBody::setDescription);
openApiDiff
.getContentDiff()
.diff(oldRequestContent, newRequestContent, context)
- .ifPresent(changedRequestBody::setChangedContent);
+ .ifPresent(changedRequestBody::setContent);
openApiDiff
.getExtensionsDiff()
.diff(getExtensions(left), getExtensions(right), context)
- .ifPresent(changedRequestBody::setChangedExtensions);
+ .ifPresent(changedRequestBody::setExtensions);
return isChanged(changedRequestBody);
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/ResponseDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/ResponseDiff.java
index 1d009e1b2..a6ded3578 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/ResponseDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/ResponseDiff.java
@@ -9,15 +9,14 @@
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.responses.ApiResponse;
import java.util.HashSet;
-import java.util.Objects;
import java.util.Optional;
/** Created by adarsh.sharma on 28/12/17. */
public class ResponseDiff extends ReferenceDiffCache {
+ private static RefPointer refPointer = new RefPointer<>(RefType.RESPONSES);
private OpenApiDiff openApiDiff;
private Components leftComponents;
private Components rightComponents;
- private static RefPointer refPointer = new RefPointer<>(RefType.RESPONSES);
public ResponseDiff(OpenApiDiff openApiDiff) {
this.openApiDiff = openApiDiff;
@@ -42,21 +41,22 @@ protected Optional computeDiff(
right = refPointer.resolveRef(rightComponents, right, right.get$ref());
ChangedResponse changedResponse = new ChangedResponse(left, right, context);
-
+ openApiDiff
+ .getMetadataDiff()
+ .diff(left.getDescription(), right.getDescription(), context)
+ .ifPresent(changedResponse::setDescription);
openApiDiff
.getContentDiff()
.diff(left.getContent(), right.getContent(), context)
- .ifPresent(changedResponse::setChangedContent);
+ .ifPresent(changedResponse::setContent);
openApiDiff
.getHeadersDiff()
.diff(left.getHeaders(), right.getHeaders(), context)
- .ifPresent(changedResponse::setChangedHeaders);
- changedResponse.setChangeDescription(
- !Objects.equals(left.getDescription(), right.getDescription()));
+ .ifPresent(changedResponse::setHeaders);
openApiDiff
.getExtensionsDiff()
.diff(left.getExtensions(), right.getExtensions(), context)
- .ifPresent(changedResponse::setChangedExtensions);
+ .ifPresent(changedResponse::setExtensions);
return isChanged(changedResponse);
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/SchemaDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/SchemaDiff.java
index f1c983ca9..e50754dd7 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/SchemaDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/SchemaDiff.java
@@ -118,12 +118,13 @@ public Optional diff(
public Optional getTypeChangedSchema(
Schema left, Schema right, DiffContext context) {
- ChangedSchema changedSchema = SchemaDiff.getSchemaDiffResult(openApiDiff).getChangedSchema();
- changedSchema.setOldSchema(left);
- changedSchema.setNewSchema(right);
- changedSchema.setChangedType(true);
- changedSchema.setContext(context);
- return Optional.of(changedSchema);
+ return Optional.of(
+ SchemaDiff.getSchemaDiffResult(openApiDiff)
+ .getChangedSchema()
+ .setOldSchema(left)
+ .setNewSchema(right)
+ .setChangedType(true)
+ .setContext(context));
}
@Override
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/SecurityRequirementDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/SecurityRequirementDiff.java
index f4c466896..6b9e3a806 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/SecurityRequirementDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/SecurityRequirementDiff.java
@@ -28,6 +28,15 @@ public SecurityRequirementDiff(OpenApiDiff openApiDiff) {
: null;
}
+ public static SecurityRequirement getCopy(LinkedHashMap> right) {
+ SecurityRequirement newSecurityRequirement = new SecurityRequirement();
+ right
+ .entrySet()
+ .stream()
+ .forEach(e -> newSecurityRequirement.put(e.getKey(), new ArrayList<>(e.getValue())));
+ return newSecurityRequirement;
+ }
+
private LinkedHashMap> contains(
SecurityRequirement right, String schemeRef) {
SecurityScheme leftSecurityScheme = leftComponents.getSecuritySchemes().get(schemeRef);
@@ -83,20 +92,8 @@ public Optional diff(
diff.ifPresent(changedSecurityRequirement::addChanged);
}
}
- right
- .entrySet()
- .stream()
- .forEach(x -> changedSecurityRequirement.addIncreased(x.getKey(), x.getValue()));
+ right.forEach(changedSecurityRequirement::addIncreased);
return isChanged(changedSecurityRequirement);
}
-
- public static SecurityRequirement getCopy(LinkedHashMap> right) {
- SecurityRequirement newSecurityRequirement = new SecurityRequirement();
- right
- .entrySet()
- .stream()
- .forEach(e -> newSecurityRequirement.put(e.getKey(), new ArrayList<>(e.getValue())));
- return newSecurityRequirement;
- }
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/SecurityRequirementsDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/SecurityRequirementsDiff.java
index b094195f5..0472cea92 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/SecurityRequirementsDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/SecurityRequirementsDiff.java
@@ -111,45 +111,4 @@ protected Optional diff(
private List getCopy(List right) {
return right.stream().map(SecurityRequirementDiff::getCopy).collect(Collectors.toList());
}
-
- // public static void main(String[] args) {
- // List types1 = new
- // ArrayList<>(Arrays.asList(SecurityScheme.Type.APIKEY, SecurityScheme.Type.APIKEY));
- // List types2 = new
- // ArrayList<>(Arrays.asList(SecurityScheme.Type.APIKEY, SecurityScheme.Type.APIKEY));
- // List types3 = new
- // ArrayList<>(Arrays.asList(SecurityScheme.Type.OAUTH2));
- // List types4 = new
- // ArrayList<>(Arrays.asList(SecurityScheme.Type.OAUTH2, SecurityScheme.Type.APIKEY));
- // List types5 = new
- // ArrayList<>(Arrays.asList(SecurityScheme.Type.APIKEY, SecurityScheme.Type.OAUTH2));
- //
- // List> one = new ArrayList<>();
- // one.add(new ImmutablePair<>(SecurityScheme.Type.OAUTH2, null));
- // one.add(new ImmutablePair<>(SecurityScheme.Type.APIKEY, SecurityScheme.In.HEADER));
- //
- // List> two = new ArrayList<>();
- // two.add(new ImmutablePair<>(SecurityScheme.Type.APIKEY, SecurityScheme.In.HEADER));
- // two.add(new ImmutablePair<>(SecurityScheme.Type.OAUTH2, null));
- //
- // System.out.println(CollectionUtils.isEqualCollection(types1, types2));
- // System.out.println(CollectionUtils.isEqualCollection(types1, types3));
- // System.out.println(CollectionUtils.isEqualCollection(types4, types5));
- // System.out.println(CollectionUtils.isEqualCollection(one, two));
- // }
-
- // private List> getSecurityInfo(Components components,
- // List securityRequirements) {
- // List> securityInfoList = new ArrayList<>();
- //
- // for (LinkedHashMap> securityRequirement : securityRequirements) {
- // securityInfoList.add(securityRequirement.entrySet().stream()
- // .map(e -> new SecurityDiffInfo(e.getKey(), refPointer.resolveRef(components,
- // new SecurityScheme(), e.getKey()), e.getValue()))
- // .collect(Collectors.toList()));
- // }
- //
- // return securityInfoList;
- // }
-
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/SecuritySchemeDiff.java b/src/main/java/com/qdesrame/openapi/diff/compare/SecuritySchemeDiff.java
index b55118065..d5aeb3128 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/SecuritySchemeDiff.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/SecuritySchemeDiff.java
@@ -71,8 +71,10 @@ protected Optional computeDiff(
ChangedSecurityScheme changedSecurityScheme =
new ChangedSecurityScheme(leftSecurityScheme, rightSecurityScheme);
- changedSecurityScheme.setChangedDescription(
- !Objects.equals(leftSecurityScheme.getDescription(), rightSecurityScheme.getDescription()));
+ openApiDiff
+ .getMetadataDiff()
+ .diff(leftSecurityScheme.getDescription(), rightSecurityScheme.getDescription(), context)
+ .ifPresent(changedSecurityScheme::setDescription);
switch (leftSecurityScheme.getType()) {
case APIKEY:
@@ -84,7 +86,7 @@ protected Optional computeDiff(
openApiDiff
.getOAuthFlowsDiff()
.diff(leftSecurityScheme.getFlows(), rightSecurityScheme.getFlows())
- .ifPresent(changedSecurityScheme::setChangedOAuthFlows);
+ .ifPresent(changedSecurityScheme::setOAuthFlows);
break;
case HTTP:
@@ -105,21 +107,20 @@ protected Optional computeDiff(
openApiDiff
.getExtensionsDiff()
.diff(leftSecurityScheme.getExtensions(), rightSecurityScheme.getExtensions(), context)
- .ifPresent(changedSecurityScheme::setChangedExtensions);
+ .ifPresent(changedSecurityScheme::setExtensions);
return Optional.of(changedSecurityScheme);
}
private ChangedSecurityScheme getCopyWithoutScopes(ChangedSecurityScheme original) {
- ChangedSecurityScheme changedSecurityScheme =
- new ChangedSecurityScheme(original.getOldSecurityScheme(), original.getNewSecurityScheme());
- changedSecurityScheme.setChangedType(original.isChangedType());
- changedSecurityScheme.setChangedDescription(original.isChangedDescription());
- changedSecurityScheme.setChangedIn(original.isChangedIn());
- changedSecurityScheme.setChangedScheme(original.isChangedScheme());
- changedSecurityScheme.setChangedBearerFormat(original.isChangedBearerFormat());
- changedSecurityScheme.setChangedOAuthFlows(original.getChangedOAuthFlows());
- changedSecurityScheme.setChangedOpenIdConnectUrl(original.isChangedOpenIdConnectUrl());
- return changedSecurityScheme;
+ return new ChangedSecurityScheme(
+ original.getOldSecurityScheme(), original.getNewSecurityScheme())
+ .setChangedType(original.isChangedType())
+ .setChangedIn(original.isChangedIn())
+ .setChangedScheme(original.isChangedScheme())
+ .setChangedBearerFormat(original.isChangedBearerFormat())
+ .setDescription(original.getDescription())
+ .setOAuthFlows(original.getOAuthFlows())
+ .setChangedOpenIdConnectUrl(original.isChangedOpenIdConnectUrl());
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/ArraySchemaDiffResult.java b/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/ArraySchemaDiffResult.java
index 73d880d81..63cbfb54a 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/ArraySchemaDiffResult.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/ArraySchemaDiffResult.java
@@ -16,12 +16,12 @@ public ArraySchemaDiffResult(OpenApiDiff openApiDiff) {
}
@Override
- public Optional diff(
+ public , X> Optional diff(
HashSet refSet,
Components leftComponents,
Components rightComponents,
- Schema left,
- Schema right,
+ T left,
+ T right,
DiffContext context) {
ArraySchema leftArraySchema = (ArraySchema) left;
ArraySchema rightArraySchema = (ArraySchema) right;
@@ -33,7 +33,7 @@ public Optional diff(
leftArraySchema.getItems(),
rightArraySchema.getItems(),
context.copyWithRequired(true))
- .ifPresent(changedSchema::setChangedItems);
+ .ifPresent(changedSchema::setItems);
return isApplicable(context);
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/ComposedSchemaDiffResult.java b/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/ComposedSchemaDiffResult.java
index e879b4681..5121072ca 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/ComposedSchemaDiffResult.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/ComposedSchemaDiffResult.java
@@ -27,12 +27,12 @@ public ComposedSchemaDiffResult(OpenApiDiff openApiDiff) {
}
@Override
- public Optional diff(
+ public , X> Optional diff(
HashSet refSet,
Components leftComponents,
Components rightComponents,
- Schema left,
- Schema right,
+ T left,
+ T right,
DiffContext context) {
if (left instanceof ComposedSchema) {
ComposedSchema leftComposedSchema = (ComposedSchema) left;
@@ -61,17 +61,10 @@ public Optional diff(
Map leftMapping = getMapping(leftComposedSchema);
Map rightMapping = getMapping(rightComposedSchema);
- ChangedOneOfSchema changedOneOfSchema =
- new ChangedOneOfSchema(leftMapping, rightMapping, context);
MapKeyDiff mappingDiff =
MapKeyDiff.diff(
getSchema(leftComponents, leftMapping), getSchema(rightComponents, rightMapping));
- changedOneOfSchema.setIncreasedMapping(mappingDiff.getIncreased());
- changedOneOfSchema.setMissingMapping(mappingDiff.getMissing());
-
Map changedMapping = new LinkedHashMap<>();
- changedOneOfSchema.setChangedMapping(changedMapping);
-
for (String key : mappingDiff.getSharedKey()) {
Schema leftSchema = new Schema();
leftSchema.set$ref(leftMapping.get(key));
@@ -83,7 +76,11 @@ public Optional diff(
.diff(refSet, leftSchema, rightSchema, context.copyWithRequired(true));
changedSchema.ifPresent(schema -> changedMapping.put(key, schema));
}
- changedSchema.setChangedOneOfSchema(changedOneOfSchema);
+ changedSchema.setOneOfSchema(
+ new ChangedOneOfSchema(leftMapping, rightMapping, context)
+ .setIncreased(mappingDiff.getIncreased())
+ .setMissing(mappingDiff.getMissing())
+ .setChanged(changedMapping));
}
return super.diff(refSet, leftComponents, rightComponents, left, right, context);
} else {
diff --git a/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/SchemaDiffResult.java b/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/SchemaDiffResult.java
index 2eb56fafd..1dcf8ffba 100644
--- a/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/SchemaDiffResult.java
+++ b/src/main/java/com/qdesrame/openapi/diff/compare/schemadiffresult/SchemaDiffResult.java
@@ -9,7 +9,6 @@
import com.qdesrame.openapi.diff.model.ChangedSchema;
import com.qdesrame.openapi.diff.model.DiffContext;
import com.qdesrame.openapi.diff.model.ListDiff;
-import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
import com.qdesrame.openapi.diff.model.schema.ChangedReadOnly;
import com.qdesrame.openapi.diff.model.schema.ChangedWriteOnly;
import io.swagger.v3.oas.models.Components;
@@ -32,12 +31,12 @@ public SchemaDiffResult(String type, OpenApiDiff openApiDiff) {
this.changedSchema.setType(type);
}
- public Optional diff(
+ public , X> Optional diff(
HashSet refSet,
Components leftComponents,
Components rightComponents,
- Schema left,
- Schema right,
+ T left,
+ T right,
DiffContext context) {
changedSchema
.setContext(context)
@@ -46,35 +45,38 @@ public Optional diff(
.setChangeDeprecated(
!Boolean.TRUE.equals(left.getDeprecated())
&& Boolean.TRUE.equals(right.getDeprecated()))
- .setChangeDescription(!Objects.equals(left.getDescription(), right.getDescription()))
.setChangeTitle(!Objects.equals(left.getTitle(), right.getTitle()))
.setChangeRequired(ListDiff.diff(left.getRequired(), right.getRequired()))
.setChangeDefault(!Objects.equals(left.getDefault(), right.getDefault()))
.setChangeEnum(ListDiff.diff(left.getEnum(), right.getEnum()))
.setChangeFormat(!Objects.equals(left.getFormat(), right.getFormat()))
- .setChangedReadOnly(new ChangedReadOnly(context, left.getReadOnly(), right.getReadOnly()))
- .setChangedWriteOnly(
- new ChangedWriteOnly(context, left.getWriteOnly(), right.getWriteOnly()))
+ .setReadOnly(new ChangedReadOnly(context, left.getReadOnly(), right.getReadOnly()))
+ .setWriteOnly(new ChangedWriteOnly(context, left.getWriteOnly(), right.getWriteOnly()))
.setChangedMaxLength(!Objects.equals(left.getMaxLength(), right.getMaxLength()));
- Optional changedExtensions =
- openApiDiff.getExtensionsDiff().diff(left.getExtensions(), right.getExtensions(), context);
- changedExtensions.ifPresent(changedSchema::setChangedExtensions);
+
+ openApiDiff
+ .getExtensionsDiff()
+ .diff(left.getExtensions(), right.getExtensions())
+ .ifPresent(changedSchema::setExtensions);
+ openApiDiff
+ .getMetadataDiff()
+ .diff(left.getDescription(), right.getDescription(), context)
+ .ifPresent(changedSchema::setDescription);
Map leftProperties = null == left ? null : left.getProperties();
Map rightProperties = null == right ? null : right.getProperties();
MapKeyDiff propertyDiff = MapKeyDiff.diff(leftProperties, rightProperties);
for (String key : propertyDiff.getSharedKey()) {
- Optional resultSchema =
- openApiDiff
- .getSchemaDiff()
- .diff(
- refSet,
- leftProperties.get(key),
- rightProperties.get(key),
- required(context, key, right.getRequired()));
- resultSchema.ifPresent(
- changedSchema1 -> changedSchema.getChangedProperties().put(key, changedSchema1));
+ openApiDiff
+ .getSchemaDiff()
+ .diff(
+ refSet,
+ leftProperties.get(key),
+ rightProperties.get(key),
+ required(context, key, right.getRequired()))
+ .ifPresent(
+ changedSchema1 -> changedSchema.getChangedProperties().put(key, changedSchema1));
}
compareAdditionalProperties(refSet, left, right, context);
@@ -89,8 +91,8 @@ public Optional diff(
}
protected Optional isApplicable(DiffContext context) {
- if (changedSchema.getChangedReadOnly().isUnchanged()
- && changedSchema.getChangedWriteOnly().isUnchanged()
+ if (changedSchema.getReadOnly().isUnchanged()
+ && changedSchema.getWriteOnly().isUnchanged()
&& !isPropertyApplicable(changedSchema.getNewSchema(), context)) {
return Optional.empty();
}
@@ -150,7 +152,7 @@ private void compareAdditionalProperties(
context.copyWithRequired(false));
apChangedSchema = addPropChangedSchemaOP.orElse(apChangedSchema);
}
- isChanged(apChangedSchema).ifPresent(changedSchema::setAddPropChangedSchema);
+ isChanged(apChangedSchema).ifPresent(changedSchema::setAddProp);
}
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/Changed.java b/src/main/java/com/qdesrame/openapi/diff/model/Changed.java
index 7bf7f4263..543a0ab79 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/Changed.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/Changed.java
@@ -1,6 +1,12 @@
package com.qdesrame.openapi.diff.model;
+import java.util.Optional;
+
public interface Changed {
+ static DiffResult result(Changed changed) {
+ return Optional.ofNullable(changed).map(Changed::isChanged).orElse(DiffResult.NO_CHANGES);
+ }
+
DiffResult isChanged();
default boolean isCompatible() {
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedApiResponse.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedApiResponse.java
index 8d65e942f..4c06d2156 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedApiResponse.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedApiResponse.java
@@ -1,47 +1,53 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.responses.ApiResponses;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 22/12/17. */
@Getter
@Setter
-public class ChangedApiResponse implements Changed {
+@Accessors(chain = true)
+public class ChangedApiResponse implements ComposedChanged {
private final ApiResponses oldApiResponses;
private final ApiResponses newApiResponses;
private final DiffContext context;
- private Map missingResponses;
- private Map addResponses;
- private Map changedResponses;
- private ChangedExtensions changedExtensions;
+
+ private Map increased;
+ private Map missing;
+ private Map changed;
+ private ChangedExtensions extensions;
public ChangedApiResponse(
ApiResponses oldApiResponses, ApiResponses newApiResponses, DiffContext context) {
this.oldApiResponses = oldApiResponses;
this.newApiResponses = newApiResponses;
this.context = context;
- this.missingResponses = new LinkedHashMap<>();
- this.addResponses = new LinkedHashMap<>();
- this.changedResponses = new LinkedHashMap<>();
+ this.missing = new LinkedHashMap<>();
+ this.increased = new LinkedHashMap<>();
+ this.changed = new LinkedHashMap<>();
+ }
+
+ @Override
+ public List getChangedElements() {
+ return Stream.concat(changed.values().stream(), Stream.of(extensions))
+ .collect(Collectors.toList());
}
@Override
- public DiffResult isChanged() {
- if (addResponses.size() == 0
- && missingResponses.size() == 0
- && changedResponses.size() == 0
- && ChangedUtils.isUnchanged(changedExtensions)) {
+ public DiffResult isCoreChanged() {
+ if (increased.isEmpty() && missing.isEmpty()) {
return DiffResult.NO_CHANGES;
}
- if (missingResponses.size() == 0
- && changedResponses.values().stream().allMatch(Changed::isCompatible)
- && ChangedUtils.isCompatible(changedExtensions)) {
+ if (!increased.isEmpty() && missing.isEmpty()) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedContent.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedContent.java
index 165b94cb4..2502ad27b 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedContent.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedContent.java
@@ -2,15 +2,19 @@
import io.swagger.v3.oas.models.media.Content;
import io.swagger.v3.oas.models.media.MediaType;
+import java.util.ArrayList;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 22/12/17. */
@Getter
@Setter
-public class ChangedContent implements Changed {
+@Accessors(chain = true)
+public class ChangedContent implements ComposedChanged {
private final Content oldContent;
private final Content newContent;
private final DiffContext context;
@@ -29,13 +33,16 @@ public ChangedContent(Content oldContent, Content newContent, DiffContext contex
}
@Override
- public DiffResult isChanged() {
- if (increased.isEmpty() && missing.isEmpty() && changed.isEmpty()) {
+ public List getChangedElements() {
+ return new ArrayList<>(changed.values());
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (increased.isEmpty() && missing.isEmpty()) {
return DiffResult.NO_CHANGES;
}
- if (((context.isRequest() && missing.isEmpty())
- || (context.isResponse() && increased.isEmpty()))
- && changed.values().stream().allMatch(Changed::isCompatible)) {
+ if (context.isRequest() && missing.isEmpty() || context.isResponse() && increased.isEmpty()) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedHeader.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedHeader.java
index 8566f3a69..f95c466d7 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedHeader.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedHeader.java
@@ -1,27 +1,30 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.headers.Header;
+import java.util.Arrays;
+import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 28/12/17. */
@Getter
@Setter
-public class ChangedHeader implements Changed {
+@Accessors(chain = true)
+public class ChangedHeader implements ComposedChanged {
private final Header oldHeader;
private final Header newHeader;
private final DiffContext context;
- private boolean changeDescription;
- private boolean changeRequired;
- private boolean changeDeprecated;
- private boolean changeStyle;
- private boolean changeExplode;
- private ChangedSchema changedSchema;
- private ChangedContent changedContent;
- private ChangedExtensions changedExtensions;
+ private boolean required;
+ private boolean deprecated;
+ private boolean style;
+ private boolean explode;
+ private ChangedMetadata description;
+ private ChangedSchema schema;
+ private ChangedContent content;
+ private ChangedExtensions extensions;
public ChangedHeader(Header oldHeader, Header newHeader, DiffContext context) {
this.oldHeader = oldHeader;
@@ -30,23 +33,16 @@ public ChangedHeader(Header oldHeader, Header newHeader, DiffContext context) {
}
@Override
- public DiffResult isChanged() {
- if (!changeDescription
- && !changeRequired
- && !changeDeprecated
- && !changeStyle
- && !changeExplode
- && ChangedUtils.isUnchanged(changedSchema)
- && ChangedUtils.isUnchanged(changedContent)
- && ChangedUtils.isUnchanged(changedExtensions)) {
+ public List getChangedElements() {
+ return Arrays.asList(description, schema, content, extensions);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (!required && !deprecated && !style && !explode) {
return DiffResult.NO_CHANGES;
}
- if (!changeRequired
- && !changeStyle
- && !changeExplode
- && ChangedUtils.isCompatible(changedSchema)
- && ChangedUtils.isCompatible(changedContent)
- && ChangedUtils.isCompatible(changedExtensions)) {
+ if (!required && !style && !explode) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedHeaders.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedHeaders.java
index 3fae03af7..e0790cddc 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedHeaders.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedHeaders.java
@@ -1,14 +1,18 @@
package com.qdesrame.openapi.diff.model;
import io.swagger.v3.oas.models.headers.Header;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 28/12/17. */
@Getter
@Setter
-public class ChangedHeaders implements Changed {
+@Accessors(chain = true)
+public class ChangedHeaders implements ComposedChanged {
private final Map oldHeaders;
private final Map newHeaders;
private final DiffContext context;
@@ -25,12 +29,16 @@ public ChangedHeaders(
}
@Override
- public DiffResult isChanged() {
- if (increased.isEmpty() && missing.isEmpty() && (changed == null || changed.isEmpty())) {
+ public List getChangedElements() {
+ return new ArrayList<>(changed.values());
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (increased.isEmpty() && missing.isEmpty()) {
return DiffResult.NO_CHANGES;
}
- if (missing.isEmpty()
- && (changed == null || changed.values().stream().allMatch(Changed::isCompatible))) {
+ if (missing.isEmpty()) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedMediaType.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedMediaType.java
index cd20e541f..0181b6867 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedMediaType.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedMediaType.java
@@ -1,16 +1,20 @@
package com.qdesrame.openapi.diff.model;
import io.swagger.v3.oas.models.media.Schema;
+import java.util.Collections;
+import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
@Getter
@Setter
-public class ChangedMediaType implements Changed {
+@Accessors(chain = true)
+public class ChangedMediaType implements ComposedChanged {
private final Schema oldSchema;
private final Schema newSchema;
private final DiffContext context;
- private ChangedSchema changedSchema;
+ private ChangedSchema schema;
public ChangedMediaType(Schema oldSchema, Schema newSchema, DiffContext context) {
this.oldSchema = oldSchema;
@@ -19,13 +23,12 @@ public ChangedMediaType(Schema oldSchema, Schema newSchema, DiffContext context)
}
@Override
- public DiffResult isChanged() {
- if (this.changedSchema == null || this.changedSchema.isUnchanged()) {
- return DiffResult.NO_CHANGES;
- }
- if (this.changedSchema.isCompatible()) {
- return DiffResult.COMPATIBLE;
- }
- return DiffResult.INCOMPATIBLE;
+ public List getChangedElements() {
+ return Collections.singletonList(schema);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ return DiffResult.NO_CHANGES;
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedMetadata.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedMetadata.java
new file mode 100644
index 000000000..424771d6e
--- /dev/null
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedMetadata.java
@@ -0,0 +1,23 @@
+package com.qdesrame.openapi.diff.model;
+
+import java.util.Objects;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+public class ChangedMetadata implements Changed {
+
+ private String left;
+ private String right;
+
+ @Override
+ public DiffResult isChanged() {
+ if (Objects.equals(left, right)) {
+ return DiffResult.NO_CHANGES;
+ }
+ return DiffResult.METADATA;
+ }
+}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOAuthFlow.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOAuthFlow.java
index d8c65cf2e..2c834026e 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOAuthFlow.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOAuthFlow.java
@@ -1,22 +1,25 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.security.OAuthFlow;
+import java.util.Collections;
+import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 12/01/18. */
@Getter
@Setter
-public class ChangedOAuthFlow implements Changed {
+@Accessors(chain = true)
+public class ChangedOAuthFlow implements ComposedChanged {
private OAuthFlow oldOAuthFlow;
private OAuthFlow newOAuthFlow;
- private boolean changedAuthorizationUrl;
- private boolean changedTokenUrl;
- private boolean changedRefreshUrl;
- private ChangedExtensions changedExtensions;
+ private boolean authorizationUrl;
+ private boolean tokenUrl;
+ private boolean refreshUrl;
+ private ChangedExtensions extensions;
public ChangedOAuthFlow(OAuthFlow oldOAuthFlow, OAuthFlow newOAuthFlow) {
this.oldOAuthFlow = oldOAuthFlow;
@@ -24,14 +27,15 @@ public ChangedOAuthFlow(OAuthFlow oldOAuthFlow, OAuthFlow newOAuthFlow) {
}
@Override
- public DiffResult isChanged() {
- if (!changedAuthorizationUrl && !changedTokenUrl && !changedRefreshUrl) {
- if (ChangedUtils.isUnchanged(changedExtensions)) {
- return DiffResult.NO_CHANGES;
- } else if (ChangedUtils.isCompatible(changedExtensions)) {
- return DiffResult.COMPATIBLE;
- }
+ public List getChangedElements() {
+ return Collections.singletonList(extensions);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (authorizationUrl || tokenUrl || refreshUrl) {
+ return DiffResult.INCOMPATIBLE;
}
- return DiffResult.INCOMPATIBLE;
+ return DiffResult.NO_CHANGES;
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOAuthFlows.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOAuthFlows.java
index 126642171..ec075ba2f 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOAuthFlows.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOAuthFlows.java
@@ -1,23 +1,26 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.security.OAuthFlows;
+import java.util.Arrays;
+import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 12/01/18. */
@Getter
@Setter
-public class ChangedOAuthFlows implements Changed {
+@Accessors(chain = true)
+public class ChangedOAuthFlows implements ComposedChanged {
private final OAuthFlows oldOAuthFlows;
private final OAuthFlows newOAuthFlows;
- private ChangedOAuthFlow changedImplicitOAuthFlow;
- private ChangedOAuthFlow changedPasswordOAuthFlow;
- private ChangedOAuthFlow changedClientCredentialOAuthFlow;
- private ChangedOAuthFlow changedAuthorizationCodeOAuthFlow;
- private ChangedExtensions changedExtensions;
+ private ChangedOAuthFlow implicitOAuthFlow;
+ private ChangedOAuthFlow passwordOAuthFlow;
+ private ChangedOAuthFlow clientCredentialOAuthFlow;
+ private ChangedOAuthFlow authorizationCodeOAuthFlow;
+ private ChangedExtensions extensions;
public ChangedOAuthFlows(OAuthFlows oldOAuthFlows, OAuthFlows newOAuthFlows) {
this.oldOAuthFlows = oldOAuthFlows;
@@ -25,21 +28,17 @@ public ChangedOAuthFlows(OAuthFlows oldOAuthFlows, OAuthFlows newOAuthFlows) {
}
@Override
- public DiffResult isChanged() {
- if ((changedImplicitOAuthFlow == null || changedImplicitOAuthFlow.isUnchanged())
- && ChangedUtils.isUnchanged(changedPasswordOAuthFlow)
- && ChangedUtils.isUnchanged(changedClientCredentialOAuthFlow)
- && ChangedUtils.isUnchanged(changedAuthorizationCodeOAuthFlow)
- && ChangedUtils.isUnchanged(changedExtensions)) {
- return DiffResult.NO_CHANGES;
- }
- if ((changedImplicitOAuthFlow == null || changedImplicitOAuthFlow.isCompatible())
- && ChangedUtils.isCompatible(changedPasswordOAuthFlow)
- && ChangedUtils.isCompatible(changedClientCredentialOAuthFlow)
- && ChangedUtils.isCompatible(changedAuthorizationCodeOAuthFlow)
- && ChangedUtils.isCompatible(changedExtensions)) {
- return DiffResult.COMPATIBLE;
- }
- return DiffResult.INCOMPATIBLE;
+ public List getChangedElements() {
+ return Arrays.asList(
+ implicitOAuthFlow,
+ passwordOAuthFlow,
+ clientCredentialOAuthFlow,
+ authorizationCodeOAuthFlow,
+ extensions);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ return DiffResult.NO_CHANGES;
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOneOfSchema.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOneOfSchema.java
index ca3994854..57b4b9ca3 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOneOfSchema.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOneOfSchema.java
@@ -1,21 +1,25 @@
package com.qdesrame.openapi.diff.model;
import io.swagger.v3.oas.models.media.Schema;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 22/12/17. */
@Getter
@Setter
-public class ChangedOneOfSchema implements Changed {
+@Accessors(chain = true)
+public class ChangedOneOfSchema implements ComposedChanged {
private final Map oldMapping;
private final Map newMapping;
private final DiffContext context;
- private Map increasedMapping;
- private Map missingMapping;
- private Map changedMapping;
+ private Map increased;
+ private Map missing;
+ private Map changed;
public ChangedOneOfSchema(
Map oldMapping, Map newMapping, DiffContext context) {
@@ -25,13 +29,16 @@ public ChangedOneOfSchema(
}
@Override
- public DiffResult isChanged() {
- if (increasedMapping.size() == 0 && missingMapping.size() == 0 && changedMapping.size() == 0) {
+ public List getChangedElements() {
+ return new ArrayList<>(changed.values());
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (increased.isEmpty() && missing.isEmpty()) {
return DiffResult.NO_CHANGES;
}
- if (((context.isRequest() && missingMapping.isEmpty())
- || (context.isResponse() && increasedMapping.isEmpty()))
- && changedMapping.values().stream().allMatch(Changed::isCompatible)) {
+ if (context.isRequest() && missing.isEmpty() || context.isResponse() && increased.isEmpty()) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOpenApi.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOpenApi.java
index bb954502a..aabab1ea7 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOpenApi.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOpenApi.java
@@ -1,18 +1,20 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import com.qdesrame.openapi.diff.utils.EndpointUtils;
import io.swagger.v3.oas.models.OpenAPI;
import java.util.List;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 22/12/17. */
@Getter
@Setter
-public class ChangedOpenApi implements Changed {
+@Accessors(chain = true)
+public class ChangedOpenApi implements ComposedChanged {
private OpenAPI oldSpecOpenApi;
private OpenAPI newSpecOpenApi;
@@ -33,16 +35,17 @@ public List getDeprecatedEndpoints() {
}
@Override
- public DiffResult isChanged() {
- if (newEndpoints.size() == 0
- && missingEndpoints.size() == 0
- && changedOperations.size() == 0
- && ChangedUtils.isUnchanged(changedExtensions)) {
+ public List getChangedElements() {
+ return Stream.concat(changedOperations.stream(), Stream.of(changedExtensions))
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (newEndpoints.isEmpty() && missingEndpoints.isEmpty()) {
return DiffResult.NO_CHANGES;
}
- if (missingEndpoints.size() == 0
- && changedOperations.stream().allMatch(Changed::isCompatible)
- && ChangedUtils.isCompatible(changedExtensions)) {
+ if (missingEndpoints.isEmpty()) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOperation.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOperation.java
index 77e0b9080..ca8d3b00f 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedOperation.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedOperation.java
@@ -1,26 +1,33 @@
package com.qdesrame.openapi.diff.model;
+import static com.qdesrame.openapi.diff.model.Changed.result;
+
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.PathItem;
+import java.util.Arrays;
+import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
@Getter
@Setter
-public class ChangedOperation implements Changed {
- private String pathUrl;
- private PathItem.HttpMethod httpMethod;
+@Accessors(chain = true)
+public class ChangedOperation implements ComposedChanged {
private Operation oldOperation;
private Operation newOperation;
- private String summary;
+
+ private String pathUrl;
+ private PathItem.HttpMethod httpMethod;
+ private ChangedMetadata summary;
+ private ChangedMetadata description;
private boolean deprecated;
- private ChangedParameters changedParameters;
- private ChangedRequestBody changedRequestBody;
- private ChangedApiResponse changedApiResponse;
- private ChangedSecurityRequirements changedSecurityRequirements;
- private ChangedExtensions changedExtensions;
+ private ChangedParameters parameters;
+ private ChangedRequestBody requestBody;
+ private ChangedApiResponse apiResponses;
+ private ChangedSecurityRequirements securityRequirements;
+ private ChangedExtensions extensions;
public ChangedOperation(
String pathUrl,
@@ -34,41 +41,31 @@ public ChangedOperation(
}
@Override
- public DiffResult isChanged() {
+ public List getChangedElements() {
+ return Arrays.asList(
+ summary,
+ description,
+ parameters,
+ requestBody,
+ apiResponses,
+ securityRequirements,
+ extensions);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
// TODO BETTER HANDLING FOR DEPRECIATION
- if (!deprecated
- && isChangedParam().isUnchanged()
- && isChangedRequest().isUnchanged()
- && isChangedResponse().isUnchanged()
- && isChangedSecurity().isUnchanged()
- && ChangedUtils.isUnchanged(changedExtensions)) {
- return DiffResult.NO_CHANGES;
- }
- if (isChangedParam().isCompatible()
- && isChangedRequest().isCompatible()
- && isChangedResponse().isCompatible()
- && isChangedSecurity().isCompatible()
- && ChangedUtils.isCompatible(changedExtensions)) {
+ if (deprecated) {
return DiffResult.COMPATIBLE;
}
- return DiffResult.INCOMPATIBLE;
- }
-
- public DiffResult isChangedParam() {
- return changedParameters == null ? DiffResult.NO_CHANGES : changedParameters.isChanged();
- }
-
- public DiffResult isChangedResponse() {
- return changedApiResponse == null ? DiffResult.NO_CHANGES : changedApiResponse.isChanged();
+ return DiffResult.NO_CHANGES;
}
- public DiffResult isChangedRequest() {
- return changedRequestBody == null ? DiffResult.NO_CHANGES : changedRequestBody.isChanged();
+ public DiffResult resultApiResponses() {
+ return result(apiResponses);
}
- public DiffResult isChangedSecurity() {
- return changedSecurityRequirements == null
- ? DiffResult.NO_CHANGES
- : changedSecurityRequirements.isChanged();
+ public DiffResult resultRequestBody() {
+ return requestBody == null ? DiffResult.NO_CHANGES : requestBody.isChanged();
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedParameter.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedParameter.java
index 002d3ba93..13dc75df2 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedParameter.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedParameter.java
@@ -1,30 +1,31 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.parameters.Parameter;
+import java.util.Arrays;
+import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
@Getter
@Setter
-public class ChangedParameter implements Changed {
+@Accessors(chain = true)
+public class ChangedParameter implements ComposedChanged {
+ private final DiffContext context;
private Parameter oldParameter;
private Parameter newParameter;
-
private String name;
private String in;
- private final DiffContext context;
-
- private boolean changeDescription;
private boolean changeRequired;
private boolean deprecated;
private boolean changeStyle;
private boolean changeExplode;
private boolean changeAllowEmptyValue;
- private ChangedSchema changedSchema;
- private ChangedContent changedContent;
- private ChangedExtensions changedExtensions;
+ private ChangedMetadata description;
+ private ChangedSchema schema;
+ private ChangedContent content;
+ private ChangedExtensions extensions;
public ChangedParameter(String name, String in, DiffContext context) {
this.name = name;
@@ -33,25 +34,23 @@ public ChangedParameter(String name, String in, DiffContext context) {
}
@Override
- public DiffResult isChanged() {
- if (!changeDescription
- && !changeRequired
+ public List getChangedElements() {
+ return Arrays.asList(description, schema, content, extensions);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (!changeRequired
&& !deprecated
&& !changeAllowEmptyValue
&& !changeStyle
- && !changeExplode
- && ChangedUtils.isUnchanged(changedSchema)
- && ChangedUtils.isUnchanged(changedContent)
- && ChangedUtils.isUnchanged(changedExtensions)) {
+ && !changeExplode) {
return DiffResult.NO_CHANGES;
}
if ((!changeRequired || Boolean.TRUE.equals(oldParameter.getRequired()))
&& (!changeAllowEmptyValue || Boolean.TRUE.equals(newParameter.getAllowEmptyValue()))
&& !changeStyle
- && !changeExplode
- && ChangedUtils.isCompatible(changedSchema)
- && ChangedUtils.isCompatible(changedContent)
- && ChangedUtils.isCompatible(changedExtensions)) {
+ && !changeExplode) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedParameters.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedParameters.java
index cbe0d67c6..6d522e07e 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedParameters.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedParameters.java
@@ -5,10 +5,12 @@
import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
@Getter
@Setter
-public class ChangedParameters implements Changed {
+@Accessors(chain = true)
+public class ChangedParameters implements ComposedChanged {
private final List oldParameterList;
private final List newParameterList;
private final DiffContext context;
@@ -28,13 +30,16 @@ public ChangedParameters(
}
@Override
- public DiffResult isChanged() {
- if (increased.isEmpty() && missing.isEmpty() && changed.isEmpty()) {
+ public List getChangedElements() {
+ return new ArrayList<>(changed);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (increased.isEmpty() && missing.isEmpty()) {
return DiffResult.NO_CHANGES;
}
- if (increased.stream().noneMatch(Parameter::getRequired)
- && missing.isEmpty()
- && changed.stream().allMatch(Changed::isCompatible)) {
+ if (increased.stream().noneMatch(Parameter::getRequired) && missing.isEmpty()) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedPath.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedPath.java
index 71c85dfad..e55b041d0 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedPath.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedPath.java
@@ -1,19 +1,22 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.PathItem;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
@Getter
@Setter
-public class ChangedPath implements Changed {
+@Accessors(chain = true)
+public class ChangedPath implements ComposedChanged {
private final String pathUrl;
private final PathItem oldPath;
private final PathItem newPath;
@@ -22,7 +25,7 @@ public class ChangedPath implements Changed {
Map increased;
Map missing;
List changed;
- private ChangedExtensions changedExtensions;
+ private ChangedExtensions extensions;
public ChangedPath(String pathUrl, PathItem oldPath, PathItem newPath, DiffContext context) {
this.pathUrl = pathUrl;
@@ -35,16 +38,16 @@ public ChangedPath(String pathUrl, PathItem oldPath, PathItem newPath, DiffConte
}
@Override
- public DiffResult isChanged() {
- if (increased.isEmpty()
- && missing.isEmpty()
- && changed.isEmpty()
- && ChangedUtils.isUnchanged(changedExtensions)) {
+ public List getChangedElements() {
+ return Stream.concat(changed.stream(), Stream.of(extensions)).collect(Collectors.toList());
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (increased.isEmpty() && missing.isEmpty()) {
return DiffResult.NO_CHANGES;
}
- if (missing.isEmpty()
- && changed.stream().allMatch(Changed::isCompatible)
- && ChangedUtils.isCompatible(changedExtensions)) {
+ if (missing.isEmpty()) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedPaths.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedPaths.java
index a1a3dead9..c3991b5d8 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedPaths.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedPaths.java
@@ -1,14 +1,16 @@
package com.qdesrame.openapi.diff.model;
import io.swagger.v3.oas.models.PathItem;
+import java.util.ArrayList;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
-public class ChangedPaths implements Changed {
+public class ChangedPaths implements ComposedChanged {
private final Map oldPathMap;
private final Map newPathMap;
@@ -25,11 +27,16 @@ public ChangedPaths(Map oldPathMap, Map newP
}
@Override
- public DiffResult isChanged() {
- if (increased.isEmpty() && missing.isEmpty() && changed.isEmpty()) {
+ public List getChangedElements() {
+ return new ArrayList<>(changed.values());
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (increased.isEmpty() && missing.isEmpty()) {
return DiffResult.NO_CHANGES;
}
- if (missing.isEmpty() && changed.values().stream().allMatch(Changed::isCompatible)) {
+ if (missing.isEmpty()) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedRequestBody.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedRequestBody.java
index 249082e91..d7df2b3d9 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedRequestBody.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedRequestBody.java
@@ -1,23 +1,26 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.parameters.RequestBody;
+import java.util.Arrays;
+import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 27/12/17. */
@Getter
@Setter
-public class ChangedRequestBody implements Changed {
+@Accessors(chain = true)
+public class ChangedRequestBody implements ComposedChanged {
private final RequestBody oldRequestBody;
private final RequestBody newRequestBody;
private final DiffContext context;
- private boolean changeDescription;
private boolean changeRequired;
- private ChangedContent changedContent;
- private ChangedExtensions changedExtensions;
+ private ChangedMetadata description;
+ private ChangedContent content;
+ private ChangedExtensions extensions;
public ChangedRequestBody(
RequestBody oldRequestBody, RequestBody newRequestBody, DiffContext context) {
@@ -27,18 +30,15 @@ public ChangedRequestBody(
}
@Override
- public DiffResult isChanged() {
- if (!changeDescription
- && !changeRequired
- && ChangedUtils.isUnchanged(changedContent)
- && ChangedUtils.isUnchanged(changedExtensions)) {
+ public List getChangedElements() {
+ return Arrays.asList(description, content, extensions);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (!changeRequired) {
return DiffResult.NO_CHANGES;
}
- if (!changeRequired
- && ChangedUtils.isCompatible(changedContent)
- && ChangedUtils.isCompatible(changedExtensions)) {
- return DiffResult.COMPATIBLE;
- }
return DiffResult.INCOMPATIBLE;
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedResponse.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedResponse.java
index 134d6fd99..e1d923304 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedResponse.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedResponse.java
@@ -1,22 +1,25 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.responses.ApiResponse;
+import java.util.Arrays;
+import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
@Getter
@Setter
-public class ChangedResponse implements Changed {
+@Accessors(chain = true)
+public class ChangedResponse implements ComposedChanged {
private final ApiResponse oldApiResponse;
private final ApiResponse newApiResponse;
private final DiffContext context;
- private boolean changeDescription;
- private ChangedHeaders changedHeaders;
- private ChangedContent changedContent;
- private ChangedExtensions changedExtensions;
+ private ChangedMetadata description;
+ private ChangedHeaders headers;
+ private ChangedContent content;
+ private ChangedExtensions extensions;
public ChangedResponse(
ApiResponse oldApiResponse, ApiResponse newApiResponse, DiffContext context) {
@@ -26,18 +29,12 @@ public ChangedResponse(
}
@Override
- public DiffResult isChanged() {
- if (!changeDescription
- && ChangedUtils.isUnchanged(changedContent)
- && ChangedUtils.isUnchanged(changedHeaders)
- && ChangedUtils.isUnchanged(changedExtensions)) {
- return DiffResult.NO_CHANGES;
- }
- if (ChangedUtils.isCompatible(changedContent)
- && ChangedUtils.isCompatible(changedHeaders)
- && ChangedUtils.isCompatible(changedExtensions)) {
- return DiffResult.COMPATIBLE;
- }
- return DiffResult.INCOMPATIBLE;
+ public List getChangedElements() {
+ return Arrays.asList(description, headers, content, extensions);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ return DiffResult.NO_CHANGES;
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedSchema.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedSchema.java
index ad59a489f..542dc4262 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedSchema.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedSchema.java
@@ -3,10 +3,12 @@
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
import com.qdesrame.openapi.diff.model.schema.ChangedReadOnly;
import com.qdesrame.openapi.diff.model.schema.ChangedWriteOnly;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.media.Schema;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
@@ -16,7 +18,7 @@
@Getter
@Setter
@Accessors(chain = true)
-public class ChangedSchema implements Changed {
+public class ChangedSchema implements ComposedChanged {
protected DiffContext context;
protected Schema oldSchema;
protected Schema newSchema;
@@ -25,21 +27,21 @@ public class ChangedSchema implements Changed {
protected Map increasedProperties;
protected Map missingProperties;
protected boolean changeDeprecated;
- protected boolean changeDescription;
+ protected ChangedMetadata description;
protected boolean changeTitle;
protected ListDiff changeRequired;
protected boolean changeDefault;
protected ListDiff changeEnum;
protected boolean changeFormat;
- protected ChangedReadOnly changedReadOnly;
- protected ChangedWriteOnly changedWriteOnly;
+ protected ChangedReadOnly readOnly;
+ protected ChangedWriteOnly writeOnly;
protected boolean changedType;
protected boolean changedMaxLength;
protected boolean discriminatorPropertyChanged;
- protected ChangedSchema changedItems;
- protected ChangedOneOfSchema changedOneOfSchema;
- protected ChangedSchema addPropChangedSchema;
- protected ChangedExtensions changedExtensions;
+ protected ChangedSchema items;
+ protected ChangedOneOfSchema oneOfSchema;
+ protected ChangedSchema addProp;
+ private ChangedExtensions extensions;
public ChangedSchema() {
increasedProperties = new LinkedHashMap<>();
@@ -48,11 +50,17 @@ public ChangedSchema() {
}
@Override
- public DiffResult isChanged() {
+ public List getChangedElements() {
+ return Stream.concat(
+ changedProperties.values().stream(),
+ Stream.of(description, readOnly, writeOnly, items, oneOfSchema, addProp, extensions))
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
if (!changedType
&& (oldSchema == null && newSchema == null || oldSchema != null && newSchema != null)
- && ChangedUtils.isUnchanged(changedWriteOnly)
- && ChangedUtils.isUnchanged(changedReadOnly)
&& !changedMaxLength
&& (changeEnum == null || changeEnum.isUnchanged())
&& !changeFormat
@@ -61,14 +69,10 @@ public DiffResult isChanged() {
&& changedProperties.values().size() == 0
&& !changeDeprecated
&& (changeRequired == null || changeRequired.isUnchanged())
- && !discriminatorPropertyChanged
- && ChangedUtils.isUnchanged(addPropChangedSchema)
- && ChangedUtils.isUnchanged(changedOneOfSchema)
- && ChangedUtils.isUnchanged(changedItems)
- && ChangedUtils.isUnchanged(changedExtensions)) {
+ && !discriminatorPropertyChanged) {
return DiffResult.NO_CHANGES;
}
- boolean backwardCompatibleForRequest =
+ boolean compatibleForRequest =
(changeEnum == null || changeEnum.getMissing().isEmpty())
&& (changeRequired == null || CollectionUtils.isEmpty(changeRequired.getIncreased()))
&& (oldSchema != null || newSchema == null)
@@ -77,7 +81,7 @@ public DiffResult isChanged() {
|| (oldSchema.getMaxLength() != null
&& oldSchema.getMaxLength() <= newSchema.getMaxLength()));
- boolean backwardCompatibleForResponse =
+ boolean compatibleForResponse =
(changeEnum == null || changeEnum.getIncreased().isEmpty())
&& (changeRequired == null || CollectionUtils.isEmpty(changeRequired.getMissing()))
&& missingProperties.isEmpty()
@@ -86,19 +90,12 @@ public DiffResult isChanged() {
|| oldSchema.getMaxLength() == null
|| (newSchema.getMaxLength() != null
&& newSchema.getMaxLength() <= oldSchema.getMaxLength()));
-
- if ((context.isRequest() && backwardCompatibleForRequest
- || context.isResponse() && backwardCompatibleForResponse)
+ if ((context.isRequest() && compatibleForRequest
+ || context.isResponse() && compatibleForResponse)
&& !changedType
- && !discriminatorPropertyChanged
- && ChangedUtils.isCompatible(changedOneOfSchema)
- && ChangedUtils.isCompatible(addPropChangedSchema)
- && changedProperties.values().stream().allMatch(Changed::isCompatible)
- && ChangedUtils.isCompatible(changedItems)
- && ChangedUtils.isCompatible(changedExtensions)) {
+ && !discriminatorPropertyChanged) {
return DiffResult.COMPATIBLE;
}
-
return DiffResult.INCOMPATIBLE;
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityRequirement.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityRequirement.java
index bdc7c8b67..a1361db09 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityRequirement.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityRequirement.java
@@ -5,12 +5,13 @@
import java.util.List;
import lombok.Getter;
import lombok.Setter;
-import org.apache.commons.collections4.CollectionUtils;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 06/01/18. */
@Getter
@Setter
-public class ChangedSecurityRequirement implements Changed {
+@Accessors(chain = true)
+public class ChangedSecurityRequirement implements ComposedChanged {
private SecurityRequirement oldSecurityRequirement;
private SecurityRequirement newSecurityRequirement;
@@ -22,15 +23,20 @@ public ChangedSecurityRequirement(
SecurityRequirement oldSecurityRequirement, SecurityRequirement newSecurityRequirement) {
this.oldSecurityRequirement = oldSecurityRequirement;
this.newSecurityRequirement = newSecurityRequirement;
+ this.changed = new ArrayList<>();
}
@Override
- public DiffResult isChanged() {
- if (missing == null && increased == null && CollectionUtils.isEmpty(changed)) {
+ public List getChangedElements() {
+ return new ArrayList<>(changed);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (increased == null && missing == null) {
return DiffResult.NO_CHANGES;
}
- if (increased == null
- && (changed == null || changed.stream().allMatch(Changed::isCompatible))) {
+ if (increased == null) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
@@ -51,9 +57,6 @@ public void addIncreased(String key, List scopes) {
}
public void addChanged(ChangedSecurityScheme changedSecurityScheme) {
- if (changed == null) {
- changed = new ArrayList<>();
- }
changed.add(changedSecurityScheme);
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityRequirements.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityRequirements.java
index b5e2438de..61e6d7f02 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityRequirements.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityRequirements.java
@@ -5,12 +5,14 @@
import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
import org.apache.commons.collections4.CollectionUtils;
/** Created by adarsh.sharma on 06/01/18. */
@Getter
@Setter
-public class ChangedSecurityRequirements implements Changed {
+@Accessors(chain = true)
+public class ChangedSecurityRequirements implements ComposedChanged {
private List oldSecurityRequirements;
private List newSecurityRequirements;
@@ -23,17 +25,20 @@ public ChangedSecurityRequirements(
List newSecurityRequirements) {
this.oldSecurityRequirements = oldSecurityRequirements;
this.newSecurityRequirements = newSecurityRequirements;
+ this.changed = new ArrayList<>();
}
@Override
- public DiffResult isChanged() {
- if (CollectionUtils.isEmpty(missing)
- && CollectionUtils.isEmpty(increased)
- && CollectionUtils.isEmpty(changed)) {
+ public List getChangedElements() {
+ return new ArrayList<>(changed);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ if (CollectionUtils.isEmpty(missing) && CollectionUtils.isEmpty(increased)) {
return DiffResult.NO_CHANGES;
}
- if (CollectionUtils.isEmpty(missing)
- && (changed == null || changed.stream().allMatch(Changed::isCompatible))) {
+ if (CollectionUtils.isEmpty(missing)) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityScheme.java b/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityScheme.java
index 03074e32e..2afcc2d03 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityScheme.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ChangedSecurityScheme.java
@@ -1,26 +1,30 @@
package com.qdesrame.openapi.diff.model;
import com.qdesrame.openapi.diff.model.schema.ChangedExtensions;
-import com.qdesrame.openapi.diff.utils.ChangedUtils;
import io.swagger.v3.oas.models.security.SecurityScheme;
+import java.util.Arrays;
+import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
/** Created by adarsh.sharma on 11/01/18. */
@Getter
@Setter
-public class ChangedSecurityScheme implements Changed {
+@Accessors(chain = true)
+public class ChangedSecurityScheme implements ComposedChanged {
private SecurityScheme oldSecurityScheme;
private SecurityScheme newSecurityScheme;
+
private boolean changedType;
- private boolean changedDescription;
private boolean changedIn;
private boolean changedScheme;
private boolean changedBearerFormat;
- private ChangedOAuthFlows changedOAuthFlows;
private boolean changedOpenIdConnectUrl;
private ListDiff changedScopes;
- private ChangedExtensions changedExtensions;
+ private ChangedMetadata description;
+ private ChangedOAuthFlows oAuthFlows;
+ private ChangedExtensions extensions;
public ChangedSecurityScheme(SecurityScheme oldSecurityScheme, SecurityScheme newSecurityScheme) {
this.oldSecurityScheme = oldSecurityScheme;
@@ -28,26 +32,26 @@ public ChangedSecurityScheme(SecurityScheme oldSecurityScheme, SecurityScheme ne
}
@Override
- public DiffResult isChanged() {
+ public List getChangedElements() {
+ return Arrays.asList(description, oAuthFlows, extensions);
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
if (!changedType
- && !changedDescription
&& !changedIn
&& !changedScheme
&& !changedBearerFormat
- && ChangedUtils.isUnchanged(changedOAuthFlows)
&& !changedOpenIdConnectUrl
- && (changedScopes == null || changedScopes.isUnchanged())
- && ChangedUtils.isUnchanged(changedExtensions)) {
+ && (changedScopes == null || changedScopes.isUnchanged())) {
return DiffResult.NO_CHANGES;
}
if (!changedType
&& !changedIn
&& !changedScheme
&& !changedBearerFormat
- && ChangedUtils.isCompatible(changedOAuthFlows)
&& !changedOpenIdConnectUrl
- && (changedScopes == null || changedScopes.getIncreased().isEmpty())
- && ChangedUtils.isCompatible(changedExtensions)) {
+ && (changedScopes == null || changedScopes.getIncreased().isEmpty())) {
return DiffResult.COMPATIBLE;
}
return DiffResult.INCOMPATIBLE;
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/CompatibleChanged.java b/src/main/java/com/qdesrame/openapi/diff/model/CompatibleChanged.java
deleted file mode 100644
index 38d942b10..000000000
--- a/src/main/java/com/qdesrame/openapi/diff/model/CompatibleChanged.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.qdesrame.openapi.diff.model;
-
-public class CompatibleChanged implements Changed {
- private final Object value;
-
- private CompatibleChanged(Object value) {
- this.value = value;
- }
-
- public static CompatibleChanged compatible(Change change) {
- return new CompatibleChanged(change);
- }
-
- @Override
- public DiffResult isChanged() {
- return DiffResult.COMPATIBLE;
- }
-
- public Object getValue() {
- return value;
- }
-}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/ComposedChanged.java b/src/main/java/com/qdesrame/openapi/diff/model/ComposedChanged.java
new file mode 100644
index 000000000..faaf7ed61
--- /dev/null
+++ b/src/main/java/com/qdesrame/openapi/diff/model/ComposedChanged.java
@@ -0,0 +1,32 @@
+package com.qdesrame.openapi.diff.model;
+
+import java.util.List;
+import java.util.Objects;
+import javax.validation.constraints.NotNull;
+
+public interface ComposedChanged extends Changed {
+
+ @NotNull
+ List getChangedElements();
+
+ @NotNull
+ DiffResult isCoreChanged();
+
+ @Override
+ default DiffResult isChanged() {
+ DiffResult elementsResult =
+ DiffResult.fromWeight(
+ getChangedElements()
+ .stream()
+ .filter(Objects::nonNull)
+ .map(Changed::isChanged)
+ .mapToInt(diffResult -> diffResult.getWeight())
+ .max()
+ .orElseGet(() -> 0));
+ if (isCoreChanged().getWeight() > elementsResult.getWeight()) {
+ return isCoreChanged();
+ } else {
+ return elementsResult;
+ }
+ }
+}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/DiffResult.java b/src/main/java/com/qdesrame/openapi/diff/model/DiffResult.java
index 680cb4347..7b7f66b55 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/DiffResult.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/DiffResult.java
@@ -1,15 +1,33 @@
package com.qdesrame.openapi.diff.model;
+import static java.lang.String.format;
+
public enum DiffResult {
- NO_CHANGES("no_changes"),
- COMPATIBLE("compatible"),
- INCOMPATIBLE("incompatible"),
- UNKNOWN("unknown");
+ NO_CHANGES("no_changes", 0),
+ METADATA("metadata", 1),
+ COMPATIBLE("compatible", 2),
+ UNKNOWN("unknown", 3),
+ INCOMPATIBLE("incompatible", 4);
private final String value;
+ private final int weight;
- DiffResult(String value) {
+ DiffResult(String value, int weight) {
this.value = value;
+ this.weight = weight;
+ }
+
+ public static DiffResult fromWeight(int weight) {
+ for (DiffResult result : DiffResult.values()) {
+ if (weight == result.getWeight()) {
+ return result;
+ }
+ }
+ throw new IllegalArgumentException(format("Invalid weight from DiffResult: %d", weight));
+ }
+
+ public int getWeight() {
+ return this.weight;
}
public String getValue() {
@@ -17,18 +35,22 @@ public String getValue() {
}
public boolean isUnchanged() {
- return this.equals(NO_CHANGES);
+ return this.weight == 0;
}
public boolean isDifferent() {
- return !this.equals(NO_CHANGES);
+ return this.weight > 0;
}
public boolean isIncompatible() {
- return !this.equals(NO_CHANGES) && !this.equals(COMPATIBLE);
+ return this.weight > 2;
}
public boolean isCompatible() {
- return this.equals(NO_CHANGES) || this.equals(COMPATIBLE);
+ return this.weight <= 2;
+ }
+
+ public boolean isMetaChanged() {
+ return this.weight == 1;
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/model/schema/ChangedExtensions.java b/src/main/java/com/qdesrame/openapi/diff/model/schema/ChangedExtensions.java
index 39e800202..3878babe6 100644
--- a/src/main/java/com/qdesrame/openapi/diff/model/schema/ChangedExtensions.java
+++ b/src/main/java/com/qdesrame/openapi/diff/model/schema/ChangedExtensions.java
@@ -1,16 +1,23 @@
package com.qdesrame.openapi.diff.model.schema;
import com.qdesrame.openapi.diff.model.Changed;
+import com.qdesrame.openapi.diff.model.ComposedChanged;
import com.qdesrame.openapi.diff.model.DiffContext;
import com.qdesrame.openapi.diff.model.DiffResult;
+import java.util.Collection;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import lombok.Getter;
import lombok.Setter;
+import lombok.experimental.Accessors;
@Getter
@Setter
-public class ChangedExtensions implements Changed {
+@Accessors
+public class ChangedExtensions implements ComposedChanged {
private final Map oldExtensions;
private final Map newExtensions;
private final DiffContext context;
@@ -30,13 +37,15 @@ public ChangedExtensions(
}
@Override
- public DiffResult isChanged() {
- if (increased.isEmpty() && missing.isEmpty() && changed.isEmpty()) {
- return DiffResult.NO_CHANGES;
- }
- if (changed.values().stream().allMatch(Changed::isCompatible)) {
- return DiffResult.COMPATIBLE;
- }
- return DiffResult.INCOMPATIBLE;
+ public List getChangedElements() {
+ return Stream.of(increased, missing, changed)
+ .map(Map::values)
+ .flatMap(Collection::stream)
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public DiffResult isCoreChanged() {
+ return DiffResult.NO_CHANGES;
}
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/output/ConsoleRender.java b/src/main/java/com/qdesrame/openapi/diff/output/ConsoleRender.java
index a74a68b67..6cbd9e6be 100644
--- a/src/main/java/com/qdesrame/openapi/diff/output/ConsoleRender.java
+++ b/src/main/java/com/qdesrame/openapi/diff/output/ConsoleRender.java
@@ -1,10 +1,13 @@
package com.qdesrame.openapi.diff.output;
+import static com.qdesrame.openapi.diff.model.Changed.result;
+
import com.qdesrame.openapi.diff.model.*;
import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.responses.ApiResponse;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.lang3.StringUtils;
@@ -58,29 +61,30 @@ private String ol_changed(List operations) {
for (ChangedOperation operation : operations) {
String pathUrl = operation.getPathUrl();
String method = operation.getHttpMethod().toString();
- String desc = operation.getSummary();
+ String desc =
+ Optional.ofNullable(operation.getSummary()).map(ChangedMetadata::getRight).orElse("");
StringBuilder ul_detail = new StringBuilder();
- if (operation.isChangedParam().isDifferent()) {
+ if (result(operation.getParameters()).isDifferent()) {
ul_detail
.append(StringUtils.repeat(' ', 2))
.append("Parameter:")
.append(System.lineSeparator())
- .append(ul_param(operation.getChangedParameters()));
+ .append(ul_param(operation.getParameters()));
}
- if (operation.isChangedRequest().isDifferent()) {
+ if (operation.resultRequestBody().isDifferent()) {
ul_detail
.append(StringUtils.repeat(' ', 2))
.append("Request:")
.append(System.lineSeparator())
- .append(ul_content(operation.getChangedRequestBody().getChangedContent(), true));
+ .append(ul_content(operation.getRequestBody().getContent(), true));
}
- if (operation.isChangedResponse().isDifferent()) {
+ if (operation.resultApiResponses().isDifferent()) {
ul_detail
.append(StringUtils.repeat(' ', 2))
.append("Return Type:")
.append(System.lineSeparator())
- .append(ul_response(operation.getChangedApiResponse()));
+ .append(ul_response(operation.getApiResponses()));
}
sb.append(itemEndpoint(method, pathUrl, desc)).append(ul_detail);
}
@@ -88,9 +92,9 @@ private String ol_changed(List operations) {
}
private String ul_response(ChangedApiResponse changedApiResponse) {
- Map addResponses = changedApiResponse.getAddResponses();
- Map delResponses = changedApiResponse.getMissingResponses();
- Map changedResponses = changedApiResponse.getChangedResponses();
+ Map addResponses = changedApiResponse.getIncreased();
+ Map delResponses = changedApiResponse.getMissing();
+ Map changedResponses = changedApiResponse.getChanged();
StringBuilder sb = new StringBuilder();
for (String propName : addResponses.keySet()) {
sb.append(itemResponse("Add ", propName));
@@ -124,7 +128,7 @@ private String itemChangedResponse(String title, String contentType, ChangedResp
StringBuilder sb = new StringBuilder();
sb.append(itemResponse(title, contentType));
sb.append(StringUtils.repeat(' ', 6)).append("Media types:").append(System.lineSeparator());
- sb.append(ul_content(response.getChangedContent(), false));
+ sb.append(ul_content(response.getContent(), false));
return sb.toString();
}
diff --git a/src/main/java/com/qdesrame/openapi/diff/output/HtmlRender.java b/src/main/java/com/qdesrame/openapi/diff/output/HtmlRender.java
index bc4b19896..b2c0d3516 100644
--- a/src/main/java/com/qdesrame/openapi/diff/output/HtmlRender.java
+++ b/src/main/java/com/qdesrame/openapi/diff/output/HtmlRender.java
@@ -1,5 +1,6 @@
package com.qdesrame.openapi.diff.output;
+import static com.qdesrame.openapi.diff.model.Changed.result;
import static j2html.TagCreator.*;
import com.qdesrame.openapi.diff.model.*;
@@ -9,6 +10,7 @@
import j2html.tags.ContainerTag;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
public class HtmlRender implements Render {
@@ -116,22 +118,25 @@ private ContainerTag ol_changed(List changedOperations) {
for (ChangedOperation changedOperation : changedOperations) {
String pathUrl = changedOperation.getPathUrl();
String method = changedOperation.getHttpMethod().toString();
- String desc = changedOperation.getSummary();
+ String desc =
+ Optional.ofNullable(changedOperation.getSummary())
+ .map(ChangedMetadata::getRight)
+ .orElse("");
ContainerTag ul_detail = ul().withClass("detail");
- if (changedOperation.isChangedParam().isDifferent()) {
+ if (result(changedOperation.getParameters()).isDifferent()) {
ul_detail.with(
- li().with(h3("Parameters")).with(ul_param(changedOperation.getChangedParameters())));
+ li().with(h3("Parameters")).with(ul_param(changedOperation.getParameters())));
}
- if (changedOperation.isChangedRequest().isDifferent()) {
+ if (changedOperation.resultRequestBody().isDifferent()) {
ul_detail.with(
li().with(h3("Request"))
- .with(ul_request(changedOperation.getChangedRequestBody().getChangedContent())));
+ .with(ul_request(changedOperation.getRequestBody().getContent())));
} else {
}
- if (changedOperation.isChangedResponse().isDifferent()) {
+ if (changedOperation.resultApiResponses().isDifferent()) {
ul_detail.with(
- li().with(h3("Response")).with(ul_response(changedOperation.getChangedApiResponse())));
+ li().with(h3("Response")).with(ul_response(changedOperation.getApiResponses())));
}
ol.with(
li().with(span(method).withClass(method))
@@ -143,9 +148,9 @@ private ContainerTag ol_changed(List changedOperations) {
}
private ContainerTag ul_response(ChangedApiResponse changedApiResponse) {
- Map addResponses = changedApiResponse.getAddResponses();
- Map delResponses = changedApiResponse.getMissingResponses();
- Map changedResponses = changedApiResponse.getChangedResponses();
+ Map addResponses = changedApiResponse.getIncreased();
+ Map delResponses = changedApiResponse.getMissing();
+ Map changedResponses = changedApiResponse.getChanged();
ContainerTag ul = ul().withClass("change response");
for (String propName : addResponses.keySet()) {
ul.with(li_addResponse(propName, addResponses.get(propName)));
@@ -181,7 +186,7 @@ private ContainerTag li_changedResponse(String name, ChangedResponse response) {
? ""
: ("//" + response.getNewApiResponse().getDescription()))
.withClass("comment"))
- .with(ul_request(response.getChangedContent()));
+ .with(ul_request(response.getContent()));
}
private ContainerTag ul_request(ChangedContent changedContent) {
@@ -210,7 +215,7 @@ private ContainerTag li_missingRequest(String name, MediaType request) {
private ContainerTag li_changedRequest(String name, ChangedMediaType request) {
return li().withText(String.format("Changed body: '%s'", name))
- .with(div_changedSchema(request.getChangedSchema()));
+ .with(div_changedSchema(request.getSchema()));
}
private ContainerTag div_changedSchema(ChangedSchema schema) {
@@ -270,7 +275,7 @@ private ContainerTag li_changedParam(ChangedParameter changeParam) {
return li_deprecatedParam(changeParam);
}
boolean changeRequired = changeParam.isChangeRequired();
- boolean changeDescription = changeParam.isChangeDescription();
+ boolean changeDescription = changeParam.getDescription().isDifferent();
Parameter rightParam = changeParam.getNewParameter();
Parameter leftParam = changeParam.getNewParameter();
ContainerTag li = li().withText(changeParam.getName() + " in " + changeParam.getIn());
diff --git a/src/main/java/com/qdesrame/openapi/diff/output/MarkdownRender.java b/src/main/java/com/qdesrame/openapi/diff/output/MarkdownRender.java
index ddc9b9d5a..5a599abdc 100644
--- a/src/main/java/com/qdesrame/openapi/diff/output/MarkdownRender.java
+++ b/src/main/java/com/qdesrame/openapi/diff/output/MarkdownRender.java
@@ -1,5 +1,7 @@
package com.qdesrame.openapi.diff.output;
+import static com.qdesrame.openapi.diff.model.Changed.result;
+import static com.qdesrame.openapi.diff.utils.ChangedUtils.isUnchanged;
import static java.lang.String.format;
import com.qdesrame.openapi.diff.model.*;
@@ -14,6 +16,8 @@
import io.swagger.v3.oas.models.responses.ApiResponse;
import java.util.List;
import java.util.Map;
+import lombok.Getter;
+import lombok.Setter;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -36,6 +40,12 @@ public class MarkdownRender implements Render {
protected final String HR = "---\n";
protected ChangedOpenApi diff;
+ /**
+ * A paramater which indicates whether or not metadata (summary and metadata) changes should be
+ * logged in the changelog file.
+ */
+ @Getter @Setter protected boolean showChangedMetadata;
+
public MarkdownRender() {}
public String render(ChangedOpenApi diff) {
@@ -61,7 +71,11 @@ protected String listEndpoints(String title, List endpoints) {
}
protected String itemEndpoint(String method, String path, String summary) {
- return H5 + CODE + method + CODE + " " + path + "\n\n" + description(summary) + "\n";
+ return H5 + CODE + method + CODE + " " + path + "\n\n" + metadata(summary) + "\n";
+ }
+
+ protected String itemEndpoint(String method, String path, ChangedMetadata summary) {
+ return H5 + CODE + method + CODE + " " + path + "\n\n" + metadata("summary", summary) + "\n";
}
protected String titleH5(String title) {
@@ -82,20 +96,20 @@ protected String listEndpoints(List changedOperations) {
operation.getHttpMethod().toString(),
operation.getPathUrl(),
operation.getSummary()));
- if (operation.isChangedParam().isDifferent()) {
+ if (result(operation.getParameters()).isDifferent()) {
details
.append(titleH5("Parameters:"))
- .append(parameters(operation.getChangedParameters()));
+ .append(parameters(operation.getParameters()));
}
- if (operation.isChangedRequest().isDifferent()) {
+ if (operation.resultRequestBody().isDifferent()) {
details
.append(titleH5("Request:"))
- .append(bodyContent(operation.getChangedRequestBody().getChangedContent()));
+ .append(bodyContent(operation.getRequestBody().getContent()));
}
- if (operation.isChangedResponse().isDifferent()) {
+ if (operation.resultApiResponses().isDifferent()) {
details
.append(titleH5("Return Type:"))
- .append(responses(operation.getChangedApiResponse()));
+ .append(responses(operation.getApiResponses()));
}
return details.toString();
})
@@ -105,10 +119,10 @@ protected String listEndpoints(List changedOperations) {
protected String responses(ChangedApiResponse changedApiResponse) {
StringBuilder sb = new StringBuilder("\n");
- sb.append(listResponse("New response", changedApiResponse.getAddResponses()));
- sb.append(listResponse("Deleted response", changedApiResponse.getMissingResponses()));
+ sb.append(listResponse("New response", changedApiResponse.getIncreased()));
+ sb.append(listResponse("Deleted response", changedApiResponse.getMissing()));
changedApiResponse
- .getChangedResponses()
+ .getChanged()
.entrySet()
.stream()
.map(e -> this.itemResponse(e.getKey(), e.getValue()))
@@ -139,9 +153,9 @@ protected String itemResponse(String code, ChangedResponse response) {
null == response.getNewApiResponse()
? ""
: response.getNewApiResponse().getDescription()));
- sb.append(headers(response.getChangedHeaders()));
- if (response.getChangedContent() != null) {
- sb.append(this.bodyContent(LI, response.getChangedContent()));
+ sb.append(headers(response.getHeaders()));
+ if (response.getContent() != null) {
+ sb.append(this.bodyContent(LI, response.getContent()));
}
return sb.toString();
}
@@ -153,7 +167,7 @@ protected String itemResponse(String title, String code, String description) {
status = HttpStatus.getStatusText(Integer.parseInt(code));
}
sb.append(format("%s : **%s %s**\n", title, code, status));
- sb.append(description(description));
+ sb.append(metadata(description));
return sb.toString();
}
@@ -194,7 +208,7 @@ protected String itemHeader(String code, ChangedHeader header) {
}
protected String itemHeader(String title, String mediaType, String description) {
- return format("%s : `%s`\n\n", title, mediaType) + description(description) + '\n';
+ return format("%s : `%s`\n\n", title, mediaType) + metadata(description) + '\n';
}
protected String bodyContent(String prefix, ChangedContent changedContent) {
@@ -239,8 +253,7 @@ protected String itemContent(String title, String mediaType, MediaType content)
}
protected String itemContent(int deepness, String mediaType, ChangedMediaType content) {
- return itemContent("Changed content type", mediaType)
- + schema(deepness, content.getChangedSchema());
+ return itemContent("Changed content type", mediaType) + schema(deepness, content.getSchema());
}
protected String schema(ChangedSchema schema) {
@@ -250,18 +263,18 @@ protected String schema(ChangedSchema schema) {
protected String oneOfSchema(int deepness, ChangedOneOfSchema schema, String discriminator) {
StringBuilder sb = new StringBuilder();
schema
- .getMissingMapping()
+ .getMissing()
.keySet()
.forEach(
key -> sb.append(format("%sDeleted '%s' %s\n", indent(deepness), key, discriminator)));
schema
- .getIncreasedMapping()
+ .getIncreased()
.forEach(
(key, sub) ->
sb.append(format("%sAdded '%s' %s:\n", indent(deepness), key, discriminator))
.append(schema(deepness, sub, schema.getContext())));
schema
- .getChangedMapping()
+ .getChanged()
.forEach(
(key, sub) ->
sb.append(format("%sUpdated `%s` %s:\n", indent(deepness), key, discriminator))
@@ -284,12 +297,12 @@ protected String schema(int deepness, ChangedSchema schema) {
if (schema.isDiscriminatorPropertyChanged()) {
LOGGER.debug("Discriminator property changed");
}
- if (schema.getChangedOneOfSchema() != null) {
+ if (schema.getOneOfSchema() != null) {
String discriminator =
schema.getNewSchema().getDiscriminator() != null
? schema.getNewSchema().getDiscriminator().getPropertyName()
: "";
- sb.append(oneOfSchema(deepness, schema.getChangedOneOfSchema(), discriminator));
+ sb.append(oneOfSchema(deepness, schema.getOneOfSchema(), discriminator));
}
if (schema.getChangeRequired() != null) {
sb.append(
@@ -297,8 +310,8 @@ protected String schema(int deepness, ChangedSchema schema) {
sb.append(
required(deepness, "New optional properties", schema.getChangeRequired().getMissing()));
}
- if (schema.getChangedItems() != null) {
- sb.append(items(deepness, schema.getChangedItems()));
+ if (schema.getItems() != null) {
+ sb.append(items(deepness, schema.getItems()));
}
sb.append(listDiff(deepness, "enum", schema.getChangeEnum()));
sb.append(
@@ -374,7 +387,7 @@ protected String items(int deepness, Schema schema, DiffContext context) {
protected String items(int deepness, String title, String type, String description) {
return format(
"%s%s (%s):" + "\n%s\n",
- indent(deepness), title, type, description(indent(deepness + 1), description));
+ indent(deepness), title, type, metadata(indent(deepness + 1), description));
}
protected String properties(
@@ -416,7 +429,7 @@ protected String property(
int deepness, String title, String name, String type, String description) {
return format(
"%s* %s `%s` (%s)\n%s\n",
- indent(deepness), title, name, type, description(indent(deepness + 1), description));
+ indent(deepness), title, name, type, metadata(indent(deepness + 1), description));
}
protected String listDiff(int deepness, String name, ListDiff listDiff) {
@@ -462,7 +475,7 @@ protected String itemParameter(String title, String name, String in, String desc
+ " in "
+ code(in)
+ '\n'
- + description(description)
+ + metadata(description)
+ '\n';
}
@@ -480,20 +493,50 @@ protected String code(String string) {
return CODE + string + CODE;
}
- protected String description(String description) {
- return description("", description);
+ protected String metadata(String name, ChangedMetadata changedMetadata) {
+ return metadata("", name, changedMetadata);
}
- protected String description(String beginning, String description) {
- String result = "";
- if (StringUtils.isBlank(description)) {
- description = "";
+ protected String metadata(String beginning, String name, ChangedMetadata changedMetadata) {
+ if (changedMetadata == null) {
+ return "";
}
- String blockquote = beginning + BLOCKQUOTE;
- if (!description.equals("")) {
- result = blockquote + description.trim().replaceAll("\n", "\n" + blockquote) + '\n';
+ if (isUnchanged(changedMetadata) && showChangedMetadata) {
+ return format(
+ "Changed %s:\n%s\nto:\n%s\n\n",
+ name,
+ metadata(beginning, changedMetadata.getLeft()),
+ metadata(beginning, changedMetadata.getRight()));
+ } else {
+ return metadata(beginning, name, changedMetadata.getRight());
}
- return result;
+ }
+
+ protected String metadata(String metadata) {
+ return metadata("", metadata);
+ }
+
+ protected String metadata(String beginning, String name, String metadata) {
+ if (StringUtils.isBlank(metadata)) {
+ return "";
+ }
+ return blockquote(beginning, metadata);
+ }
+
+ protected String metadata(String beginning, String metadata) {
+ if (StringUtils.isBlank(metadata)) {
+ return "";
+ }
+ return blockquote(beginning, metadata);
+ }
+
+ protected String blockquote(String beginning) {
+ return beginning + BLOCKQUOTE;
+ }
+
+ protected String blockquote(String beginning, String text) {
+ String blockquote = blockquote(beginning);
+ return blockquote + text.trim().replaceAll("\n", "\n" + blockquote) + '\n';
}
protected String type(Schema schema) {
diff --git a/src/test/java/com/qdesrame/openapi/test/AddPropDiffTest.java b/src/test/java/com/qdesrame/openapi/test/AddPropDiffTest.java
index f827c60db..68d939664 100644
--- a/src/test/java/com/qdesrame/openapi/test/AddPropDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/AddPropDiffTest.java
@@ -3,7 +3,7 @@
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiAreEquals;
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiBackwardIncompatible;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 26/02/18. */
public class AddPropDiffTest {
diff --git a/src/test/java/com/qdesrame/openapi/test/AllOfDiffTest.java b/src/test/java/com/qdesrame/openapi/test/AllOfDiffTest.java
index 122a8a823..b72e60dd2 100644
--- a/src/test/java/com/qdesrame/openapi/test/AllOfDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/AllOfDiffTest.java
@@ -3,7 +3,7 @@
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiAreEquals;
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiChangedEndpoints;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 19/12/17. */
public class AllOfDiffTest {
diff --git a/src/test/java/com/qdesrame/openapi/test/ArrayDiffTest.java b/src/test/java/com/qdesrame/openapi/test/ArrayDiffTest.java
index b5fe7b824..56a64cd24 100644
--- a/src/test/java/com/qdesrame/openapi/test/ArrayDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/ArrayDiffTest.java
@@ -3,7 +3,7 @@
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiAreEquals;
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiChangedEndpoints;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class ArrayDiffTest {
diff --git a/src/test/java/com/qdesrame/openapi/test/BackwardCompatibilityTest.java b/src/test/java/com/qdesrame/openapi/test/BackwardCompatibilityTest.java
index c1fc41c3d..cb0ca2e1c 100644
--- a/src/test/java/com/qdesrame/openapi/test/BackwardCompatibilityTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/BackwardCompatibilityTest.java
@@ -3,7 +3,7 @@
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiBackwardCompatible;
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiBackwardIncompatible;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 24/12/17. */
public class BackwardCompatibilityTest {
diff --git a/src/test/java/com/qdesrame/openapi/test/ContentDiffTest.java b/src/test/java/com/qdesrame/openapi/test/ContentDiffTest.java
index 9023a640f..f075124f8 100644
--- a/src/test/java/com/qdesrame/openapi/test/ContentDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/ContentDiffTest.java
@@ -1,9 +1,10 @@
package com.qdesrame.openapi.test;
+import static org.assertj.core.api.Assertions.assertThat;
+
import com.qdesrame.openapi.diff.OpenApiCompare;
import com.qdesrame.openapi.diff.model.ChangedOpenApi;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class ContentDiffTest {
@@ -13,18 +14,18 @@ public class ContentDiffTest {
@Test
public void testContentDiffWithOneEmptyMediaType() {
ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2);
- Assert.assertTrue(changedOpenApi.isIncompatible());
+ assertThat(changedOpenApi.isIncompatible()).isTrue();
}
@Test
public void testContentDiffWithEmptyMediaTypes() {
ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC1);
- Assert.assertTrue(changedOpenApi.isUnchanged());
+ assertThat(changedOpenApi.isUnchanged()).isTrue();
}
@Test
public void testSameContentDiff() {
ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC2, OPENAPI_DOC2);
- Assert.assertTrue(changedOpenApi.isUnchanged());
+ assertThat(changedOpenApi.isUnchanged()).isTrue();
}
}
diff --git a/src/test/java/com/qdesrame/openapi/test/OneOfDiffTest.java b/src/test/java/com/qdesrame/openapi/test/OneOfDiffTest.java
index fc12d10ba..5f6779454 100644
--- a/src/test/java/com/qdesrame/openapi/test/OneOfDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/OneOfDiffTest.java
@@ -4,7 +4,7 @@
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiBackwardIncompatible;
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiChangedEndpoints;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 19/12/17. */
public class OneOfDiffTest {
diff --git a/src/test/java/com/qdesrame/openapi/test/OpenApiDiffTest.java b/src/test/java/com/qdesrame/openapi/test/OpenApiDiffTest.java
index 6a4f2a339..379737bc3 100644
--- a/src/test/java/com/qdesrame/openapi/test/OpenApiDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/OpenApiDiffTest.java
@@ -1,6 +1,7 @@
package com.qdesrame.openapi.test;
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiAreEquals;
+import static org.assertj.core.api.Assertions.assertThat;
import com.qdesrame.openapi.diff.OpenApiCompare;
import com.qdesrame.openapi.diff.model.ChangedOpenApi;
@@ -11,15 +12,14 @@
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class OpenApiDiffTest {
+ final String SWAGGER_V2_HTTP = "http://petstore.swagger.io/v2/swagger.json";
private final String OPENAPI_DOC1 = "petstore_v2_1.yaml";
private final String OPENAPI_DOC2 = "petstore_v2_2.yaml";
private final String OPENAPI_EMPTY_DOC = "petstore_v2_empty.yaml";
- final String SWAGGER_V2_HTTP = "http://petstore.swagger.io/v2/swagger.json";
@Test
public void testEqual() {
@@ -44,9 +44,9 @@ public void testNewApi() {
} catch (IOException e) {
e.printStackTrace();
}
- Assert.assertTrue(newEndpoints.size() > 0);
- Assert.assertTrue(missingEndpoints.isEmpty());
- Assert.assertTrue(changedEndPoints.isEmpty());
+ assertThat(newEndpoints).isNotEmpty();
+ assertThat(missingEndpoints).isEmpty();
+ assertThat(changedEndPoints).isEmpty();
}
@Test
@@ -67,9 +67,9 @@ public void testDeprecatedApi() {
} catch (IOException e) {
e.printStackTrace();
}
- Assert.assertTrue(newEndpoints.isEmpty());
- Assert.assertTrue(missingEndpoints.size() > 0);
- Assert.assertTrue(changedEndPoints.isEmpty());
+ assertThat(newEndpoints).isEmpty();
+ assertThat(missingEndpoints).isNotEmpty();
+ assertThat(changedEndPoints).isEmpty();
}
@Test
@@ -87,7 +87,7 @@ public void testDiff() {
} catch (IOException e) {
e.printStackTrace();
}
- Assert.assertFalse(changedEndPoints.isEmpty());
+ assertThat(changedEndPoints).isNotEmpty();
}
@Test
diff --git a/src/test/java/com/qdesrame/openapi/test/ParameterDiffTest.java b/src/test/java/com/qdesrame/openapi/test/ParameterDiffTest.java
index f79a40898..cc054b542 100644
--- a/src/test/java/com/qdesrame/openapi/test/ParameterDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/ParameterDiffTest.java
@@ -2,7 +2,7 @@
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiChangedEndpoints;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 03/01/18. */
public class ParameterDiffTest {
diff --git a/src/test/java/com/qdesrame/openapi/test/PathDiffTest.java b/src/test/java/com/qdesrame/openapi/test/PathDiffTest.java
index 66d653a64..5422f2057 100644
--- a/src/test/java/com/qdesrame/openapi/test/PathDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/PathDiffTest.java
@@ -1,8 +1,9 @@
package com.qdesrame.openapi.test;
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiAreEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class PathDiffTest {
@@ -15,8 +16,9 @@ public void testEqual() {
assertOpenApiAreEquals(OPENAPI_PATH1, OPENAPI_PATH2);
}
- @Test(expected = IllegalArgumentException.class)
+ @Test
public void testMultiplePathWithSameSignature() {
- assertOpenApiAreEquals(OPENAPI_PATH3, OPENAPI_PATH3);
+ assertThrows(
+ IllegalArgumentException.class, () -> assertOpenApiAreEquals(OPENAPI_PATH3, OPENAPI_PATH3));
}
}
diff --git a/src/test/java/com/qdesrame/openapi/test/RecursiveSchemaTest.java b/src/test/java/com/qdesrame/openapi/test/RecursiveSchemaTest.java
index c9c6f1a3d..9e70469af 100644
--- a/src/test/java/com/qdesrame/openapi/test/RecursiveSchemaTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/RecursiveSchemaTest.java
@@ -3,7 +3,7 @@
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiAreEquals;
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiBackwardIncompatible;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 13/02/18. */
public class RecursiveSchemaTest {
diff --git a/src/test/java/com/qdesrame/openapi/test/ReferenceDiffCacheTest.java b/src/test/java/com/qdesrame/openapi/test/ReferenceDiffCacheTest.java
index bfa09e005..93fe063df 100644
--- a/src/test/java/com/qdesrame/openapi/test/ReferenceDiffCacheTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/ReferenceDiffCacheTest.java
@@ -2,7 +2,7 @@
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiAreEquals;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 25/12/17. */
public class ReferenceDiffCacheTest {
diff --git a/src/test/java/com/qdesrame/openapi/test/RequestDiffTest.java b/src/test/java/com/qdesrame/openapi/test/RequestDiffTest.java
index 0e6ee442a..53de142fb 100644
--- a/src/test/java/com/qdesrame/openapi/test/RequestDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/RequestDiffTest.java
@@ -2,7 +2,7 @@
import static com.qdesrame.openapi.test.TestUtils.assertOpenApiChangedEndpoints;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 03/01/18. */
public class RequestDiffTest {
diff --git a/src/test/java/com/qdesrame/openapi/test/ResponseHeaderDiffTest.java b/src/test/java/com/qdesrame/openapi/test/ResponseHeaderDiffTest.java
index 0b6fdf74f..7a1462a46 100644
--- a/src/test/java/com/qdesrame/openapi/test/ResponseHeaderDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/ResponseHeaderDiffTest.java
@@ -1,12 +1,13 @@
package com.qdesrame.openapi.test;
+import static org.assertj.core.api.Assertions.assertThat;
+
import com.qdesrame.openapi.diff.OpenApiCompare;
import com.qdesrame.openapi.diff.model.ChangedHeaders;
import com.qdesrame.openapi.diff.model.ChangedOpenApi;
import com.qdesrame.openapi.diff.model.ChangedResponse;
import java.util.Map;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 28/12/17. */
public class ResponseHeaderDiffTest {
@@ -18,18 +19,18 @@ public class ResponseHeaderDiffTest {
public void testDiffDifferent() {
ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2);
- Assert.assertTrue(changedOpenApi.getNewEndpoints().isEmpty());
- Assert.assertTrue(changedOpenApi.getMissingEndpoints().isEmpty());
- Assert.assertTrue(changedOpenApi.getChangedOperations().size() > 0);
+ assertThat(changedOpenApi.getNewEndpoints()).isEmpty();
+ assertThat(changedOpenApi.getMissingEndpoints()).isEmpty();
+ assertThat(changedOpenApi.getChangedOperations()).isNotEmpty();
Map changedResponses =
- changedOpenApi.getChangedOperations().get(0).getChangedApiResponse().getChangedResponses();
- Assert.assertTrue(changedResponses.size() > 0);
- Assert.assertTrue(changedResponses.containsKey("200"));
- ChangedHeaders changedHeaders = changedResponses.get("200").getChangedHeaders();
- Assert.assertTrue(changedHeaders.isDifferent());
- Assert.assertTrue(changedHeaders.getChanged().size() == 1);
- Assert.assertTrue(changedHeaders.getIncreased().size() == 1);
- Assert.assertTrue(changedHeaders.getMissing().size() == 1);
+ 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);
}
}
diff --git a/src/test/java/com/qdesrame/openapi/test/SecurityDiffTest.java b/src/test/java/com/qdesrame/openapi/test/SecurityDiffTest.java
index ac7c002a5..22cf91fee 100644
--- a/src/test/java/com/qdesrame/openapi/test/SecurityDiffTest.java
+++ b/src/test/java/com/qdesrame/openapi/test/SecurityDiffTest.java
@@ -1,11 +1,12 @@
package com.qdesrame.openapi.test;
-import static org.junit.Assert.*;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import com.qdesrame.openapi.diff.OpenApiCompare;
import com.qdesrame.openapi.diff.model.*;
import io.swagger.v3.oas.models.security.SecurityRequirement;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/** Created by adarsh.sharma on 06/01/18. */
public class SecurityDiffTest {
@@ -17,7 +18,7 @@ public class SecurityDiffTest {
public void testDiffDifferent() {
ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(OPENAPI_DOC1, OPENAPI_DOC2);
- assertTrue(changedOpenApi.getChangedOperations().size() == 3);
+ assertThat(changedOpenApi.getChangedOperations().size() == 3);
ChangedOperation changedOperation1 =
changedOpenApi
@@ -26,22 +27,28 @@ public void testDiffDifferent() {
.filter(x -> x.getPathUrl().equals("/pet/{petId}"))
.findFirst()
.get();
- assertNotNull(changedOperation1);
- assertFalse(changedOperation1.isCompatible());
+ assertThat(changedOperation1).isNotNull();
+ assertThat(changedOperation1.isCompatible()).isFalse();
ChangedSecurityRequirements changedSecurityRequirements1 =
- changedOperation1.getChangedSecurityRequirements();
- assertNotNull(changedSecurityRequirements1);
- assertFalse(changedSecurityRequirements1.isCompatible());
- assertTrue(changedSecurityRequirements1.getIncreased().size() == 1);
- assertTrue(changedSecurityRequirements1.getChanged().size() == 1);
+ changedOperation1.getSecurityRequirements();
+ assertThat(changedSecurityRequirements1).isNotNull();
+ assertThat(changedSecurityRequirements1.isCompatible()).isFalse();
+ assertThat(changedSecurityRequirements1.getIncreased()).hasSize(1);
+ assertThat(changedSecurityRequirements1.getChanged()).hasSize(1);
ChangedSecurityRequirement changedSecurityRequirement1 =
changedSecurityRequirements1.getChanged().get(0);
- assertTrue(changedSecurityRequirement1.getChanged().size() == 1);
+ assertThat(changedSecurityRequirement1.getChanged()).hasSize(1);
ListDiff changedScopes1 =
changedSecurityRequirement1.getChanged().get(0).getChangedScopes();
- assertNotNull(changedScopes1);
- assertTrue(changedScopes1.getIncreased().size() == 1);
- assertTrue(changedScopes1.getIncreased().get(0).equals("read:pets"));
+ assertThat(changedScopes1)
+ .isNotNull()
+ .satisfies(
+ stringListDiff ->
+ assertThat(stringListDiff.getIncreased())
+ .hasSize(1)
+ .first()
+ .asString()
+ .isEqualTo("read:pets"));
ChangedOperation changedOperation2 =
changedOpenApi
@@ -50,24 +57,20 @@ public void testDiffDifferent() {
.filter(x -> x.getPathUrl().equals("/pet3"))
.findFirst()
.get();
- assertNotNull(changedOperation2);
- assertFalse(changedOperation2.isCompatible());
+ assertThat(changedOperation2).isNotNull();
+ assertThat(changedOperation2.isCompatible()).isFalse();
ChangedSecurityRequirements changedSecurityRequirements2 =
- changedOperation2.getChangedSecurityRequirements();
- assertNotNull(changedSecurityRequirements2);
- assertFalse(changedSecurityRequirements2.isCompatible());
- assertTrue(changedSecurityRequirements2.getChanged().size() == 1);
+ changedOperation2.getSecurityRequirements();
+ assertThat(changedSecurityRequirements2).isNotNull();
+ assertThat(changedSecurityRequirements2.isCompatible()).isFalse();
+ assertThat(changedSecurityRequirements2.getChanged()).hasSize(1);
ChangedSecurityRequirement changedSecurityRequirement2 =
changedSecurityRequirements2.getChanged().get(0);
- assertTrue(changedSecurityRequirement2.getChanged().size() == 1);
+ assertThat(changedSecurityRequirement2.getChanged()).hasSize(1);
ChangedOAuthFlow changedImplicitOAuthFlow2 =
- changedSecurityRequirement2
- .getChanged()
- .get(0)
- .getChangedOAuthFlows()
- .getChangedImplicitOAuthFlow();
- assertNotNull(changedImplicitOAuthFlow2);
- assertTrue(changedImplicitOAuthFlow2.isChangedAuthorizationUrl());
+ changedSecurityRequirement2.getChanged().get(0).getOAuthFlows().getImplicitOAuthFlow();
+ assertThat(changedImplicitOAuthFlow2).isNotNull();
+ assertThat(changedImplicitOAuthFlow2.isAuthorizationUrl()).isTrue();
ChangedOperation changedOperation3 =
changedOpenApi
@@ -76,19 +79,22 @@ public void testDiffDifferent() {
.filter(x -> x.getPathUrl().equals("/pet/findByStatus2"))
.findFirst()
.get();
- assertNotNull(changedOperation3);
- assertTrue(changedOperation3.isCompatible());
+ assertThat(changedOperation3).isNotNull();
+ assertThat(changedOperation3.isCompatible()).isTrue();
ChangedSecurityRequirements changedSecurityRequirements3 =
- changedOperation3.getChangedSecurityRequirements();
- assertNotNull(changedSecurityRequirements3);
- assertTrue(changedSecurityRequirements3.getIncreased().size() == 1);
+ changedOperation3.getSecurityRequirements();
+ assertThat(changedSecurityRequirements3).isNotNull();
+ assertThat(changedSecurityRequirements3.getIncreased()).hasSize(1);
SecurityRequirement securityRequirement3 = changedSecurityRequirements3.getIncreased().get(0);
- assertTrue(securityRequirement3.size() == 1);
- assertTrue(securityRequirement3.get("petstore_auth").size() == 2);
+ assertThat(securityRequirement3)
+ .hasSize(1)
+ .hasEntrySatisfying("petstore_auth", values -> assertThat(values).hasSize(2));
}
- @Test(expected = IllegalArgumentException.class)
+ @Test
public void testWithUnknownSecurityScheme() {
- OpenApiCompare.fromLocations(OPENAPI_DOC3, OPENAPI_DOC3);
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> OpenApiCompare.fromLocations(OPENAPI_DOC3, OPENAPI_DOC3));
}
}
diff --git a/src/test/java/com/qdesrame/openapi/test/TestUtils.java b/src/test/java/com/qdesrame/openapi/test/TestUtils.java
index a763d66f2..aaa947d14 100644
--- a/src/test/java/com/qdesrame/openapi/test/TestUtils.java
+++ b/src/test/java/com/qdesrame/openapi/test/TestUtils.java
@@ -1,10 +1,10 @@
package com.qdesrame.openapi.test;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.slf4j.LoggerFactory.getLogger;
import com.qdesrame.openapi.diff.OpenApiCompare;
import com.qdesrame.openapi.diff.model.ChangedOpenApi;
-import org.junit.Assert;
import org.slf4j.Logger;
public class TestUtils {
@@ -13,29 +13,29 @@ public class TestUtils {
public static void assertOpenApiAreEquals(String oldSpec, String newSpec) {
ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(oldSpec, newSpec);
LOG.info("Result: {}", changedOpenApi.isChanged().getValue());
- Assert.assertTrue(changedOpenApi.getNewEndpoints().isEmpty());
- Assert.assertTrue(changedOpenApi.getMissingEndpoints().isEmpty());
- Assert.assertTrue(changedOpenApi.getChangedOperations().isEmpty());
+ assertThat(changedOpenApi.getNewEndpoints()).isEmpty();
+ assertThat(changedOpenApi.getMissingEndpoints()).isEmpty();
+ assertThat(changedOpenApi.getChangedOperations()).isEmpty();
}
public static void assertOpenApiChangedEndpoints(String oldSpec, String newSpec) {
ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(oldSpec, newSpec);
LOG.info("Result: {}", changedOpenApi.isChanged().getValue());
- Assert.assertTrue(changedOpenApi.getNewEndpoints().isEmpty());
- Assert.assertTrue(changedOpenApi.getMissingEndpoints().isEmpty());
- Assert.assertTrue(changedOpenApi.getChangedOperations().size() > 0);
+ assertThat(changedOpenApi.getNewEndpoints()).isEmpty();
+ assertThat(changedOpenApi.getMissingEndpoints()).isEmpty();
+ assertThat(changedOpenApi.getChangedOperations()).isNotEmpty();
}
public static void assertOpenApiBackwardCompatible(
String oldSpec, String newSpec, boolean isDiff) {
ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(oldSpec, newSpec);
LOG.info("Result: {}", changedOpenApi.isChanged().getValue());
- Assert.assertTrue(changedOpenApi.isCompatible());
+ assertThat(changedOpenApi.isCompatible()).isTrue();
}
public static void assertOpenApiBackwardIncompatible(String oldSpec, String newSpec) {
ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations(oldSpec, newSpec);
LOG.info("Result: {}", changedOpenApi.isChanged().getValue());
- Assert.assertTrue(changedOpenApi.isIncompatible());
+ assertThat(changedOpenApi.isIncompatible()).isTrue();
}
}
diff --git a/src/test/resources/content_diff_1.yaml b/src/test/resources/content_diff_1.yaml
index 3ca5d6f7d..f51b5c5ca 100644
--- a/src/test/resources/content_diff_1.yaml
+++ b/src/test/resources/content_diff_1.yaml
@@ -2,7 +2,7 @@
openapi: "3.0.1"
info:
title: "Test title"
- description: "This is a test description"
+ description: "This is a test metadata"
termsOfService: "http://test.com"
contact:
name: "Mark Snijder"
diff --git a/src/test/resources/content_diff_2.yaml b/src/test/resources/content_diff_2.yaml
index 8a59b4c07..53d25e979 100644
--- a/src/test/resources/content_diff_2.yaml
+++ b/src/test/resources/content_diff_2.yaml
@@ -2,7 +2,7 @@
openapi: "3.0.1"
info:
title: "Test title"
- description: "This is a test description"
+ description: "This is a test metadata"
termsOfService: "http://test.com"
contact:
name: "Mark Snijder"