private HttpMessageWriter<String> getWriter(MimeType... mimeTypes) { return getWriter(Flux.empty(), mimeTypes); }
@Test public void getWritableMediaTypes() { HttpMessageWriter<?> writer = getWriter(MimeTypeUtils.TEXT_HTML, MimeTypeUtils.TEXT_XML); assertEquals(Arrays.asList(TEXT_HTML, TEXT_XML), writer.getWritableMediaTypes()); }
private void testDefaultMediaType(MediaType negotiatedMediaType) { this.mediaTypeCaptor = ArgumentCaptor.forClass(MediaType.class); MimeType defaultContentType = MimeTypeUtils.TEXT_XML; HttpMessageWriter<String> writer = getWriter(defaultContentType); writer.write(Mono.just("body"), forClass(String.class), negotiatedMediaType, this.response, NO_HINTS); assertEquals(defaultContentType, this.response.getHeaders().getContentType()); assertEquals(defaultContentType, this.mediaTypeCaptor.getValue()); }
@Test public void useNegotiatedMediaType() { HttpMessageWriter<String> writer = getWriter(MimeTypeUtils.ALL); writer.write(Mono.just("body"), forClass(String.class), TEXT_PLAIN, this.response, NO_HINTS); assertEquals(TEXT_PLAIN, response.getHeaders().getContentType()); assertEquals(TEXT_PLAIN, this.mediaTypeCaptor.getValue()); }
@Test public void useHttpOutputMessageMediaType() { MediaType outputMessageMediaType = MediaType.TEXT_HTML; this.response.getHeaders().setContentType(outputMessageMediaType); HttpMessageWriter<String> writer = getWriter(TEXT_PLAIN_UTF_8, TEXT_HTML); writer.write(Mono.just("body"), forClass(String.class), TEXT_PLAIN, this.response, NO_HINTS); assertEquals(outputMessageMediaType, this.response.getHeaders().getContentType()); assertEquals(outputMessageMediaType, this.mediaTypeCaptor.getValue()); }
@Test public void setContentLengthForMonoBody() { DefaultDataBufferFactory factory = new DefaultDataBufferFactory(); DataBuffer buffer = factory.wrap("body".getBytes(StandardCharsets.UTF_8)); HttpMessageWriter<String> writer = getWriter(Flux.just(buffer), MimeTypeUtils.TEXT_PLAIN); writer.write(Mono.just("body"), forClass(String.class), TEXT_PLAIN, this.response, NO_HINTS).block(); assertEquals(4, this.response.getHeaders().getContentLength()); }
@Test public void useNegotiatedMediaTypeCharset() { MediaType negotiatedMediaType = new MediaType("text", "html", ISO_8859_1); HttpMessageWriter<String> writer = getWriter(TEXT_PLAIN_UTF_8, TEXT_HTML); writer.write(Mono.just("body"), forClass(String.class), negotiatedMediaType, this.response, NO_HINTS); assertEquals(negotiatedMediaType, this.response.getHeaders().getContentType()); assertEquals(negotiatedMediaType, this.mediaTypeCaptor.getValue()); }
@Test // SPR-17220 public void emptyBodyWritten() { HttpMessageWriter<String> writer = getWriter(MimeTypeUtils.TEXT_PLAIN); writer.write(Mono.empty(), forClass(String.class), TEXT_PLAIN, this.response, NO_HINTS).block(); StepVerifier.create(this.response.getBody()).expectComplete(); assertEquals(0, this.response.getHeaders().getContentLength()); }
@Test public void canWrite() { HttpMessageWriter<?> writer = getWriter(MimeTypeUtils.TEXT_HTML); when(this.encoder.canEncode(forClass(String.class), TEXT_HTML)).thenReturn(true); assertTrue(writer.canWrite(forClass(String.class), TEXT_HTML)); assertFalse(writer.canWrite(forClass(String.class), TEXT_XML)); }
@Test public void useDefaultMediaTypeCharset() { HttpMessageWriter<String> writer = getWriter(TEXT_PLAIN_UTF_8, TEXT_HTML); writer.write(Mono.just("body"), forClass(String.class), TEXT_HTML, response, NO_HINTS); assertEquals(new MediaType("text", "html", UTF_8), this.response.getHeaders().getContentType()); assertEquals(new MediaType("text", "html", UTF_8), this.mediaTypeCaptor.getValue()); }