diff --git a/spring-cloud-contract-dependencies/pom.xml b/spring-cloud-contract-dependencies/pom.xml
index 36710b1f6f..399372c36e 100644
--- a/spring-cloud-contract-dependencies/pom.xml
+++ b/spring-cloud-contract-dependencies/pom.xml
@@ -107,6 +107,31 @@
jsonassert
${jsonassert.version}
+
+ io.rest-assured
+ rest-assured
+ ${rest-assured.version}
+
+
+ org.codehaus.groovy
+ groovy
+
+
+ org.codehaus.groovy
+ groovy-xml
+
+
+
+
+ io.rest-assured
+ json-path
+ ${rest-assured.version}
+
+
+ io.rest-assured
+ xml-path
+ ${rest-assured.version}
+
io.rest-assured
spring-mock-mvc
@@ -141,31 +166,6 @@
-
- io.rest-assured
- rest-assured
- ${rest-assured.version}
-
-
- org.codehaus.groovy
- groovy
-
-
- org.codehaus.groovy
- groovy-xml
-
-
-
-
- io.rest-assured
- json-path
- ${rest-assured.version}
-
-
- io.rest-assured
- xml-path
- ${rest-assured.version}
-
org.apache.maven
maven-settings-builder
diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CookieElementProcessor.java b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CookieElementProcessor.java
index dbbcb86066..284250a5e8 100644
--- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CookieElementProcessor.java
+++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/CookieElementProcessor.java
@@ -16,8 +16,10 @@
package org.springframework.cloud.contract.verifier.builder;
+import java.util.Iterator;
import java.util.regex.Pattern;
+import org.springframework.cloud.contract.spec.internal.Cookie;
import org.springframework.cloud.contract.spec.internal.Cookies;
import org.springframework.cloud.contract.spec.internal.ExecutionProperty;
import org.springframework.cloud.contract.spec.internal.NotToEscapePattern;
@@ -32,42 +34,47 @@ interface CookieElementProcessor {
default void processCookies(SingleContractMetadata metadata) {
Response response = metadata.getContract().getResponse();
Cookies cookies = response.getCookies();
- cookies.executeForEachCookie(cookie -> processCookieElement(cookie.getKey(),
- cookie.getServerValue() instanceof NotToEscapePattern
- ? cookie.getServerValue()
- : MapConverter.getTestSideValues(cookie.getServerValue())));
- blockBuilder().addEndingIfNotPresent();
+ Iterator iterator = cookies.getEntries().iterator();
+ while (iterator.hasNext()) {
+ Cookie cookie = iterator.next();
+ String text = processCookieElement(cookie.getKey(),
+ cookie.getServerValue() instanceof NotToEscapePattern
+ ? cookie.getServerValue()
+ : MapConverter.getTestSideValues(cookie.getServerValue()));
+ if (iterator.hasNext()) {
+ blockBuilder().addLine(text).addEndingIfNotPresent();
+ }
+ else {
+ blockBuilder().addIndented(text).addEndingIfNotPresent();
+ }
+ }
}
BlockBuilder blockBuilder();
- default void processCookieElement(String property, Object value) {
+ default String processCookieElement(String property, Object value) {
if (value instanceof NotToEscapePattern) {
verifyCookieNotNull(property);
- blockBuilder()
- .addIndented(comparisonBuilder().assertThat(cookieValue(property))
- + comparisonBuilder().matches(((NotToEscapePattern) value)
- .getServerValue().pattern().replace("\\", "\\\\")));
+ return comparisonBuilder().assertThat(cookieValue(property))
+ + comparisonBuilder().matches(((NotToEscapePattern) value)
+ .getServerValue().pattern().replace("\\", "\\\\"));
}
else if (value instanceof String || value instanceof Pattern) {
verifyCookieNotNull(property);
- blockBuilder().addIndented(
- comparisonBuilder().assertThat(cookieValue(property), value));
+ return comparisonBuilder().assertThat(cookieValue(property), value);
}
else if (value instanceof Number) {
verifyCookieNotNull(property);
- blockBuilder().addIndented(
- comparisonBuilder().assertThat(cookieValue(property), value));
+ return comparisonBuilder().assertThat(cookieValue(property), value);
}
else if (value instanceof ExecutionProperty) {
verifyCookieNotNull(property);
- blockBuilder().addIndented(
- ((ExecutionProperty) value).insertValue(cookieValue(property)));
+ return ((ExecutionProperty) value).insertValue(cookieValue(property));
}
else {
// fallback
- processCookieElement(property, value.toString());
+ return processCookieElement(property, value.toString());
}
}
diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcAsyncWhen.java b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcAsyncWhen.java
index a89903c388..423c6e0503 100644
--- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcAsyncWhen.java
+++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcAsyncWhen.java
@@ -38,8 +38,13 @@ class MockMvcAsyncWhen implements When, MockMvcAcceptor {
this.blockBuilder.addIndented(".when().async()");
}
if (response.getDelay() != null) {
- this.blockBuilder.addIndented(
- ".timeout(" + response.getDelay().getServerValue() + ")");
+ String delay = ".timeout(" + response.getDelay().getServerValue() + ")";
+ if (response.getAsync()) {
+ this.blockBuilder.append(delay);
+ }
+ else {
+ this.blockBuilder.addIndented(delay);
+ }
}
return this;
}
diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcBodyGiven.java b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcBodyGiven.java
index a2caa2bb17..5e18fdb2ba 100644
--- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcBodyGiven.java
+++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcBodyGiven.java
@@ -40,7 +40,6 @@ class MockMvcBodyGiven implements Given {
@Override
public MethodVisitor apply(SingleContractMetadata metadata) {
processInput(this.blockBuilder, metadata);
- this.blockBuilder.addEmptyLine();
return this;
}
diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java
index 387dc30fba..1781623966 100644
--- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java
+++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RestAssuredGiven.java
@@ -56,6 +56,7 @@ class RestAssuredGiven implements Given, BodyMethodVisitor {
startBodyBlock(this.blockBuilder, "given:");
addRequestGivenLine(singleContractMetadata);
indentedBodyBlock(this.blockBuilder, this.bodyGivens, singleContractMetadata);
+ this.blockBuilder.addEmptyLine();
return this;
}