Fixed support for line indentations and line endings

This commit is contained in:
Marcin Grzejszczak
2019-07-09 17:47:43 +02:00
parent f48895c189
commit 7f351f8b80
5 changed files with 57 additions and 45 deletions

View File

@@ -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>

View File

@@ -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());
}
}

View File

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

View File

@@ -40,7 +40,6 @@ class MockMvcBodyGiven implements Given {
@Override
public MethodVisitor<Given> apply(SingleContractMetadata metadata) {
processInput(this.blockBuilder, metadata);
this.blockBuilder.addEmptyLine();
return this;
}

View File

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