From ef0973c5482e785bc1355d61669ddfd95d93c669 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Sat, 14 Sep 2019 17:38:29 +0100 Subject: [PATCH] Test against latest Framework 5.1 snapshot This updates REST Docs to test against Framework's latest 5.1 snapshot. Due to a bug in the behaviour of HttpHeaders' key set [1], HeaderRemovingOperationPreprocessor has been updated to no longer use it when removing headers from a request or response prior to it being documented. [1] https://github.com/spring-projects/spring-framework/issues/22821 --- spring-restdocs-core/build.gradle | 2 +- .../HeaderRemovingOperationPreprocessor.java | 11 +++++------ spring-restdocs-mockmvc/build.gradle | 2 +- spring-restdocs-webtestclient/build.gradle | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/spring-restdocs-core/build.gradle b/spring-restdocs-core/build.gradle index 186b3405..8aac3d7a 100644 --- a/spring-restdocs-core/build.gradle +++ b/spring-restdocs-core/build.gradle @@ -67,6 +67,6 @@ test { matrixTest { springFramework { group = 'org.springframework' - versions = ['5.1.0.BUILD-SNAPSHOT'] + versions = ['5.1.10.BUILD-SNAPSHOT'] } } \ No newline at end of file diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/HeaderRemovingOperationPreprocessor.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/HeaderRemovingOperationPreprocessor.java index 4f0091ef..01710e99 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/HeaderRemovingOperationPreprocessor.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/HeaderRemovingOperationPreprocessor.java @@ -16,7 +16,8 @@ package org.springframework.restdocs.operation.preprocess; -import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; import org.springframework.http.HttpHeaders; import org.springframework.restdocs.operation.OperationRequest; @@ -55,11 +56,9 @@ class HeaderRemovingOperationPreprocessor implements OperationPreprocessor { private HttpHeaders removeHeaders(HttpHeaders originalHeaders) { HttpHeaders processedHeaders = new HttpHeaders(); - processedHeaders.putAll(originalHeaders); - Iterator headers = processedHeaders.keySet().iterator(); - while (headers.hasNext()) { - if (this.headerFilter.excludeHeader(headers.next())) { - headers.remove(); + for (Entry> header : originalHeaders.entrySet()) { + if (!this.headerFilter.excludeHeader(header.getKey())) { + processedHeaders.put(header.getKey(), header.getValue()); } } return processedHeaders; diff --git a/spring-restdocs-mockmvc/build.gradle b/spring-restdocs-mockmvc/build.gradle index 49c0f19c..85d5fb23 100644 --- a/spring-restdocs-mockmvc/build.gradle +++ b/spring-restdocs-mockmvc/build.gradle @@ -21,6 +21,6 @@ test { matrixTest { springFramework { group = 'org.springframework' - versions = ['5.1.0.BUILD-SNAPSHOT'] + versions = ['5.1.10.BUILD-SNAPSHOT'] } } \ No newline at end of file diff --git a/spring-restdocs-webtestclient/build.gradle b/spring-restdocs-webtestclient/build.gradle index ce63d379..c4eb9633 100644 --- a/spring-restdocs-webtestclient/build.gradle +++ b/spring-restdocs-webtestclient/build.gradle @@ -19,6 +19,6 @@ test { matrixTest { springFramework { group = 'org.springframework' - versions = ['5.1.0.BUILD-SNAPSHOT'] + versions = ['5.1.10.BUILD-SNAPSHOT'] } } \ No newline at end of file