From d581d48d24626d37ef1b3fad455ce03e10326c8f Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Tue, 13 Sep 2022 21:14:50 +0100 Subject: [PATCH] Polishing ResponseBodyEmitterReturnValueHandlerTests --- ...nseBodyEmitterReturnValueHandlerTests.java | 55 +++++++------------ 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandlerTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandlerTests.java index d17d0cad313..d3415b515a5 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandlerTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandlerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2022 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. @@ -85,7 +85,7 @@ public class ResponseBodyEmitterReturnValueHandlerTests { @Test - public void supportsReturnTypes() throws Exception { + public void supportsReturnTypes() { assertThat(this.handler.supportsReturnType( on(TestController.class).resolveReturnType(ResponseBodyEmitter.class))).isTrue(); @@ -105,7 +105,7 @@ public class ResponseBodyEmitterReturnValueHandlerTests { } @Test - public void doesNotSupportReturnTypes() throws Exception { + public void doesNotSupportReturnTypes() { assertThat(this.handler.supportsReturnType( on(TestController.class).resolveReturnType(ResponseEntity.class, String.class))).isFalse(); @@ -142,9 +142,10 @@ public class ResponseBodyEmitterReturnValueHandlerTests { bean.setName("Jason"); emitter.send(bean); - assertThat(this.response.getContentAsString()).isEqualTo(("{\"id\":1,\"name\":\"Joe\"}\n" + - "{\"id\":2,\"name\":\"John\"}\n" + - "{\"id\":3,\"name\":\"Jason\"}")); + assertThat(this.response.getContentAsString()).isEqualTo((""" + {"id":1,"name":"Joe"} + {"id":2,"name":"John"} + {"id":3,"name":"Jason"}""")); MockAsyncContext asyncContext = (MockAsyncContext) this.request.getAsyncContext(); assertThat(asyncContext.getDispatchedPath()).isNull(); @@ -212,13 +213,15 @@ public class ResponseBodyEmitterReturnValueHandlerTests { comment("a test").name("update").id("1").reconnectTime(5000L).data(bean1).data(bean2)); assertThat(this.response.getContentType()).isEqualTo("text/event-stream"); - assertThat(this.response.getContentAsString()).isEqualTo((":a test\n" + - "event:update\n" + - "id:1\n" + - "retry:5000\n" + - "data:{\"id\":1,\"name\":\"Joe\"}\n" + - "data:{\"id\":2,\"name\":\"John\"}\n" + - "\n")); + assertThat(this.response.getContentAsString()).isEqualTo((""" + :a test + event:update + id:1 + retry:5000 + data:{"id":1,"name":"Joe"} + data:{"id":2,"name":"John"} + + """)); } @Test @@ -227,17 +230,11 @@ public class ResponseBodyEmitterReturnValueHandlerTests { this.request.addHeader("Accept", "text/event-stream"); MethodParameter type = on(TestController.class).resolveReturnType(Flux.class, String.class); - Sinks.Many sink = Sinks.many().unicast().onBackpressureBuffer(); - this.handler.handleReturnValue(sink.asFlux(), type, this.mavContainer, this.webRequest); + this.handler.handleReturnValue(Flux.just("foo", "bar", "baz"), type, this.mavContainer, this.webRequest); assertThat(this.request.isAsyncStarted()).isTrue(); assertThat(this.response.getStatus()).isEqualTo(200); - sink.tryEmitNext("foo"); - sink.tryEmitNext("bar"); - sink.tryEmitNext("baz"); - sink.tryEmitComplete(); - assertThat(this.response.getContentType()).isEqualTo("text/event-stream"); assertThat(this.response.getContentAsString()).isEqualTo("data:foo\n\ndata:bar\n\ndata:baz\n\n"); } @@ -247,16 +244,12 @@ public class ResponseBodyEmitterReturnValueHandlerTests { this.request.addHeader("Accept", "text/event-stream"); + IllegalStateException ex = new IllegalStateException("wah wah"); MethodParameter type = on(TestController.class).resolveReturnType(Flux.class, String.class); - Sinks.Many sink = Sinks.many().unicast().onBackpressureBuffer(); - this.handler.handleReturnValue(sink.asFlux(), type, this.mavContainer, this.webRequest); + this.handler.handleReturnValue(Flux.error(ex), type, this.mavContainer, this.webRequest); assertThat(this.request.isAsyncStarted()).isTrue(); - IllegalStateException ex = new IllegalStateException("wah wah"); - sink.tryEmitError(ex); - sink.tryEmitComplete(); - WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(this.webRequest); assertThat(asyncManager.getConcurrentResult()).isSameAs(ex); assertThat(this.response.getContentType()).isNull(); @@ -290,8 +283,7 @@ public class ResponseBodyEmitterReturnValueHandlerTests { @Test public void responseEntityFlux() throws Exception { - Sinks.Many sink = Sinks.many().unicast().onBackpressureBuffer(); - ResponseEntity> entity = ResponseEntity.ok().body(sink.asFlux()); + ResponseEntity> entity = ResponseEntity.ok().body(Flux.just("foo", "bar", "baz")); ResolvableType bodyType = forClassWithGenerics(Flux.class, String.class); MethodParameter type = on(TestController.class).resolveReturnType(ResponseEntity.class, bodyType); this.handler.handleReturnValue(entity, type, this.mavContainer, this.webRequest); @@ -299,11 +291,6 @@ public class ResponseBodyEmitterReturnValueHandlerTests { assertThat(this.request.isAsyncStarted()).isTrue(); assertThat(this.response.getStatus()).isEqualTo(200); - sink.tryEmitNext("foo"); - sink.tryEmitNext("bar"); - sink.tryEmitNext("baz"); - sink.tryEmitComplete(); - assertThat(this.response.getContentType()).isEqualTo("text/plain"); assertThat(this.response.getContentAsString()).isEqualTo("foobarbaz"); } @@ -324,7 +311,7 @@ public class ResponseBodyEmitterReturnValueHandlerTests { } - @SuppressWarnings("unused") + @SuppressWarnings({"unused", "ConstantConditions"}) private static class TestController { private ResponseBodyEmitter h1() { return null; }