Fixed support for line indentations and line endings
This commit is contained in:
@@ -107,6 +107,31 @@
|
||||
<artifactId>jsonassert</artifactId>
|
||||
<version>${jsonassert.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>rest-assured</artifactId>
|
||||
<version>${rest-assured.version}</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.codehaus.groovy</groupId>
|
||||
<artifactId>groovy</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.codehaus.groovy</groupId>
|
||||
<artifactId>groovy-xml</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>json-path</artifactId>
|
||||
<version>${rest-assured.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>xml-path</artifactId>
|
||||
<version>${rest-assured.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>spring-mock-mvc</artifactId>
|
||||
@@ -141,31 +166,6 @@
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>rest-assured</artifactId>
|
||||
<version>${rest-assured.version}</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.codehaus.groovy</groupId>
|
||||
<artifactId>groovy</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.codehaus.groovy</groupId>
|
||||
<artifactId>groovy-xml</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>json-path</artifactId>
|
||||
<version>${rest-assured.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>xml-path</artifactId>
|
||||
<version>${rest-assured.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-settings-builder</artifactId>
|
||||
|
||||
@@ -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<Cookie> 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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ class MockMvcBodyGiven implements Given {
|
||||
@Override
|
||||
public MethodVisitor<Given> apply(SingleContractMetadata metadata) {
|
||||
processInput(this.blockBuilder, metadata);
|
||||
this.blockBuilder.addEmptyLine();
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user