diff options
author | Anna Miroshnik <anna.miroshnik@arcadia.spb.ru> | 2015-03-12 18:56:10 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-06-05 14:03:47 +0000 |
commit | d7284ccfe40f7028e880328566bb825ea31ad619 (patch) | |
tree | 6f1f4b4a676aa7e2bd57ed12162ab1860bd959ea /server/tests/src/com/vaadin | |
parent | c4d006d0c6098b1047adb56c0fc7df6f71fe620c (diff) | |
download | vaadin-framework-d7284ccfe40f7028e880328566bb825ea31ad619.tar.gz vaadin-framework-d7284ccfe40f7028e880328566bb825ea31ad619.zip |
Format UTF-8 filenames correctly for download (#16556)
The code is the same for both FileDownloader and DownloadStream except
that FileDownloader forces the content-type to be an "attachment".
Change-Id: I50abf3b0f019b773bc0a44b16536a9479f9f472f
Diffstat (limited to 'server/tests/src/com/vaadin')
-rw-r--r-- | server/tests/src/com/vaadin/server/DownloadStreamTest.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/server/tests/src/com/vaadin/server/DownloadStreamTest.java b/server/tests/src/com/vaadin/server/DownloadStreamTest.java new file mode 100644 index 0000000000..180b2e348b --- /dev/null +++ b/server/tests/src/com/vaadin/server/DownloadStreamTest.java @@ -0,0 +1,39 @@ +package com.vaadin.server; + +import static org.mockito.Matchers.contains; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; + +import org.junit.Before; +import org.junit.Test; + +public class DownloadStreamTest { + private String filename = "日本語.png"; + private DownloadStream stream; + + @Before + public void setup() { + stream = new DownloadStream(mock(InputStream.class), "", filename); + } + + @Test + public void contentDispositionFilenameIsUtf8Encoded() throws IOException { + VaadinResponse response = mock(VaadinResponse.class); + + stream.writeResponse(mock(VaadinRequest.class), response); + + String encodedFileName = URLEncoder.encode(filename, "utf-8"); + verify(response).setHeader(eq(DownloadStream.CONTENT_DISPOSITION), + contains(String.format("filename=\"%s\";", encodedFileName))); + verify(response) + .setHeader( + eq(DownloadStream.CONTENT_DISPOSITION), + contains(String.format("filename*=utf-8''%s", + encodedFileName))); + } +} |