Fixed reactor to 2020.0.0-SNAPSHOT

This commit is contained in:
Marcin Grzejszczak
2020-08-24 10:53:29 +02:00
parent 883dc6a8ed
commit 8f12bc2ec0
7 changed files with 85 additions and 60 deletions

View File

@@ -45,6 +45,7 @@
<jgit.version>5.5.1.201910021850-r</jgit.version>
<javax-inject.version>1</javax-inject.version>
<mockito.version>3.4.6</mockito.version>
<reactor.version>2020.0.0-SNAPSHOT</reactor.version>
<junit-platform.version>1.3.2</junit-platform.version>
<junit-vintage.version>5.6.2</junit-vintage.version>
@@ -110,6 +111,13 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-bom</artifactId>
<version>${reactor.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>

View File

@@ -49,25 +49,35 @@ public class WireMockToDslConverter {
private static final JsonPointer PRIORITY_POINTER = JsonPointer.compile("/priority");
private static final JsonPointer REQUEST_METHOD_POINTER = JsonPointer.compile("/request/method");
private static final JsonPointer REQUEST_METHOD_POINTER = JsonPointer
.compile("/request/method");
private static final JsonPointer REQUEST_URL_POINTER = JsonPointer.compile("/request/url");
private static final JsonPointer REQUEST_URL_POINTER = JsonPointer
.compile("/request/url");
private static final JsonPointer REQUEST_URL_PATH_POINTER = JsonPointer.compile("/request/urlPath");
private static final JsonPointer REQUEST_URL_PATH_POINTER = JsonPointer
.compile("/request/urlPath");
private static final JsonPointer REQUEST_URL_PATTERN_POINTER = JsonPointer.compile("/request/urlPattern");
private static final JsonPointer REQUEST_URL_PATTERN_POINTER = JsonPointer
.compile("/request/urlPattern");
private static final JsonPointer REQUEST_URL_PATH_PATTERN_POINTER = JsonPointer.compile("/request/urlPathPattern");
private static final JsonPointer REQUEST_URL_PATH_PATTERN_POINTER = JsonPointer
.compile("/request/urlPathPattern");
private static final JsonPointer REQUEST_HEADERS_POINTER = JsonPointer.compile("/request/headers");
private static final JsonPointer REQUEST_HEADERS_POINTER = JsonPointer
.compile("/request/headers");
private static final JsonPointer REQUEST_BODY_POINTER = JsonPointer.compile("/request/bodyPatterns");
private static final JsonPointer REQUEST_BODY_POINTER = JsonPointer
.compile("/request/bodyPatterns");
private static final JsonPointer RESPONSE_STATUS_POINTER = JsonPointer.compile("/response/status");
private static final JsonPointer RESPONSE_STATUS_POINTER = JsonPointer
.compile("/response/status");
private static final JsonPointer RESPONSE_BODY_POINTER = JsonPointer.compile("/response/body");
private static final JsonPointer RESPONSE_BODY_POINTER = JsonPointer
.compile("/response/body");
private static final JsonPointer RESPONSE_HEADERS_POINTER = JsonPointer.compile("/response/headers");
private static final JsonPointer RESPONSE_HEADERS_POINTER = JsonPointer
.compile("/response/headers");
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
@@ -80,7 +90,6 @@ public class WireMockToDslConverter {
/**
* Returns the string content of the contract.
*
* @param wireMockStringStub - string content of the WireMock JSON stub
*/
public static String fromWireMockStub(String wireMockStringStub) {
@@ -89,22 +98,14 @@ public class WireMockToDslConverter {
private String convertFromWireMockStub(String wireMockStringStub) {
JsonNode wireMockStub = parseStubDefinition(wireMockStringStub);
return buildPriority(wireMockStub)
+ "request {\n"
+ buildRequestMethod(wireMockStub)
+ buildRequestUrl(wireMockStub)
return buildPriority(wireMockStub) + "request {\n"
+ buildRequestMethod(wireMockStub) + buildRequestUrl(wireMockStub)
+ buildRequestUrlPattern(wireMockStub)
+ buildRequestUrlPathPattern(wireMockStub)
+ buildRequestUrlPath(wireMockStub)
+ buildRequestHeaders(wireMockStub)
+ buildRequestBody(wireMockStub)
+ "}\n"
+ "response {\n"
+ buildResponseStatus(wireMockStub)
+ buildResponseBody(wireMockStub)
+ buildResponseHeaders(wireMockStub)
+ "}"
+ "\n";
+ buildRequestUrlPath(wireMockStub) + buildRequestHeaders(wireMockStub)
+ buildRequestBody(wireMockStub) + "}\n" + "response {\n"
+ buildResponseStatus(wireMockStub) + buildResponseBody(wireMockStub)
+ buildResponseHeaders(wireMockStub) + "}" + "\n";
}
private JsonNode parseStubDefinition(String wireMockStringStub) {
@@ -156,7 +157,8 @@ public class WireMockToDslConverter {
String requestUrlPattern = "";
JsonNode requestUrlPatternNode = wireMockStub.at(REQUEST_URL_PATTERN_POINTER);
if (!requestUrlPatternNode.isMissingNode()) {
String escapedRequestUrlPatternValue = escapeJava(requestUrlPatternNode.asText());
String escapedRequestUrlPatternValue = escapeJava(
requestUrlPatternNode.asText());
requestUrlPattern = "url $(consumer(regex('" + escapedRequestUrlPatternValue
+ "')), producer('"
+ new Xeger(escapedRequestUrlPatternValue).generate() + "'))\n";
@@ -166,9 +168,11 @@ public class WireMockToDslConverter {
private String buildRequestUrlPathPattern(JsonNode wireMockStub) {
String requestUrlPathPattern = "";
JsonNode requestUrlPathPatternNode = wireMockStub.at(REQUEST_URL_PATH_PATTERN_POINTER);
JsonNode requestUrlPathPatternNode = wireMockStub
.at(REQUEST_URL_PATH_PATTERN_POINTER);
if (!requestUrlPathPatternNode.isMissingNode()) {
String escapedRequestUrlPathPatternValue = escapeJava(requestUrlPathPatternNode.asText());
String escapedRequestUrlPathPatternValue = escapeJava(
requestUrlPathPatternNode.asText());
requestUrlPathPattern = "urlPath $(consumer(regex('"
+ escapedRequestUrlPathPatternValue + "')), producer('"
+ new Xeger(escapedRequestUrlPathPatternValue).generate() + "'))'\n";
@@ -183,11 +187,14 @@ public class WireMockToDslConverter {
if (requestHeadersNode.isObject()) {
requestHeadersBuilder.append("headers {\n");
ObjectNode requestHeadersObjectNode = requestHeadersNode.deepCopy();
Iterator<Map.Entry<String, JsonNode>> fields = requestHeadersObjectNode.fields();
Iterator<Map.Entry<String, JsonNode>> fields = requestHeadersObjectNode
.fields();
fields.forEachRemaining(c -> {
requestHeadersBuilder.append("header('").append(c.getKey()).append("',");
Map.Entry<String, JsonNode> headerValue = c.getValue().deepCopy().fields().next();
String header = buildHeader(headerValue.getKey(), headerValue.getValue().asText());
Map.Entry<String, JsonNode> headerValue = c.getValue().deepCopy().fields()
.next();
String header = buildHeader(headerValue.getKey(),
headerValue.getValue().asText());
requestHeadersBuilder.append(header).append(")").append("\n");
});
requestHeadersBuilder.append("}");
@@ -216,24 +223,22 @@ public class WireMockToDslConverter {
Iterable<JsonNode> iterableFields = () -> elements;
List<Map.Entry<String, JsonNode>> requestBodyObjectNodes = new ArrayList<>();
StreamSupport.stream(iterableFields.spliterator(), false)
.filter(f -> f instanceof ObjectNode)
.map(f -> (ObjectNode) f)
.filter(f -> f instanceof ObjectNode).map(f -> (ObjectNode) f)
.map(ObjectNode::fields)
.forEachOrdered(i -> i.forEachRemaining(requestBodyObjectNodes::add));
requestBodyObjectNodes.stream()
.filter(b -> b.getKey().equals("equalTo"))
.findFirst()
.ifPresent(b -> requestBody.append("body ('").append(b.getValue().asText()).append("')"));
requestBodyObjectNodes.stream()
.filter(b -> b.getKey().equals("equalToJson"))
.findFirst()
.ifPresent(b -> requestBody.append("body ('").append(b.getValue().asText()).append("')"));
requestBodyObjectNodes.stream().filter(b -> b.getKey().equals("equalTo"))
.findFirst().ifPresent(b -> requestBody.append("body ('")
.append(b.getValue().asText()).append("')"));
requestBodyObjectNodes.stream().filter(b -> b.getKey().equals("equalToJson"))
.findFirst().ifPresent(b -> requestBody.append("body ('")
.append(b.getValue().asText()).append("')"));
requestBodyObjectNodes.stream().filter(b -> b.getKey().equals("matches"))
.findFirst()
.ifPresent(b -> requestBody.append("body $(consumer(regex('")
.append(escapeJava(b.getValue().asText()))
.append("')), producer('")
.append(new Xeger(escapeJava(b.getValue().asText())).generate())
.append(new Xeger(escapeJava(b.getValue().asText()))
.generate())
.append("'))"));
}
return requestBody.toString();
@@ -253,10 +258,15 @@ public class WireMockToDslConverter {
String responseBody = "";
JsonNode responseBodyNode = wireMockStub.at(RESPONSE_BODY_POINTER);
if (responseBodyNode.isInt()) {
responseBody += "body( " + escapeJava(buildPrettyPrintResponseBody((IntNode) responseBodyNode)) + ")\n";
responseBody += "body( "
+ escapeJava(buildPrettyPrintResponseBody((IntNode) responseBodyNode))
+ ")\n";
}
if (responseBodyNode.isTextual()) {
responseBody += "body( \"" + escapeJava(buildPrettyPrintResponseBody((TextNode) responseBodyNode)) + "\")\n";
responseBody += "body( \""
+ escapeJava(
buildPrettyPrintResponseBody((TextNode) responseBodyNode))
+ "\")\n";
}
return responseBody;
}
@@ -272,13 +282,13 @@ public class WireMockToDslConverter {
.readValue(textNode, Object.class);
DefaultIndenter customIndenter = new DefaultIndenter(" ", "\n");
return OBJECT_MAPPER
.writer(new PrivatePrettyPrinter()
.withArrayIndenter(customIndenter)
.writer(new PrivatePrettyPrinter().withArrayIndenter(customIndenter)
.withObjectIndenter(customIndenter))
.writeValueAsString(intermediateObjectForPrettyPrinting);
}
catch (IOException e) {
throw new RuntimeException("WireMock response body could not be pretty printed");
throw new RuntimeException(
"WireMock response body could not be pretty printed");
}
}
@@ -289,14 +299,11 @@ public class WireMockToDslConverter {
if (requestHeadersNode.isObject()) {
responseHeadersBuilder.append("headers {\n");
ObjectNode responseHeadersObjectNode = requestHeadersNode.deepCopy();
Iterator<Map.Entry<String, JsonNode>> fields = responseHeadersObjectNode.fields();
fields.forEachRemaining(c -> responseHeadersBuilder
.append("header('")
.append(c.getKey())
.append("',")
.append("'")
.append(c.getValue().asText())
.append("')\n"));
Iterator<Map.Entry<String, JsonNode>> fields = responseHeadersObjectNode
.fields();
fields.forEachRemaining(c -> responseHeadersBuilder.append("header('")
.append(c.getKey()).append("',").append("'")
.append(c.getValue().asText()).append("')\n"));
responseHeadersBuilder.append("}");
}
return responseHeadersBuilder.toString();
@@ -312,7 +319,8 @@ public class WireMockToDslConverter {
@Override
public DefaultPrettyPrinter withSeparators(Separators separators) {
_separators = separators;
_objectFieldValueSeparatorWithSpaces = separators.getObjectFieldValueSeparator() + " ";
_objectFieldValueSeparatorWithSpaces = separators
.getObjectFieldValueSeparator() + " ";
return this;
}

View File

@@ -36,6 +36,7 @@ class FileSaver {
private static final Logger log = LoggerFactory.getLogger(FileSaver.class);
private final File targetDirectory;
private final String fileExtension;
FileSaver(File targetDirectory, String fileExtension) {

View File

@@ -55,13 +55,19 @@ import static org.springframework.cloud.contract.verifier.util.NamesUtil.toLastD
public class TestGenerator {
private static final Logger log = LoggerFactory.getLogger(TestGenerator.class);
private static final String DEFAULT_CLASS_PREFIX = "ContractVerifier";
private static final String DEFAULT_TEST_PACKAGE = "org.springframework.cloud.contract.verifier.tests";
private final ContractVerifierConfigProperties configProperties;
private final AtomicInteger counter = new AtomicInteger();
private final SingleTestGenerator generator;
private final FileSaver saver;
private final ContractFileScanner contractFileScanner;
public TestGenerator(ContractVerifierConfigProperties configProperties) {

View File

@@ -47,7 +47,9 @@ public class BaseImportProvider {
Arrays.asList(
"org.springframework.cloud.contract.verifier.assertion.SpringCloudContractAssertions.assertThat",
"org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.*"));
private static final Map<TestFramework, String> RULE_IMPORT;
private static final Map<TestFramework, ImportDefinitions> TEST_FRAMEWORK_SPECIFIC_IMPORTS;
static {

View File

@@ -25,14 +25,15 @@ import wiremock.com.github.jknack.handlebars.Helper;
import org.springframework.cloud.contract.verifier.builder.handlebars.HandlebarsEscapeHelper;
import org.springframework.cloud.contract.verifier.builder.handlebars.HandlebarsJsonPathHelper;
/**.
* Default implementation of {@link ResponseTemplateTransformer} that contains default set
* of handlebars helpers
/**
* . Default implementation of {@link ResponseTemplateTransformer} that contains default
* set of handlebars helpers
*
* @author Marcin Grzejszczak
* @since 1.2.0
*/
public class DefaultResponseTransformer extends ResponseTemplateTransformer {
public DefaultResponseTransformer() {
super(false, defaultHelpers());
}

View File

@@ -48,7 +48,6 @@ public class CamelStubMessages implements MessageVerifier<Message> {
private final ContractVerifierCamelMessageBuilder builder;
public CamelStubMessages(CamelContext context, ProducerTemplate producerTemplate,
ConsumerTemplate consumerTemplate) {
this.context = context;