From 15021d3bd1e5eee09a443ff7649304ed37769b3a Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 30 Aug 2017 13:02:21 +0200 Subject: [PATCH 1/2] Added the missing `.timeout(...)` method in the generated RestAssured tests without this change the `fixedDelayMilliseconds` only works for the stub but doesn't do anything in the generated test with this change we're adding this functionality for MockMvc based tests fixes #402 --- .../RequestProcessingMethodBodyBuilder.groovy | 3 ++ .../builder/MethodBodyBuilderSpec.groovy | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RequestProcessingMethodBodyBuilder.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RequestProcessingMethodBodyBuilder.groovy index 02df4c3987..0114f033e2 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RequestProcessingMethodBodyBuilder.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/RequestProcessingMethodBodyBuilder.groovy @@ -124,6 +124,9 @@ abstract class RequestProcessingMethodBodyBuilder extends MethodBodyBuilder { if (response.async) { bb.addLine('.when().async()') } + if (response.delay) { + bb.addLine(".timeout(${response.delay.serverValue})") + } } @TypeChecked(TypeCheckingMode.SKIP) diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy index c7fa43cd6e..b45cc12176 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy @@ -315,4 +315,34 @@ DocumentContext parsedJson = JsonPath.parse(json); "JaxRsClientJUnitMethodBodyBuilder" | { Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) } } + def "should use fixed delay milliseconds in the generated test [#methodBuilderName]"() { + given: + Contract contractDsl = Contract.make { + request { + method GET() + url "test" + } + response { + status 200 + async() + fixedDelayMilliseconds(10000) + body(a: 'foo') + } + } + MethodBodyBuilder builder = methodBuilder(contractDsl) + BlockBuilder blockBuilder = new BlockBuilder(" ") + when: + builder.appendTo(blockBuilder) + then: + blockBuilder.toString().contains(""".timeout(10000)""") + and: + SyntaxChecker.tryToCompile(methodBuilderName, blockBuilder.toString()) + and: + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder + "MockMvcSpockMethodBuilder" | { Contract dsl -> new MockMvcSpockMethodRequestProcessingBodyBuilder(dsl, properties) } + "MockMvcJUnitMethodBuilder" | { Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties) } + } + } From 5cbf1836f0b38e4610c7570bf603f67cb702ce76 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 30 Aug 2017 13:03:38 +0200 Subject: [PATCH 2/2] Fixed checkstyole --- .../cloud/contract/maven/verifier/RunMojo.java | 5 ++--- .../cloud/contract/wiremock/JettyFaultInjector.java | 6 ++---- .../cloud/contract/wiremock/TomcatFaultInjector.java | 7 ++----- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/RunMojo.java b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/RunMojo.java index cce6c5f9df..a9365621ad 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/RunMojo.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/RunMojo.java @@ -34,8 +34,7 @@ import org.springframework.cloud.contract.stubrunner.BatchStubRunner; import org.springframework.cloud.contract.stubrunner.StubRunner; import org.springframework.cloud.contract.stubrunner.StubRunnerOptions; import org.springframework.cloud.contract.stubrunner.StubRunnerOptionsBuilder; - -import static com.google.common.base.Strings.isNullOrEmpty; +import org.springframework.util.StringUtils; /** * @@ -122,7 +121,7 @@ public class RunMojo extends AbstractMojo { BatchStubRunner batchStubRunner = null; StubRunnerOptionsBuilder optionsBuilder = new StubRunnerOptionsBuilder() .withStubsClassifier(this.stubsClassifier); - if (isNullOrEmpty(this.stubs)) { + if (StringUtils.isEmpty(this.stubs)) { StubRunnerOptions options = optionsBuilder .withMinMaxPort(this.httpPort, this.httpPort) .build(); diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/JettyFaultInjector.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/JettyFaultInjector.java index ab3e2822b8..0fa92e8f89 100644 --- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/JettyFaultInjector.java +++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/JettyFaultInjector.java @@ -18,12 +18,10 @@ package org.springframework.cloud.contract.wiremock; import java.io.IOException; import java.nio.channels.ByteChannel; - +import java.nio.charset.Charset; import javax.servlet.http.HttpServletResponse; import com.github.tomakehurst.wiremock.core.FaultInjector; -import com.google.common.base.Charsets; - import org.eclipse.jetty.io.ChannelEndPoint; import org.eclipse.jetty.server.HttpChannel; import org.eclipse.jetty.server.Response; @@ -39,7 +37,7 @@ import static com.github.tomakehurst.wiremock.jetty9.JettyUtils.unwrapResponse; public class JettyFaultInjector implements FaultInjector { private static final byte[] GARBAGE = "lskdu018973t09sylgasjkfg1][]'./.sdlv" - .getBytes(Charsets.UTF_8); + .getBytes(Charset.forName("UTF-8")); private final Response response; private final ByteChannel socket; diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/TomcatFaultInjector.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/TomcatFaultInjector.java index 0abf792f85..ee8cd003a5 100644 --- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/TomcatFaultInjector.java +++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/TomcatFaultInjector.java @@ -19,16 +19,13 @@ package org.springframework.cloud.contract.wiremock; import java.io.IOException; import java.lang.reflect.Field; import java.nio.ByteBuffer; - +import java.nio.charset.Charset; import javax.servlet.http.HttpServletResponse; import com.github.tomakehurst.wiremock.common.Exceptions; import com.github.tomakehurst.wiremock.core.FaultInjector; -import com.google.common.base.Charsets; - import org.apache.coyote.Response; import org.apache.tomcat.util.net.SocketWrapperBase; - import org.springframework.util.ReflectionUtils; import static com.github.tomakehurst.wiremock.common.Exceptions.throwUnchecked; @@ -40,7 +37,7 @@ import static com.github.tomakehurst.wiremock.common.Exceptions.throwUnchecked; public class TomcatFaultInjector implements FaultInjector { private static final byte[] GARBAGE = "lskdu018973t09sylgasjkfg1][]'./.sdlv" - .getBytes(Charsets.UTF_8); + .getBytes(Charset.forName("UTF-8")); private final Response response; private SocketWrapperBase socket;