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; }