Skip to content

Commit

Permalink
feat: wiremock.server.port property (refs maciejwalkowiak#34)
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasbjerre committed May 2, 2024
1 parent 4a91f46 commit 947b000
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@
*/
String property() default "";

/**
* The name of Spring property to inject the {@link WireMockServer#port()}
*
* @return the name of Spring property to inject the {@link WireMockServer#port()}
*/
String portProperty() default "wiremock.server.port";

/**
* The location of WireMock stub files. By default, stubs are resolved from classpath location <code>wiremock-server-name/mappings/</code>.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ private WireMockServer resolveOrCreateWireMockServer(ConfigurableApplicationCont
TestPropertyValues.of(property).applyTo(context.getEnvironment());
}

String portProperty = options.portProperty() + "=" + newServer.port();
LOGGER.debug("Adding property '{}' to Spring application context", portProperty);
TestPropertyValues.of(portProperty).applyTo(context.getEnvironment());
return newServer;
} else {
LOGGER.info("WireMockServer with name '{}' is already configured", options.name());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@

@SpringBootTest(classes = LegacyWireMockSpringExtensionTest.AppConfiguration.class)
@EnableWireMock({
@ConfigureWireMock(name = "user-service", property = "user-service.url"),
@ConfigureWireMock(name = "todo-service", property = "todo-service.url"),
@ConfigureWireMock(name = "user-service", property = "user-service.url", portProperty = "user-service.port"),
@ConfigureWireMock(name = "todo-service", property = "todo-service.url", portProperty = "todo-service.port"),
@ConfigureWireMock(name = "noproperty-service")
})
public class LegacyWireMockSpringExtensionTest {
Expand All @@ -34,12 +34,12 @@ static class AppConfiguration {

@Test
void createsWiremockWithClassLevelConfigureWiremock(@WireMock("user-service") WireMockServer wireMockServer) {
assertWireMockServer(wireMockServer, "user-service.url");
assertWireMockServer(wireMockServer, "user-service.url", "user-service.port");
}

@Test
void createsWiremockWithFieldLevelConfigureWiremock() {
assertWireMockServer(todoWireMockServer, "todo-service.url");
assertWireMockServer(todoWireMockServer, "todo-service.url", "todo-service.port");
}

@Test
Expand All @@ -49,7 +49,7 @@ void doesNotSetPropertyWhenNotProvided(@WireMock("noproperty-service") WireMockS
.isNotNull();
}

private void assertWireMockServer(WireMockServer wireMockServer, String property) {
private void assertWireMockServer(WireMockServer wireMockServer, String property, String portProperty) {
assertThat(wireMockServer)
.as("creates WireMock instance")
.isNotNull();
Expand All @@ -59,6 +59,9 @@ private void assertWireMockServer(WireMockServer wireMockServer, String property
assertThat(wireMockServer.port())
.as("sets random port")
.isNotZero();
assertThat(Integer.valueOf(environment.getProperty(portProperty)))
.as("sets Spring port property")
.isEqualTo(wireMockServer.port());
assertThat(environment.getProperty(property))
.as("sets Spring property")
.isEqualTo(wireMockServer.baseUrl());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@

@SpringBootTest(classes = NestedClassWireMockSpringExtensionTest.AppConfiguration.class)
@EnableWireMock({
@ConfigureWireMock(name = "user-service", property = "user-service.url"),
@ConfigureWireMock(name = "todo-service", property = "todo-service.url"),
@ConfigureWireMock(name = "user-service", property = "user-service.url", portProperty = "user-service.port"),
@ConfigureWireMock(name = "todo-service", property = "todo-service.url", portProperty = "todo-service.port"),
@ConfigureWireMock(name = "noproperty-service")
})
public class NestedClassWireMockSpringExtensionTest {
Expand All @@ -42,17 +42,17 @@ class NestedTest {

@Test
void injectsWiremockServerToMethodParameter(@InjectWireMock("user-service") WireMockServer wireMockServer) {
assertWireMockServer(wireMockServer, "user-service.url");
assertWireMockServer(wireMockServer, "user-service.url", "user-service.port");
}

@Test
void injectsWiremockServerToNestedClassField() {
assertWireMockServer(nestedClassTodoService, "todo-service.url");
assertWireMockServer(nestedClassTodoService, "todo-service.url", "todo-service.port");
}

@Test
void injectsWiremockServerToTopLevelClassField() {
assertWireMockServer(topLevelClassTodoService, "todo-service.url");
assertWireMockServer(topLevelClassTodoService, "todo-service.url", "todo-service.port");
}

@Test
Expand All @@ -62,7 +62,7 @@ void doesNotSetPropertyWhenNotProvided(@InjectWireMock("noproperty-service") Wir
.isNotNull();
}

private void assertWireMockServer(WireMockServer wireMockServer, String property) {
private void assertWireMockServer(WireMockServer wireMockServer, String property, String portProperty) {
assertThat(wireMockServer)
.as("creates WireMock instance")
.isNotNull();
Expand All @@ -72,6 +72,9 @@ private void assertWireMockServer(WireMockServer wireMockServer, String property
assertThat(wireMockServer.port())
.as("sets random port")
.isNotZero();
assertThat(Integer.valueOf(environment.getProperty(portProperty)))
.as("sets Spring port property")
.isEqualTo(wireMockServer.port());
assertThat(environment.getProperty(property))
.as("sets Spring property")
.isEqualTo(wireMockServer.baseUrl());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@

@SpringBootTest(classes = WireMockSpringExtensionTest.AppConfiguration.class)
@EnableWireMock({
@ConfigureWireMock(name = "user-service", property = "user-service.url"),
@ConfigureWireMock(name = "todo-service", property = "todo-service.url"),
@ConfigureWireMock(name = "user-service", property = "user-service.url", portProperty = "user-service.port"),
@ConfigureWireMock(name = "todo-service", property = "todo-service.url", portProperty = "todo-service.port"),
@ConfigureWireMock(name = "noproperty-service")
})
public class WireMockSpringExtensionTest {
Expand All @@ -34,12 +34,12 @@ static class AppConfiguration {

@Test
void createsWiremockWithClassLevelConfigureWiremock(@InjectWireMock("user-service") WireMockServer wireMockServer) {
assertWireMockServer(wireMockServer, "user-service.url");
assertWireMockServer(wireMockServer, "user-service.url", "user-service.port");
}

@Test
void createsWiremockWithFieldLevelConfigureWiremock() {
assertWireMockServer(todoWireMockServer, "todo-service.url");
assertWireMockServer(todoWireMockServer, "todo-service.url", "todo-service.port");
}

@Test
Expand All @@ -49,7 +49,7 @@ void doesNotSetPropertyWhenNotProvided(@InjectWireMock("noproperty-service") Wir
.isNotNull();
}

private void assertWireMockServer(WireMockServer wireMockServer, String property) {
private void assertWireMockServer(WireMockServer wireMockServer, String property, String portProperty) {
assertThat(wireMockServer)
.as("creates WireMock instance")
.isNotNull();
Expand All @@ -59,6 +59,9 @@ private void assertWireMockServer(WireMockServer wireMockServer, String property
assertThat(wireMockServer.port())
.as("sets random port")
.isNotZero();
assertThat(Integer.valueOf(environment.getProperty(portProperty)))
.as("sets Spring port property")
.isEqualTo(wireMockServer.port());
assertThat(environment.getProperty(property))
.as("sets Spring property")
.isEqualTo(wireMockServer.baseUrl());
Expand Down

0 comments on commit 947b000

Please sign in to comment.