Skip to content

Commit d662222

Browse files
authored
Merge pull request OpenAPITools#61 from quen2404/feature/summary-description
Add support for changes in summary / description
2 parents 8dab028 + fe742a1 commit d662222

File tree

68 files changed

+942
-709
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+942
-709
lines changed

.circleci/config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ jobs:
55
working_directory: ~/openapi-diff
66

77
docker:
8-
- image: circleci/openjdk:8-jdk-browsers
8+
- image: circleci/openjdk:8-jdk-node-browsers
99

1010
steps:
1111

@@ -21,7 +21,7 @@ jobs:
2121
- ~/.m2
2222
key: openapi-diff-{{ checksum "pom.xml" }}
2323

24-
- run: mvn package
24+
- run: mvn package -X
2525

2626
- store_test_results:
2727
path: target/surefire-reports

pom.xml

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,51 @@
5353
<properties>
5454
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
5555
<project.scm.id>github</project.scm.id>
56+
<maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
57+
<junit.jupiter.version>5.1.0</junit.jupiter.version>
58+
<junit.platform.version>1.1.0</junit.platform.version>
59+
<assertj-core.version>3.10.0</assertj-core.version>
5660
</properties>
5761

5862
<dependencies>
5963
<dependency>
6064
<groupId>io.swagger.parser.v3</groupId>
6165
<artifactId>swagger-parser-v3</artifactId>
62-
<version>2.0.4</version>
66+
<version>2.0.5</version>
6367
</dependency>
6468
<dependency>
6569
<groupId>com.j2html</groupId>
6670
<artifactId>j2html</artifactId>
6771
<version>1.2.0</version>
6872
</dependency>
6973
<dependency>
70-
<groupId>junit</groupId>
71-
<artifactId>junit</artifactId>
72-
<version>4.8.2</version>
74+
<groupId>org.junit.jupiter</groupId>
75+
<artifactId>junit-jupiter-engine</artifactId>
76+
<version>${junit.jupiter.version}</version>
77+
<scope>test</scope>
78+
</dependency>
79+
<dependency>
80+
<groupId>org.junit.jupiter</groupId>
81+
<artifactId>junit-jupiter-api</artifactId>
82+
<version>${junit.jupiter.version}</version>
83+
<scope>test</scope>
84+
</dependency>
85+
<dependency>
86+
<groupId>org.junit.platform</groupId>
87+
<artifactId>junit-platform-runner</artifactId>
88+
<version>${junit.platform.version}</version>
89+
<scope>test</scope>
90+
</dependency>
91+
<dependency>
92+
<groupId>org.junit.platform</groupId>
93+
<artifactId>junit-platform-launcher</artifactId>
94+
<version>${junit.platform.version}</version>
95+
<scope>test</scope>
96+
</dependency>
97+
<dependency>
98+
<groupId>org.assertj</groupId>
99+
<artifactId>assertj-core</artifactId>
100+
<version>${assertj-core.version}</version>
73101
<scope>test</scope>
74102
</dependency>
75103
<dependency>
@@ -221,6 +249,32 @@
221249
</execution>
222250
</executions>
223251
</plugin>
252+
<plugin>
253+
<groupId>org.apache.maven.plugins</groupId>
254+
<artifactId>maven-surefire-plugin</artifactId>
255+
<version>${maven-surefire-plugin.version}</version>
256+
<configuration>
257+
<includes>
258+
<include>**/Test*.java</include>
259+
<include>**/*Test.java</include>
260+
<include>**/*Tests.java</include>
261+
<include>**/*TestCase.java</include>
262+
</includes>
263+
<useSystemClassLoader>false</useSystemClassLoader>
264+
</configuration>
265+
<dependencies>
266+
<dependency>
267+
<groupId>org.junit.platform</groupId>
268+
<artifactId>junit-platform-surefire-provider</artifactId>
269+
<version>${junit.platform.version}</version>
270+
</dependency>
271+
<dependency>
272+
<groupId>org.junit.jupiter</groupId>
273+
<artifactId>junit-jupiter-engine</artifactId>
274+
<version>${junit.jupiter.version}</version>
275+
</dependency>
276+
</dependencies>
277+
</plugin>
224278
<plugin>
225279
<groupId>com.coveo</groupId>
226280
<artifactId>fmt-maven-plugin</artifactId>

src/main/java/com/qdesrame/openapi/diff/compare/ApiResponseDiff.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ public ApiResponseDiff(OpenApiDiff openApiDiff) {
2323
public Optional<ChangedApiResponse> diff(
2424
ApiResponses left, ApiResponses right, DiffContext context) {
2525
MapKeyDiff<String, ApiResponse> responseMapKeyDiff = MapKeyDiff.diff(left, right);
26-
ChangedApiResponse changedApiResponse = new ChangedApiResponse(left, right, context);
27-
changedApiResponse.setAddResponses(responseMapKeyDiff.getIncreased());
28-
changedApiResponse.setMissingResponses(responseMapKeyDiff.getMissing());
2926
List<String> sharedResponseCodes = responseMapKeyDiff.getSharedKey();
3027
Map<String, ChangedResponse> resps = new LinkedHashMap<>();
3128
for (String responseCode : sharedResponseCodes) {
@@ -34,11 +31,15 @@ public Optional<ChangedApiResponse> diff(
3431
.diff(left.get(responseCode), right.get(responseCode), context)
3532
.ifPresent(changedResponse -> resps.put(responseCode, changedResponse));
3633
}
37-
changedApiResponse.setChangedResponses(resps);
34+
ChangedApiResponse changedApiResponse =
35+
new ChangedApiResponse(left, right, context)
36+
.setIncreased(responseMapKeyDiff.getIncreased())
37+
.setMissing(responseMapKeyDiff.getMissing())
38+
.setChanged(resps);
3839
openApiDiff
3940
.getExtensionsDiff()
4041
.diff(left.getExtensions(), right.getExtensions(), context)
41-
.ifPresent(changedApiResponse::setChangedExtensions);
42+
.ifPresent(changedApiResponse::setExtensions);
4243
return isChanged(changedApiResponse);
4344
}
4445
}

src/main/java/com/qdesrame/openapi/diff/compare/ContentDiff.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,8 @@ public boolean compare(Content left, Content right) {
2424
}
2525

2626
public Optional<ChangedContent> diff(Content left, Content right, DiffContext context) {
27-
ChangedContent changedContent = new ChangedContent(left, right, context);
2827

2928
MapKeyDiff<String, MediaType> mediaTypeDiff = MapKeyDiff.diff(left, right);
30-
changedContent.setIncreased(mediaTypeDiff.getIncreased());
31-
changedContent.setMissing(mediaTypeDiff.getMissing());
3229
List<String> sharedMediaTypes = mediaTypeDiff.getSharedKey();
3330
Map<String, ChangedMediaType> changedMediaTypes = new LinkedHashMap<>();
3431
for (String mediaTypeKey : sharedMediaTypes) {
@@ -43,12 +40,15 @@ public Optional<ChangedContent> diff(Content left, Content right, DiffContext co
4340
oldMediaType.getSchema(),
4441
newMediaType.getSchema(),
4542
context.copyWithRequired(true))
46-
.ifPresent(changedMediaType::setChangedSchema);
43+
.ifPresent(changedMediaType::setSchema);
4744
if (!isUnchanged(changedMediaType)) {
4845
changedMediaTypes.put(mediaTypeKey, changedMediaType);
4946
}
5047
}
51-
changedContent.setChanged(changedMediaTypes);
52-
return isChanged(changedContent);
48+
return isChanged(
49+
new ChangedContent(left, right, context)
50+
.setIncreased(mediaTypeDiff.getIncreased())
51+
.setMissing(mediaTypeDiff.getMissing())
52+
.setChanged(changedMediaTypes));
5353
}
5454
}

src/main/java/com/qdesrame/openapi/diff/compare/HeaderDiff.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414

1515
/** Created by adarsh.sharma on 28/12/17. */
1616
public class HeaderDiff extends ReferenceDiffCache<Header, ChangedHeader> {
17+
private static RefPointer<Header> refPointer = new RefPointer<>(RefType.HEADERS);
1718
private OpenApiDiff openApiDiff;
1819
private Components leftComponents;
1920
private Components rightComponents;
20-
private static RefPointer<Header> refPointer = new RefPointer<>(RefType.HEADERS);
2121

2222
public HeaderDiff(OpenApiDiff openApiDiff) {
2323
this.openApiDiff = openApiDiff;
@@ -41,27 +41,30 @@ protected Optional<ChangedHeader> computeDiff(
4141
left = refPointer.resolveRef(leftComponents, left, left.get$ref());
4242
right = refPointer.resolveRef(rightComponents, right, right.get$ref());
4343

44-
ChangedHeader changedHeader = new ChangedHeader(left, right, context);
45-
46-
changedHeader.setChangeDescription(
47-
!Objects.equals(left.getDescription(), right.getDescription()));
48-
changedHeader.setChangeRequired(getBooleanDiff(left.getRequired(), right.getRequired()));
49-
changedHeader.setChangeDeprecated(
50-
!Boolean.TRUE.equals(left.getDeprecated()) && Boolean.TRUE.equals(right.getDeprecated()));
51-
changedHeader.setChangeStyle(!Objects.equals(left.getStyle(), right.getStyle()));
52-
changedHeader.setChangeExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
44+
ChangedHeader changedHeader =
45+
new ChangedHeader(left, right, context)
46+
.setRequired(getBooleanDiff(left.getRequired(), right.getRequired()))
47+
.setDeprecated(
48+
!Boolean.TRUE.equals(left.getDeprecated())
49+
&& Boolean.TRUE.equals(right.getDeprecated()))
50+
.setStyle(!Objects.equals(left.getStyle(), right.getStyle()))
51+
.setExplode(getBooleanDiff(left.getExplode(), right.getExplode()));
52+
openApiDiff
53+
.getMetadataDiff()
54+
.diff(left.getDescription(), right.getDescription(), context)
55+
.ifPresent(changedHeader::setDescription);
5356
openApiDiff
5457
.getSchemaDiff()
5558
.diff(new HashSet<>(), left.getSchema(), right.getSchema(), context.copyWithRequired(true))
56-
.ifPresent(changedHeader::setChangedSchema);
59+
.ifPresent(changedHeader::setSchema);
5760
openApiDiff
5861
.getContentDiff()
5962
.diff(left.getContent(), right.getContent(), context)
60-
.ifPresent(changedHeader::setChangedContent);
63+
.ifPresent(changedHeader::setContent);
6164
openApiDiff
6265
.getExtensionsDiff()
6366
.diff(left.getExtensions(), right.getExtensions(), context)
64-
.ifPresent(changedHeader::setChangedExtensions);
67+
.ifPresent(changedHeader::setExtensions);
6568
return isChanged(changedHeader);
6669
}
6770

src/main/java/com/qdesrame/openapi/diff/compare/HeadersDiff.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ public HeadersDiff(OpenApiDiff openApiDiff) {
2121

2222
public Optional<ChangedHeaders> diff(
2323
Map<String, Header> left, Map<String, Header> right, DiffContext context) {
24-
ChangedHeaders changedHeaders = new ChangedHeaders(left, right, context);
2524
MapKeyDiff<String, Header> headerMapDiff = MapKeyDiff.diff(left, right);
26-
changedHeaders.setIncreased(headerMapDiff.getIncreased());
27-
changedHeaders.setMissing(headerMapDiff.getMissing());
2825
List<String> sharedHeaderKeys = headerMapDiff.getSharedKey();
2926

3027
Map<String, ChangedHeader> changed = new LinkedHashMap<>();
@@ -36,8 +33,10 @@ public Optional<ChangedHeaders> diff(
3633
.diff(oldHeader, newHeader, context)
3734
.ifPresent(changedHeader -> changed.put(headerKey, changedHeader));
3835
}
39-
changedHeaders.setChanged(changed);
40-
41-
return isChanged(changedHeaders);
36+
return isChanged(
37+
new ChangedHeaders(left, right, context)
38+
.setIncreased(headerMapDiff.getIncreased())
39+
.setMissing(headerMapDiff.getMissing())
40+
.setChanged(changed));
4241
}
4342
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.qdesrame.openapi.diff.compare;
2+
3+
import static com.qdesrame.openapi.diff.utils.ChangedUtils.isChanged;
4+
5+
import com.qdesrame.openapi.diff.model.ChangedMetadata;
6+
import com.qdesrame.openapi.diff.model.DiffContext;
7+
import io.swagger.v3.oas.models.Components;
8+
import java.util.Optional;
9+
10+
public class MetadataDiff {
11+
12+
private Components leftComponents;
13+
private Components rightComponents;
14+
private OpenApiDiff openApiDiff;
15+
16+
public MetadataDiff(OpenApiDiff openApiDiff) {
17+
this.openApiDiff = openApiDiff;
18+
this.leftComponents =
19+
openApiDiff.getOldSpecOpenApi() != null
20+
? openApiDiff.getOldSpecOpenApi().getComponents()
21+
: null;
22+
this.rightComponents =
23+
openApiDiff.getNewSpecOpenApi() != null
24+
? openApiDiff.getNewSpecOpenApi().getComponents()
25+
: null;
26+
}
27+
28+
public Optional<ChangedMetadata> diff(String left, String right, DiffContext context) {
29+
return isChanged(new ChangedMetadata().setLeft(left).setRight(right));
30+
}
31+
}

src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowDiff.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,16 @@ private static Map<String, Object> getExtensions(OAuthFlow oAuthFlow) {
2424
public Optional<ChangedOAuthFlow> diff(OAuthFlow left, OAuthFlow right) {
2525
ChangedOAuthFlow changedOAuthFlow = new ChangedOAuthFlow(left, right);
2626
if (left != null && right != null) {
27-
changedOAuthFlow.setChangedAuthorizationUrl(
28-
!Objects.equals(left.getAuthorizationUrl(), right.getAuthorizationUrl()));
29-
changedOAuthFlow.setChangedTokenUrl(!Objects.equals(left.getTokenUrl(), right.getTokenUrl()));
30-
changedOAuthFlow.setChangedRefreshUrl(
31-
!Objects.equals(left.getRefreshUrl(), right.getRefreshUrl()));
27+
changedOAuthFlow
28+
.setAuthorizationUrl(
29+
!Objects.equals(left.getAuthorizationUrl(), right.getAuthorizationUrl()))
30+
.setTokenUrl(!Objects.equals(left.getTokenUrl(), right.getTokenUrl()))
31+
.setRefreshUrl(!Objects.equals(left.getRefreshUrl(), right.getRefreshUrl()));
3232
}
3333
openApiDiff
3434
.getExtensionsDiff()
3535
.diff(getExtensions(left), getExtensions(right))
36-
.ifPresent(changedOAuthFlow::setChangedExtensions);
36+
.ifPresent(changedOAuthFlow::setExtensions);
3737
return isChanged(changedOAuthFlow);
3838
}
3939
}

src/main/java/com/qdesrame/openapi/diff/compare/OAuthFlowsDiff.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,24 @@ public Optional<ChangedOAuthFlows> diff(OAuthFlows left, OAuthFlows right) {
2626
openApiDiff
2727
.getOAuthFlowDiff()
2828
.diff(left.getImplicit(), right.getImplicit())
29-
.ifPresent(changedOAuthFlows::setChangedImplicitOAuthFlow);
29+
.ifPresent(changedOAuthFlows::setImplicitOAuthFlow);
3030
openApiDiff
3131
.getOAuthFlowDiff()
3232
.diff(left.getPassword(), right.getPassword())
33-
.ifPresent(changedOAuthFlows::setChangedPasswordOAuthFlow);
33+
.ifPresent(changedOAuthFlows::setPasswordOAuthFlow);
3434
openApiDiff
3535
.getOAuthFlowDiff()
3636
.diff(left.getClientCredentials(), right.getClientCredentials())
37-
.ifPresent(changedOAuthFlows::setChangedClientCredentialOAuthFlow);
37+
.ifPresent(changedOAuthFlows::setClientCredentialOAuthFlow);
3838
openApiDiff
3939
.getOAuthFlowDiff()
4040
.diff(left.getAuthorizationCode(), right.getAuthorizationCode())
41-
.ifPresent(changedOAuthFlows::setChangedAuthorizationCodeOAuthFlow);
41+
.ifPresent(changedOAuthFlows::setAuthorizationCodeOAuthFlow);
4242
}
4343
openApiDiff
4444
.getExtensionsDiff()
4545
.diff(getExtensions(left), getExtensions(right))
46-
.ifPresent(changedOAuthFlows::setChangedExtensions);
46+
.ifPresent(changedOAuthFlows::setExtensions);
4747
return isChanged(changedOAuthFlows);
4848
}
4949
}

src/main/java/com/qdesrame/openapi/diff/compare/OpenApiDiff.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ public class OpenApiDiff {
2424

2525
private static Logger logger = LoggerFactory.getLogger(OpenApiDiff.class);
2626

27-
private ChangedOpenApi changedOpenApi;
2827
private PathsDiff pathsDiff;
2928
private PathDiff pathDiff;
3029
private SchemaDiff schemaDiff;
@@ -43,6 +42,7 @@ public class OpenApiDiff {
4342
private OAuthFlowsDiff oAuthFlowsDiff;
4443
private OAuthFlowDiff oAuthFlowDiff;
4544
private ExtensionsDiff extensionsDiff;
45+
private MetadataDiff metadataDiff;
4646

4747
private OpenAPI oldSpecOpenApi;
4848
private OpenAPI newSpecOpenApi;
@@ -56,7 +56,6 @@ public class OpenApiDiff {
5656
* @param newSpecOpenApi
5757
*/
5858
private OpenApiDiff(OpenAPI oldSpecOpenApi, OpenAPI newSpecOpenApi) {
59-
this.changedOpenApi = new ChangedOpenApi();
6059
this.oldSpecOpenApi = oldSpecOpenApi;
6160
this.newSpecOpenApi = newSpecOpenApi;
6261
if (null == oldSpecOpenApi || null == newSpecOpenApi) {
@@ -88,6 +87,7 @@ private void initializeFields() {
8887
this.oAuthFlowsDiff = new OAuthFlowsDiff(this);
8988
this.oAuthFlowDiff = new OAuthFlowDiff(this);
9089
this.extensionsDiff = new ExtensionsDiff(this);
90+
this.metadataDiff = new MetadataDiff(this);
9191
}
9292

9393
private ChangedOpenApi compare() {
@@ -167,12 +167,12 @@ private void preProcess(OpenAPI openApi) {
167167
}
168168

169169
private ChangedOpenApi getChangedOpenApi() {
170-
changedOpenApi.setMissingEndpoints(missingEndpoints);
171-
changedOpenApi.setNewEndpoints(newEndpoints);
172-
changedOpenApi.setNewSpecOpenApi(newSpecOpenApi);
173-
changedOpenApi.setOldSpecOpenApi(oldSpecOpenApi);
174-
changedOpenApi.setChangedOperations(changedOperations);
175-
changedOpenApi.setChangedExtensions(changedExtensions);
176-
return changedOpenApi;
170+
return new ChangedOpenApi()
171+
.setMissingEndpoints(missingEndpoints)
172+
.setNewEndpoints(newEndpoints)
173+
.setNewSpecOpenApi(newSpecOpenApi)
174+
.setOldSpecOpenApi(oldSpecOpenApi)
175+
.setChangedOperations(changedOperations)
176+
.setChangedExtensions(changedExtensions);
177177
}
178178
}

0 commit comments

Comments
 (0)