package org.molgenis.util;
import org.springframework.util.FileCopyUtils;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.servlet.http.Part;
import java.io.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.Assert.*;
public class FileUploadUtilsTest
{
private Part part;
@BeforeMethod
public void setUp()
{
part = mock(Part.class);
}
@Test
public void getOriginalFileName()
{
when(part.getHeader("content-disposition")).thenReturn("form-data; name=\"upload\"; filename=\"example.xls\"");
String filename = FileUploadUtils.getOriginalFileName(part);
assertEquals(filename, "example.xls");
}
@Test
public void getOriginalFileNameWithMissingHeader()
{
when(part.getHeader("content-disposition")).thenReturn(null);
assertNull(FileUploadUtils.getOriginalFileName(part));
}
@Test
public void getOriginalFileNameNoFileSelected()
{
when(part.getHeader("content-disposition")).thenReturn("form-data; name=\"upload\"; filename=\"\"");
String filename = FileUploadUtils.getOriginalFileName(part);
assertNull(filename);
}
@Test
public void saveToTempFile() throws UnsupportedEncodingException, IOException
{
String fileContent = "Hey dude";
when(part.getHeader("content-disposition")).thenReturn("form-data; name=\"upload\"; filename=\"example.txt\"");
when(part.getInputStream()).thenReturn(new ByteArrayInputStream(fileContent.getBytes("UTF-8")));
File tempFile = FileUploadUtils.saveToTempFile(part);
try
{
assertNotNull(tempFile);
assertTrue(tempFile.exists());
assertEquals(FileCopyUtils.copyToString(new FileReader(tempFile)), fileContent);
}
finally
{
tempFile.delete();
}
}
}