diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockApplicationListener.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockApplicationListener.java index aca984c794..5bc5ad2e9a 100644 --- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockApplicationListener.java +++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockApplicationListener.java @@ -63,9 +63,10 @@ public class WireMockApplicationListener implements ApplicationListener source = getWireMockSource(environment); - source.put("wiremock.server.port", 8080); + int port = httpPortProperty != null ? httpPortProperty : 8080; + source.put("wiremock.server.port", port); if (log.isDebugEnabled()) { - log.debug("Registered WireMock server port property to the default <8080> value"); + log.debug("Registered WireMock server port property to <" + port + "> value"); } } int httpsPortProperty = environment.getProperty("wiremock.server.https-port", Integer.class, 0); diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockCustomPortApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockCustomPortApplicationTests.java new file mode 100644 index 0000000000..52b5f363c5 --- /dev/null +++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockCustomPortApplicationTests.java @@ -0,0 +1,63 @@ +/* + * Copyright 2013-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.contract.wiremock; + +import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static org.assertj.core.api.Assertions.assertThat; + +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) +@RunWith(SpringRunner.class) +@SpringBootTest(classes = WiremockTestsApplication.class, properties = "app.baseUrl=http://localhost:9753", + webEnvironment = WebEnvironment.NONE) +@AutoConfigureWireMock(port = 9753) +public class AutoConfigureWireMockCustomPortApplicationTests { + + @Autowired + private WireMockServer wireMockServer; + + @Autowired + private Service service; + + @Test + public void contextLoads() throws Exception { + wireMockServer.verify(0, RequestPatternBuilder.allRequests()); + WireMock.verify(0, RequestPatternBuilder.allRequests()); + + stubFor(get(urlEqualTo("/test")) + .willReturn(aResponse().withHeader("Content-Type", "text/plain").withBody("Hello World!"))); + assertThat(this.service.go()).isEqualTo("Hello World!"); + + wireMockServer.verify(1, RequestPatternBuilder.allRequests()); + WireMock.verify(1, RequestPatternBuilder.allRequests()); + } + +}