From 4a85af06f01e86eabd2ba6388b5f19f9ebdb60d7 Mon Sep 17 00:00:00 2001 From: Maciej Walkowiak Date: Fri, 29 Mar 2024 18:04:03 +0100 Subject: [PATCH] polish tests --- .../java/app/WireMockSpringExtensionTest.java | 99 ++++++++++++------- .../WireMockConfigurationCustomizerTest.java | 14 +-- 2 files changed, 62 insertions(+), 51 deletions(-) diff --git a/wiremock-spring-boot/src/test/java/app/WireMockSpringExtensionTest.java b/wiremock-spring-boot/src/test/java/app/WireMockSpringExtensionTest.java index 8a11925..3062189 100644 --- a/wiremock-spring-boot/src/test/java/app/WireMockSpringExtensionTest.java +++ b/wiremock-spring-boot/src/test/java/app/WireMockSpringExtensionTest.java @@ -4,6 +4,7 @@ import com.maciejwalkowiak.wiremock.spring.ConfigureWireMock; import com.maciejwalkowiak.wiremock.spring.EnableWireMock; import com.maciejwalkowiak.wiremock.spring.InjectWireMock; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -13,54 +14,76 @@ import static org.assertj.core.api.Assertions.assertThat; -@SpringBootTest(classes = WireMockSpringExtensionTest.AppConfiguration.class) -@EnableWireMock({ - @ConfigureWireMock(name = "user-service", property = "user-service.url"), - @ConfigureWireMock(name = "todo-service", property = "todo-service.url"), - @ConfigureWireMock(name = "noproperty-service") -}) public class WireMockSpringExtensionTest { - @SpringBootApplication - static class AppConfiguration { + @SpringBootTest(classes = WireMockSpringExtensionTest.AppConfiguration.class) + @EnableWireMock({ + @ConfigureWireMock(name = "user-service", property = "user-service.url"), + @ConfigureWireMock(name = "todo-service", property = "todo-service.url"), + @ConfigureWireMock(name = "noproperty-service") + }) + @Nested + class SinglePropertyBindingTest { - } + @InjectWireMock("todo-service") + private WireMockServer todoWireMockServer; - @InjectWireMock("todo-service") - private WireMockServer todoWireMockServer; + @Autowired + private Environment environment; - @Autowired - private Environment environment; + @Test + void createsWiremockWithClassLevelConfigureWiremock(@InjectWireMock("user-service") WireMockServer wireMockServer) { + assertWireMockServer(wireMockServer, "user-service.url"); + } - @Test - void createsWiremockWithClassLevelConfigureWiremock(@InjectWireMock("user-service") WireMockServer wireMockServer) { - assertWireMockServer(wireMockServer, "user-service.url"); - } + @Test + void createsWiremockWithFieldLevelConfigureWiremock() { + assertWireMockServer(todoWireMockServer, "todo-service.url"); + } + + @Test + void doesNotSetPropertyWhenNotProvided(@InjectWireMock("noproperty-service") WireMockServer wireMockServer) { + assertThat(wireMockServer) + .as("inject wiremock sets null when not configured") + .isNotNull(); + } - @Test - void createsWiremockWithFieldLevelConfigureWiremock() { - assertWireMockServer(todoWireMockServer, "todo-service.url"); + private void assertWireMockServer(WireMockServer wireMockServer, String property) { + assertThat(wireMockServer) + .as("creates WireMock instance") + .isNotNull(); + assertThat(wireMockServer.baseUrl()) + .as("WireMock baseUrl is set") + .isNotNull(); + assertThat(wireMockServer.port()) + .as("sets random port") + .isNotZero(); + assertThat(environment.getProperty(property)) + .as("sets Spring property") + .isEqualTo(wireMockServer.baseUrl()); + } } - @Test - void doesNotSetPropertyWhenNotProvided(@InjectWireMock("noproperty-service") WireMockServer wireMockServer) { - assertThat(wireMockServer) - .as("creates WireMock instance") - .isNotNull(); + @SpringBootTest(classes = WireMockSpringExtensionTest.AppConfiguration.class) + @EnableWireMock(@ConfigureWireMock(name = "user-service", property = {"user-service.url", "todo-service.url"})) + @Nested + class MultiplePropertiesBindingTest { + + @InjectWireMock("user-service") + private WireMockServer userServiceWireMockServer; + + @Autowired + private Environment environment; + + @Test + void bindsUrlToMultipleProperties() { + assertThat(environment.getProperty("user-service.url")).isEqualTo(userServiceWireMockServer.baseUrl()); + assertThat(environment.getProperty("todo-service.url")).isEqualTo(userServiceWireMockServer.baseUrl()); + } } - private void assertWireMockServer(WireMockServer wireMockServer, String property) { - assertThat(wireMockServer) - .as("creates WireMock instance") - .isNotNull(); - assertThat(wireMockServer.baseUrl()) - .as("WireMock baseUrl is set") - .isNotNull(); - assertThat(wireMockServer.port()) - .as("sets random port") - .isNotZero(); - assertThat(environment.getProperty(property)) - .as("sets Spring property") - .isEqualTo(wireMockServer.baseUrl()); + @SpringBootApplication + static class AppConfiguration { + } } diff --git a/wiremock-spring-boot/src/test/java/com/maciejwalkowiak/wiremock/spring/WireMockConfigurationCustomizerTest.java b/wiremock-spring-boot/src/test/java/com/maciejwalkowiak/wiremock/spring/WireMockConfigurationCustomizerTest.java index 8840d1d..6387041 100644 --- a/wiremock-spring-boot/src/test/java/com/maciejwalkowiak/wiremock/spring/WireMockConfigurationCustomizerTest.java +++ b/wiremock-spring-boot/src/test/java/com/maciejwalkowiak/wiremock/spring/WireMockConfigurationCustomizerTest.java @@ -8,16 +8,13 @@ import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.core.WireMockConfiguration; -import java.util.stream.Stream; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; -import org.springframework.core.env.Environment; import org.springframework.test.util.TestSocketUtils; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; @@ -34,7 +31,7 @@ ), @ConfigureWireMock( name = "todo-service", - property = {"todo-service.url", "bar-service.url"}, + property = "todo-service.url", configurationCustomizers = WireMockConfigurationCustomizerTest.SampleConfigurationCustomizer.class ), }) @@ -66,15 +63,6 @@ static class AppConfiguration { @InjectWireMock("todo-service") private WireMockServer todoService; - @Test - void appliesPropertyInjection(@Autowired Environment environment) { - // TODO: @Maciej is there a programmatic way for accessing the @ConfigureWireMock ? - Stream.of("todo-service.url", "bar-service.url").forEach(property -> - assertThat(environment.getProperty(property)).isEqualTo("http://localhost:" + TODO_SERVICE_PORT)); - Stream.of("user-service.url").forEach(property -> - assertThat(environment.getProperty(property)).isEqualTo("http://localhost:" + USER_SERVICE_PORT)); - } - @Test void appliesConfigurationCustomizer() { assertThat(userService.port()).isEqualTo(USER_SERVICE_PORT);