package no.dusken.aranea.control;
import no.dusken.common.exception.PageNotFoundException;
import org.junit.Before;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import java.io.File;
import java.io.IOException;
import static junit.framework.Assert.assertTrue;
/**
* @author Marvin B. Lillehaug <lillehau@underdusken.no>
*/
public class TestFileController {
private FileController fileController;
private String resourceDir = "src/test/resources/images/";
@Before
public void setUp() throws IOException {
fileController = new FileController();
fileController.setResourceDir(new File(resourceDir));
}
@Test
public void getExistingFileInResourceDir() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.addParameter("path", "testImage.jpg");
assertTrue("testImage.jpg has been removed", (new File(resourceDir, "testImage.jpg")).exists());
ModelAndView mav = fileController.handleRequestInternal(request, response);
assertTrue(((File)mav.getModel().get("file")).exists());
}
@Test(expected = PageNotFoundException.class)
public void getGetNonExistingFileInResourceDir() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.addParameter("path", "testImageNotThere.jpg");
assertTrue("a file that should not exists, exists", !(new File(resourceDir, "testImageNotThere.jpg")).exists());
ModelAndView mav = fileController.handleRequestInternal(request, response);
assertTrue(!((File)mav.getModel().get("file")).exists());
}
@Test(expected = PageNotFoundException.class)
public void getExistingFileOutsideResourceDir() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.addParameter("path", ".." + File.separator + "testFile");
assertTrue("testFile has been deleted", (new File("src/test/resources/", "testFile")).exists());
ModelAndView mav = fileController.handleRequestInternal(request, response);
assertTrue(((File)mav.getModel().get("file")).exists());
}
@Test(expected = PageNotFoundException.class)
public void getDirectory() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.addParameter("path", ".");
assertTrue("The resourcedir does not exist", (new File(resourceDir)).exists());
ModelAndView mav = fileController.handleRequestInternal(request, response);
assertTrue(((File)mav.getModel().get("file")).exists());
}
@Test
public void testFileCompareTo(){
File file = new File(resourceDir);
File middlefile = new File(file, "middleFile");
File lastFile = new File(middlefile, "lastFile");
assertTrue("file is not lower than middlefile", file.compareTo(middlefile) < 0);
assertTrue("middle is not middlefile", middlefile.compareTo(middlefile) == 0);
assertTrue("file is not lower than lastfile", file.compareTo(lastFile) < 0);
assertTrue("lastfile is not higher than file", lastFile.compareTo(file) > 0);
}
}