|
33 | 33 | import reactor.core.publisher.Mono;
|
34 | 34 | import reactor.test.StepVerifier;
|
35 | 35 |
|
| 36 | +import org.springframework.core.ResolvableType; |
36 | 37 | import org.springframework.core.codec.CharSequenceEncoder;
|
| 38 | +import org.springframework.core.codec.Encoder; |
37 | 39 | import org.springframework.core.io.buffer.DataBuffer;
|
38 | 40 | import org.springframework.core.io.buffer.DefaultDataBufferFactory;
|
39 | 41 | import org.springframework.http.MediaType;
|
@@ -199,6 +201,30 @@ void isStreamingMediaType() throws InvocationTargetException, IllegalAccessExcep
|
199 | 201 | assertThat((Boolean) method.invoke(writer, TEXT_HTML)).isFalse();
|
200 | 202 | }
|
201 | 203 |
|
| 204 | + @Test |
| 205 | + public void noContentTypeWithEmptyBody() { |
| 206 | + Encoder<CharSequence> encoder = CharSequenceEncoder.textPlainOnly(); |
| 207 | + HttpMessageWriter<CharSequence> writer = new EncoderHttpMessageWriter<>(encoder); |
| 208 | + Mono<Void> writerMono = writer.write(Mono.empty(), ResolvableType.forClass(String.class), |
| 209 | + null, this.response, NO_HINTS); |
| 210 | + |
| 211 | + StepVerifier.create(writerMono) |
| 212 | + .verifyComplete(); |
| 213 | + assertThat(response.getHeaders().getContentType()).isNull(); |
| 214 | + } |
| 215 | + |
| 216 | + @Test |
| 217 | + public void zeroContentLengthWithEmptyBody() { |
| 218 | + Encoder<CharSequence> encoder = CharSequenceEncoder.textPlainOnly(); |
| 219 | + HttpMessageWriter<CharSequence> writer = new EncoderHttpMessageWriter<>(encoder); |
| 220 | + Mono<Void> writerMono = writer.write(Mono.empty(), ResolvableType.forClass(String.class), |
| 221 | + null, this.response, NO_HINTS); |
| 222 | + |
| 223 | + StepVerifier.create(writerMono) |
| 224 | + .verifyComplete(); |
| 225 | + assertThat(this.response.getHeaders().getContentLength()).isEqualTo(0); |
| 226 | + } |
| 227 | + |
202 | 228 | private void configureEncoder(MimeType... mimeTypes) {
|
203 | 229 | configureEncoder(Flux.empty(), mimeTypes);
|
204 | 230 | }
|
|
0 commit comments