package pl.touk.tola.spring.mvc;
import org.springframework.web.servlet.mvc.AbstractController;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import java.util.MissingResourceException;
public class FileRepositoryControllerTest {
@Test(expected = IllegalArgumentException.class)
public void testHandleRequestInternal1() throws Exception {
AbstractController controller = new FileRepositoryController();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setMethod("GET");
// Invalid request - without id parameter:
controller.handleRequest(request, response);
}
@Test(expected = IllegalArgumentException.class)
public void testHandleRequestInternal2() throws Exception {
AbstractController controller = new FileRepositoryController();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setMethod("GET");
// Invalid request - with invalid id parameter:
request.setParameter("id", "abc");
controller.handleRequest(request, response);
}
@Test(expected = NullPointerException.class)
public void testHandleRequestInternal3() throws Exception {
AbstractController controller = new FileRepositoryController();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setMethod("GET");
// Valid request but repository not set:
request.setParameter("id", "1");
controller.handleRequest(request, response);
}
@Test(expected = MissingResourceException.class)
public void testHandleRequestInternal4() throws Exception {
FileRepositoryController controller = new FileRepositoryController();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setMethod("GET");
// Valid request but empty repository:
FileRepository repository = new ConcurrentFileRepository();
controller.setFileRepository(repository);
request.setParameter("id", "1");
controller.handleRequest(request, response);
}
@Test
public void testHandleRequestInternal5() throws Exception {
FileRepositoryController controller = new FileRepositoryController();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setMethod("GET");
FileRepository repository = new ConcurrentFileRepository();
Long id = repository.saveFile(new ModelToByteArrayConverter() {
public byte[] convert() {
byte[] a = new byte[1];
a[0] = 'a';
return a;
}
});
controller.setFileRepository(repository);
request.setParameter("id", id.toString());
String contentType = "someContentType";
request.setParameter("contentType", contentType);
controller.handleRequest(request, response);
assertTrue("a".equals(response.getContentAsString()));
assertTrue(contentType.equals(response.getHeader("Content-Type")));
}
}