diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java index 42a8556989..9d01756fc4 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,10 +52,8 @@ import org.springframework.web.server.handler.ExceptionHandlingWebHandler; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.startsWith; import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertThat; -import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.junit.Assert.*; +import static org.springframework.http.MediaType.*; /** * Test the effect of exceptions at different stages of request processing by @@ -72,7 +70,7 @@ public class DispatcherHandlerErrorTests { @Before - public void setup() throws Exception { + public void setup() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.register(TestConfig.class); ctx.refresh(); @@ -81,20 +79,21 @@ public class DispatcherHandlerErrorTests { @Test - public void noHandler() throws Exception { + public void noHandler() { MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/does-not-exist")); Mono publisher = this.dispatcherHandler.handle(exchange); StepVerifier.create(publisher) .consumeErrorWith(error -> { assertThat(error, instanceOf(ResponseStatusException.class)); - assertThat(error.getMessage(), is("Response status 404 with reason \"No matching handler\"")); + assertThat(error.getMessage(), + is("Response status 404 with reason \"No matching handler\"")); }) .verify(); } @Test - public void controllerReturnsMonoError() throws Exception { + public void controllerReturnsMonoError() { MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/error-signal")); Mono publisher = this.dispatcherHandler.handle(exchange); @@ -104,7 +103,7 @@ public class DispatcherHandlerErrorTests { } @Test - public void controllerThrowsException() throws Exception { + public void controllerThrowsException() { MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/raise-exception")); Mono publisher = this.dispatcherHandler.handle(exchange); @@ -114,7 +113,7 @@ public class DispatcherHandlerErrorTests { } @Test - public void unknownReturnType() throws Exception { + public void unknownReturnType() { MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/unknown-return-type")); Mono publisher = this.dispatcherHandler.handle(exchange); @@ -127,7 +126,7 @@ public class DispatcherHandlerErrorTests { } @Test - public void responseBodyMessageConversionError() throws Exception { + public void responseBodyMessageConversionError() { ServerWebExchange exchange = MockServerWebExchange.from( MockServerHttpRequest.post("/request-body").accept(APPLICATION_JSON).body("body")); @@ -139,10 +138,10 @@ public class DispatcherHandlerErrorTests { } @Test - public void requestBodyError() throws Exception { + public void requestBodyError() { ServerWebExchange exchange = MockServerWebExchange.from( MockServerHttpRequest.post("/request-body").body(Mono.error(EXCEPTION))); - + Mono publisher = this.dispatcherHandler.handle(exchange); StepVerifier.create(publisher) @@ -151,7 +150,7 @@ public class DispatcherHandlerErrorTests { } @Test - public void webExceptionHandler() throws Exception { + public void webExceptionHandler() { ServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/unknown-argument-type")); List handlers = Collections.singletonList(new ServerError500ExceptionHandler()); @@ -201,12 +200,12 @@ public class DispatcherHandlerErrorTests { } @RequestMapping("/raise-exception") - public void raiseException() throws Exception { + public void raiseException() { throw EXCEPTION; } @RequestMapping("/unknown-return-type") - public Foo unknownReturnType() throws Exception { + public Foo unknownReturnType() { return new Foo(); } diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerTests.java index 5c43f65b99..371224472c 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/DispatcherHandlerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.web.reactive; import java.nio.charset.StandardCharsets; @@ -32,11 +33,9 @@ import org.springframework.mock.web.test.server.MockServerWebExchange; import org.springframework.web.method.ResolvableMethod; import org.springframework.web.server.ServerWebExchange; -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.withSettings; +import static org.junit.Assert.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; /** * Unit tests for {@link DispatcherHandler}. @@ -49,8 +48,7 @@ public class DispatcherHandlerTests { @Test - public void handlerMappingOrder() throws Exception { - + public void handlerMappingOrder() { HandlerMapping hm1 = mock(HandlerMapping.class, withSettings().extraInterfaces(Ordered.class)); HandlerMapping hm2 = mock(HandlerMapping.class, withSettings().extraInterfaces(Ordered.class)); when(((Ordered) hm1).getOrder()).thenReturn(1); @@ -90,6 +88,7 @@ public class DispatcherHandlerTests { } } + private static class StringHandlerResultHandler implements HandlerResultHandler { @Override @@ -105,4 +104,5 @@ public class DispatcherHandlerTests { return exchange.getResponse().writeWith(Mono.just(dataBuffer)); } } + } diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/FlushingIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/FlushingIntegrationTests.java index 9f73c560fd..09bda723f8 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/FlushingIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/FlushingIntegrationTests.java @@ -37,7 +37,10 @@ import org.springframework.web.reactive.function.client.WebClient; import static org.junit.Assert.*; /** + * Integration tests for server response flushing behavior. + * * @author Sebastien Deleuze + * @author Rossen Stoyanchev * @since 5.0 */ public class FlushingIntegrationTests extends AbstractHttpHandlerIntegrationTests { @@ -83,7 +86,8 @@ public class FlushingIntegrationTests extends AbstractHttpHandlerIntegrationTest } catch (AssertionError err) { String os = System.getProperty("os.name").toLowerCase(); - if (os.contains("windows") && err.getMessage().startsWith("VerifySubscriber timed out")) { + if (os.contains("windows") && err.getMessage() != null && + err.getMessage().startsWith("VerifySubscriber timed out")) { // TODO: Reactor usually times out on Windows ... err.printStackTrace(); return; diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/socket/AbstractWebSocketIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/socket/AbstractWebSocketIntegrationTests.java index 4b7465a434..72e5545af3 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/socket/AbstractWebSocketIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/socket/AbstractWebSocketIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -114,7 +114,6 @@ public abstract class AbstractWebSocketIntegrationTests { @Before public void setup() throws Exception { - this.server.setHandler(createHttpHandler()); this.server.afterPropertiesSet(); this.server.start(); @@ -128,7 +127,7 @@ public abstract class AbstractWebSocketIntegrationTests { } @After - public void stop() throws Exception { + public void stop() { if (this.client instanceof Lifecycle) { ((Lifecycle) this.client).stop(); } diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/socket/WebSocketIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/socket/WebSocketIntegrationTests.java index 4bfcdd6d63..b952d46cac 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/socket/WebSocketIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/socket/WebSocketIntegrationTests.java @@ -38,11 +38,11 @@ import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.HandlerMapping; import org.springframework.web.reactive.handler.SimpleUrlHandlerMapping; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; +import static org.junit.Assert.*; /** * Integration tests with server-side {@link WebSocketHandler}s. + * * @author Rossen Stoyanchev */ public class WebSocketIntegrationTests extends AbstractWebSocketIntegrationTests { @@ -64,17 +64,11 @@ public class WebSocketIntegrationTests extends AbstractWebSocketIntegrationTests Flux input = Flux.range(1, count).map(index -> "msg-" + index); ReplayProcessor output = ReplayProcessor.create(count); - this.client.execute(getUrl("/echo"), - session -> { - logger.debug("Starting to send messages"); - return session - .send(input.doOnNext(s -> logger.debug("outbound " + s)).map(session::textMessage)) - .thenMany(session.receive().take(count).map(WebSocketMessage::getPayloadAsText)) - .subscribeWith(output) - .doOnNext(s -> logger.debug("inbound " + s)) - .then(); - }) - .doOnSuccessOrError((aVoid, ex) -> logger.debug("Done: " + (ex != null ? ex.getMessage() : "success"))) + this.client.execute(getUrl("/echo"), session -> session + .send(input.map(session::textMessage)) + .thenMany(session.receive().take(count).map(WebSocketMessage::getPayloadAsText)) + .subscribeWith(output) + .then()) .block(TIMEOUT); assertEquals(input.collectList().block(TIMEOUT), output.collectList().block(TIMEOUT)); @@ -181,7 +175,7 @@ public class WebSocketIntegrationTests extends AbstractWebSocketIntegrationTests @Override public Mono handle(WebSocketSession session) { String protocol = session.getHandshakeInfo().getSubProtocol(); - WebSocketMessage message = session.textMessage(protocol); + WebSocketMessage message = session.textMessage(protocol != null ? protocol : "none"); return session.send(Mono.just(message)); } } @@ -198,6 +192,7 @@ public class WebSocketIntegrationTests extends AbstractWebSocketIntegrationTests } } + private static class SessionClosingHandler implements WebSocketHandler { @Override