From ff8fd0a16c99053072cb1961e4c62724d9b6fa81 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Sun, 1 Apr 2018 15:45:32 +0200 Subject: [PATCH] Added props to @AutoConfigureStubRunner --- .../stubrunner/spring/AutoConfigureStubRunner.java | 6 ++++++ .../stubrunner/spring/StubRunnerConfiguration.java | 3 ++- .../stubrunner/spring/StubRunnerProperties.java | 13 +++++++++++-- .../contract/stubrunner/StubRunnerSliceTests.java | 10 +++++++++- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/AutoConfigureStubRunner.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/AutoConfigureStubRunner.java index 49cf48e9bd..deba5b5666 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/AutoConfigureStubRunner.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/AutoConfigureStubRunner.java @@ -114,4 +114,10 @@ public @interface AutoConfigureStubRunner { * JAR was downloaded from a remote location or a local one */ boolean snapshotCheckSkip() default false; + + /** + * Properties in form {@literal key=value} + * @return the properties to add + */ + String[] properties() default {}; } diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfiguration.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfiguration.java index 4d7dd7b0d0..0fe7249658 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfiguration.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfiguration.java @@ -95,7 +95,8 @@ public class StubRunnerConfiguration { .withConsumerName(consumerName()) .withMappingsOutputFolder(this.props.getMappingsOutputFolder()) .withSnapshotCheckSkip(this.props.isSnapshotCheckSkip()) - .withDeleteStubsAfterTest(this.props.isDeleteStubsAfterTest()); + .withDeleteStubsAfterTest(this.props.isDeleteStubsAfterTest()) + .withProperties(this.props.getProperties()); } private String consumerName() { diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/StubRunnerProperties.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/StubRunnerProperties.java index 3d2e78356b..0d09b7c6cc 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/StubRunnerProperties.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/StubRunnerProperties.java @@ -19,10 +19,12 @@ package org.springframework.cloud.contract.stubrunner.spring; import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.Properties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.contract.stubrunner.ResourceResolver; import org.springframework.core.io.Resource; +import org.springframework.util.StringUtils; /** * @author Dave Syer @@ -259,8 +261,15 @@ public class StubRunnerProperties { return this.properties; } - public void setProperties(Map properties) { - this.properties = properties; + public void setProperties(String[] properties) { + Properties elements = StringUtils + .splitArrayElementsIntoProperties(properties, "="); + if (elements == null) { + return; + } + for (String key : elements.stringPropertyNames()) { + this.properties.put(key, elements.getProperty(key)); + } } @Override public String toString() { diff --git a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/StubRunnerSliceTests.java b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/StubRunnerSliceTests.java index 8c36395b85..0e49703aab 100644 --- a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/StubRunnerSliceTests.java +++ b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/StubRunnerSliceTests.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner; +import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; @@ -44,7 +45,8 @@ import static org.assertj.core.api.Assertions.assertThat; }, minPort = 10001, maxPort = 10020, - mappingsOutputFolder = "target/outputmappings/") + mappingsOutputFolder = "target/outputmappings/", + properties = {"hello=world", "foo=bar"}) @DirtiesContext @ActiveProfiles("test") public class StubRunnerSliceTests { @@ -52,6 +54,9 @@ public class StubRunnerSliceTests { @Autowired private StubFinder stubFinder; + @Autowired + private StubRunnerProperties properties; + @Value("${stubrunner.runningstubs.fraudDetectionServer.port}") private Integer fraudDetectionServerPort; @@ -81,6 +86,9 @@ public class StubRunnerSliceTests { assertThat(stubFinder.findStubUrl( "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer")) .isNotNull(); + assertThat(properties.getProperties()) + .containsEntry("hello", "world") + .containsEntry("foo", "bar"); } @SpringBootConfiguration