|
@@ -15,75 +15,65 @@
|
|
|
*/
|
|
|
package sample;
|
|
|
|
|
|
-import org.junit.Before;
|
|
|
+import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.Credentials.basicAuthenticationCredentials;
|
|
|
+
|
|
|
+import java.util.Map;
|
|
|
+import java.util.function.Consumer;
|
|
|
+
|
|
|
import org.junit.Test;
|
|
|
import org.junit.runner.RunWith;
|
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.boot.test.context.SpringBootTest;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
-import org.springframework.test.context.ContextConfiguration;
|
|
|
-import org.springframework.test.context.TestPropertySource;
|
|
|
import org.springframework.test.context.junit4.SpringRunner;
|
|
|
import org.springframework.test.web.reactive.server.WebTestClient;
|
|
|
-
|
|
|
-import java.nio.charset.Charset;
|
|
|
-import java.time.Duration;
|
|
|
-import java.util.Base64;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.function.Consumer;
|
|
|
-
|
|
|
-import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.Credentials.basicAuthenticationCredentials;
|
|
|
-import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication;
|
|
|
+import org.springframework.web.reactive.function.client.ExchangeFilterFunctions;
|
|
|
|
|
|
/**
|
|
|
* @author Rob Winch
|
|
|
* @since 5.0
|
|
|
*/
|
|
|
@RunWith(SpringRunner.class)
|
|
|
-@ContextConfiguration(classes = HelloWebfluxMethodApplication.class)
|
|
|
-@TestPropertySource(properties = "server.port=0")
|
|
|
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
|
|
public class HelloWebfluxMethodApplicationITests {
|
|
|
- @Value("#{@nettyContext.address().getPort()}")
|
|
|
- int port;
|
|
|
|
|
|
WebTestClient rest;
|
|
|
|
|
|
- @Before
|
|
|
- public void setup() {
|
|
|
- this.rest = WebTestClient.bindToServer()
|
|
|
- .filter(basicAuthentication())
|
|
|
- .responseTimeout(Duration.ofDays(1))
|
|
|
- .baseUrl("http://localhost:" + this.port)
|
|
|
- .build();
|
|
|
+ @Autowired
|
|
|
+ public void setRest(WebTestClient rest) {
|
|
|
+ this.rest = rest
|
|
|
+ .mutateWith((b, h, c) -> b.filter(ExchangeFilterFunctions.basicAuthentication()));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Test
|
|
|
public void messageWhenNotAuthenticated() throws Exception {
|
|
|
this.rest
|
|
|
- .get()
|
|
|
- .uri("/message")
|
|
|
- .exchange()
|
|
|
- .expectStatus().isUnauthorized();
|
|
|
+ .get()
|
|
|
+ .uri("/message")
|
|
|
+ .exchange()
|
|
|
+ .expectStatus().isUnauthorized();
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void messageWhenUserThenForbidden() throws Exception {
|
|
|
this.rest
|
|
|
- .get()
|
|
|
- .uri("/message")
|
|
|
- .attributes(robsCredentials())
|
|
|
- .exchange()
|
|
|
- .expectStatus().isEqualTo(HttpStatus.FORBIDDEN);
|
|
|
+ .get()
|
|
|
+ .uri("/message")
|
|
|
+ .attributes(robsCredentials())
|
|
|
+ .exchange()
|
|
|
+ .expectStatus().isEqualTo(HttpStatus.FORBIDDEN);
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void messageWhenAdminThenOk() throws Exception {
|
|
|
this.rest
|
|
|
- .get()
|
|
|
- .uri("/message")
|
|
|
- .attributes(adminCredentials())
|
|
|
- .exchange()
|
|
|
- .expectStatus().isOk()
|
|
|
- .expectBody(String.class).isEqualTo("Hello World!");
|
|
|
+ .get()
|
|
|
+ .uri("/message")
|
|
|
+ .attributes(adminCredentials())
|
|
|
+ .exchange()
|
|
|
+ .expectStatus().isOk()
|
|
|
+ .expectBody(String.class).isEqualTo("Hello World!");
|
|
|
}
|
|
|
|
|
|
private Consumer<Map<String, Object>> robsCredentials() {
|
|
@@ -93,8 +83,5 @@ public class HelloWebfluxMethodApplicationITests {
|
|
|
private Consumer<Map<String, Object>> adminCredentials() {
|
|
|
return basicAuthenticationCredentials("admin", "admin");
|
|
|
}
|
|
|
-
|
|
|
- private String base64Encode(String value) {
|
|
|
- return Base64.getEncoder().encodeToString(value.getBytes(Charset.defaultCharset()));
|
|
|
- }
|
|
|
}
|
|
|
+
|