4 import org.junit.jupiter.api.DisplayName;
5 import org.junit.jupiter.api.extension.ExtendWith;
6 import org.junit.jupiter.params.ParameterizedTest;
7 import org.junit.jupiter.params.provider.ValueSource;
8 import static org.mockito.Mockito.verify;
9 import static org.mockito.Mockito.when;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
12 import org.springframework.boot.test.mock.mockito.MockBean;
13 import org.springframework.http.MediaType;
14 import org.springframework.test.context.junit.jupiter.SpringExtension;
15 import org.springframework.test.web.reactive.server.WebTestClient;
16 import reactor.core.publisher.Mono;
20 * Narrow Integration-Test for the {@link RestController}.
23 @ExtendWith(SpringExtension.class)
25 public class RestControllerIT
28 WebTestClient webClient;
30 RemoteContentService service;
33 @DisplayName("Valid mappings for RestController with parameter")
35 @ValueSource(strings = { "/?path=foo", "?path=foo" })
36 void testUriWithParameter(String uri)
38 when(service.getRemoteText("foo")).thenReturn(Mono.just("bar"));
42 .header("Accept", MediaType.TEXT_PLAIN_VALUE)
44 .expectStatus().isOk()
45 .expectBody(String.class).isEqualTo("bar");
46 verify(service).getRemoteText("foo");
49 @DisplayName("Mappings for RestController without a parameter")
50 @ParameterizedTest(name = "{arguments} ==> uri={0}")
51 @ValueSource(strings = { "/", "", "?foo=bar", "/?foo=bar"})
52 void testUriWithoutParameter(String uri)
57 .header("Accept", MediaType.TEXT_PLAIN_VALUE)
59 .expectStatus().isBadRequest()
61 .jsonPath("status").isEqualTo(400)
62 .jsonPath("error").isEqualTo("Bad Request")
63 .jsonPath("message").isEqualTo("Required String parameter 'path' is not present")
64 .jsonPath("timestamp").exists();