View Javadoc

1   package com.atlassian.plugins.rest.common.multipart.fileupload;
2   
3   import com.atlassian.plugins.rest.common.multipart.UnsupportedFileNameEncodingException;
4   
5   import org.apache.commons.fileupload.FileItem;
6   import org.junit.Before;
7   import org.junit.Test;
8   
9   import java.io.File;
10  import java.util.Arrays;
11  
12  import static org.hamcrest.core.Is.is;
13  import static org.junit.Assert.assertEquals;
14  import static org.junit.Assert.assertNull;
15  import static org.junit.Assert.assertThat;
16  import static org.mockito.Mockito.mock;
17  import static org.mockito.Mockito.when;
18  
19  public class CommonsFileUploadFilePartTest {
20      private FileItem fileItem;
21  
22      @Before
23      public void setUp() {
24          fileItem = mock(FileItem.class);
25      }
26  
27      @Test
28      public void fileItemWithNullFileNameShouldSimplyReturnNull() {
29          CommonsFileUploadFilePart filePart = new CommonsFileUploadFilePart(fileItem);
30          assertNull(filePart.getName());
31      }
32  
33      @Test
34      public void fileItemWithASCIIFileNameShouldReturnASCIIValue() {
35          when(fileItem.getName()).thenReturn("normalchars");
36          CommonsFileUploadFilePart filePart = new CommonsFileUploadFilePart(fileItem);
37          assertEquals("normalchars", filePart.getName());
38      }
39  
40      @Test
41      public void fileItemWithEncodedUTF8FileNameShouldReturnUTF8Value() {
42          when(fileItem.getName()).thenReturn("=?utf-8?B?0YLQtdGB0YI=?=");
43          CommonsFileUploadFilePart filePart = new CommonsFileUploadFilePart(fileItem);
44          assertEquals("тест", filePart.getName());
45      }
46  
47      @Test
48      public void fileItemWithUnencodedUTF8FileNameShouldReturnUTF8Value() {
49          when(fileItem.getName()).thenReturn("тест");
50          CommonsFileUploadFilePart filePart = new CommonsFileUploadFilePart(fileItem);
51          assertEquals("тест", filePart.getName());
52      }
53  
54      @Test(expected = UnsupportedFileNameEncodingException.class)
55      public void fileItemNamedWithUnsupportedCharacterEncodingShouldThrowException() {
56          when(fileItem.getName()).thenReturn("=?utf-unknown?B?unknown?=");
57          new CommonsFileUploadFilePart(fileItem);
58      }
59  
60      @Test
61      public void testGetName() {
62          CommonsFileUploadFilePart filePart;
63          for (String fileName : Arrays.asList("/tmp/file", "what", "../../what")) {
64              final String expectedName = new File(fileName).getName();
65              FileItem fileItem = getMockFileItem(fileName);
66              filePart = new CommonsFileUploadFilePart(fileItem);
67              assertThat(filePart.getName(), is(expectedName));
68          }
69      }
70  
71      private FileItem getMockFileItem(String filename) {
72          FileItem fileItem = mock(FileItem.class);
73          when(fileItem.getName()).thenReturn(filename);
74          return fileItem;
75      }
76  
77  }