📄 fileuploadcontrollertest.java
字号:
package org.appfuse.web;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import junit.framework.TestCase;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.io.Resource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockServletContext;
import org.springframework.web.context.support.XmlWebApplicationContext;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.ModelAndView;
import com.dumbster.smtp.SimpleSmtpServer;
public class FileUploadControllerTest extends TestCase {
private static Log log = LogFactory.getLog(FileUploadControllerTest.class);
private XmlWebApplicationContext ctx = null;
private FileUploadController fileUpload = null;
public void setUp() {
String[] paths = {"/WEB-INF/applicationContext*.xml",
"/WEB-INF/action-servlet.xml"};
ctx = new XmlWebApplicationContext();
ctx.setConfigLocations(paths);
ServletContext servletContext = new MockServletContext("file:web");
ctx.setServletContext(servletContext);
ctx.refresh();
fileUpload = (FileUploadController) ctx.getBean("fileUploadController");
// Create a mailSender that'll use Dumbster's ports
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("localhost");
mailSender.setPort(2525);
fileUpload.setMailSender(mailSender);
}
public void testUpload() throws Exception {
log.debug("testing upload...");
MockHttpServletRequest request =
new MockHttpServletRequest("POST", "/fileUpload.html");
MockCommonsMultipartResolver resolver = new MockCommonsMultipartResolver();
ctx.getServletContext();
request.setContentType("multipart/form-data");
request.addHeader("Content-type", "multipart/form-data");
assertTrue(resolver.isMultipart(request));
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
// setup a simple mail server using Dumbster
SimpleSmtpServer server = SimpleSmtpServer.start(2525);
ModelAndView mav =
fileUpload.handleRequest(multipartRequest, new MockHttpServletResponse());
server.stop();
// yes the getReceieved method is spelled wrong in Dumbster's API. ;-)
assertEquals(1, server.getReceievedEmailSize());
log.debug("model: " + mav.getModel());
assertNotNull(request.getSession().getAttribute("message"));
// ensure the file got uploaded
Resource uploadedFile = ctx.getResource("file:web/upload/test.xml");
assertTrue(uploadedFile.exists());
// delete the upload directory
Resource uploadDir = ctx.getResource("file:web/upload");
uploadedFile.getFile().delete();
uploadDir.getFile().delete();
assertFalse(uploadDir.exists());
}
public static class MockCommonsMultipartResolver extends CommonsMultipartResolver {
private boolean empty;
protected void setEmpty(boolean empty) {
this.empty = empty;
}
protected DiskFileUpload newFileUpload() {
return new DiskFileUpload() {
public List parseRequest(HttpServletRequest request) {
if (request instanceof MultipartHttpServletRequest) {
throw new IllegalStateException("Already a multipart request");
}
List fileItems = new ArrayList();
MockFileItem fileItem = new MockFileItem(
"file", "text/html", empty ? "" : "test.xml", empty ? "" : "<root/>");
fileItems.add(fileItem);
return fileItems;
}
};
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -