68ad229ff73ae829af93c21002b13978489f6781
[demos/testing] / src / test / java / de / juplo / demo / RestControllerIT.java
1 package de.juplo.demo;
2
3
4 import org.junit.jupiter.api.DisplayName;
5 import org.junit.jupiter.api.Test;
6 import org.junit.jupiter.api.extension.ExtendWith;
7 import static org.mockito.Mockito.verify;
8 import static org.mockito.Mockito.when;
9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
11 import org.springframework.boot.test.mock.mockito.MockBean;
12 import org.springframework.http.MediaType;
13 import org.springframework.test.context.junit.jupiter.SpringExtension;
14 import org.springframework.test.web.reactive.server.WebTestClient;
15 import reactor.core.publisher.Mono;
16
17
18 /**
19  * Narrow Integration-Test for the {@link RestController}.
20  * @author Kai Moritz
21  */
22 @ExtendWith(SpringExtension.class)
23 @WebFluxTest()
24 public class RestControllerIT
25 {
26   @Autowired
27   WebTestClient webClient;
28   @MockBean
29   RemoteContentService service;
30
31
32   @Test
33   @DisplayName("Valid mapping for RestController: /?path=foo")
34   void testUriWithParameter()
35   {
36     when(service.getRemoteText("foo")).thenReturn(Mono.just("bar"));
37     webClient
38         .get()
39         .uri("/?path=foo")
40         .header("Accept", MediaType.TEXT_PLAIN_VALUE)
41         .exchange()
42         .expectStatus().isOk()
43         .expectBody(String.class).isEqualTo("bar");
44     verify(service).getRemoteText("foo");
45   }
46 }