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 static org.junit.Assert.assertEquals;
10 import static org.junit.Assert.assertNull;
11 import static org.mockito.Mockito.mock;
12 import static org.mockito.Mockito.when;
13
14 public class CommonsFileUploadFilePartTest
15 {
16 private FileItem fileItem;
17
18 @Before
19 public void setUp()
20 {
21 fileItem = mock(FileItem.class);
22 }
23
24 @Test
25 public void fileItemWithNullFileNameShouldSimplyReturnNull()
26 {
27 CommonsFileUploadFilePart filePart = new CommonsFileUploadFilePart(fileItem);
28 assertNull(filePart.getName());
29 }
30
31 @Test
32 public void fileItemWithASCIIFileNameShouldReturnASCIIValue()
33 {
34 when(fileItem.getName()).thenReturn("normalchars");
35 CommonsFileUploadFilePart filePart = new CommonsFileUploadFilePart(fileItem);
36 assertEquals("normalchars", filePart.getName());
37 }
38
39 @Test
40 public void fileItemWithEncodedUTF8FileNameShouldReturnUTF8Value()
41 {
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 {
50 when(fileItem.getName()).thenReturn("тест");
51 CommonsFileUploadFilePart filePart = new CommonsFileUploadFilePart(fileItem);
52 assertEquals("тест", filePart.getName());
53 }
54
55 @Test(expected = UnsupportedFileNameEncodingException.class)
56 public void fileItemNamedWithUnsupportedCharacterEncodingShouldThrowException()
57 {
58 when(fileItem.getName()).thenReturn("=?utf-unknown?B?unknown?=");
59 new CommonsFileUploadFilePart(fileItem);
60 }
61 }