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 org.junit.Before; import org.junit.Test; public class DownloadStreamTest { private String filename = "A å日.png"; private String encodedFileName = "A" + "%20" // space + "%c3%a5" // å + "%e6%97%a5" // 日 + ".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); 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))); } }