I am trying to execute a unit test call, but I am getting this error for the following code:
@MultipartConfig(maxFileSize = 3145728) class WebServlet extends ScalatraServlet with FileUploadSupport { override def isSizeConstraintException(e: Exception) = e match { case se: ServletException if se.getMessage.contains("exceeds max filesize") || se.getMessage.startsWith("Request exceeds maxRequestSize") => true case _ => false } error { case e: SizeConstraintExceededException => RequestEntityTooLarge("too much!") } post("/uploadscript") { val privateParam = try {params("private") != null && params("private").equals("true") } catch { case _ => false } println("privateParam = " + privateParam) val file = fileParams("file") println(s"The size of the file is ${file.size}") }
Error:
java.lang.IllegalStateException: No multipart config for servlet at org.eclipse.jetty.server.Request.getParts(Request.java:2064) ~[jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312] at org.scalatra.servlet.FileUploadSupport$class.getParts(FileUploadSupport.scala:133) ~[scalatra_2.10-2.2.1.jar:2.2.1] at org.scalatra.servlet.FileUploadSupport$class.extractMultipartParams(FileUploadSupport.scala:108) ~[scalatra_2.10-2.2.1.jar:2.2.1] at org.scalatra.servlet.FileUploadSupport$class.handle(FileUploadSupport.scala:79) ~[scalatra_2.10-2.2.1.jar:2.2.1] at com.ui.WebServlet.handle(WebServlet.scala:32) ~[classes/:na]
And this is my unit test, and the first succeeds, so it finds my web service:
class WebServletSpecification extends MutableScalatraSpec { addServlet(classOf[WebServlet], "/*") "GET /hello" should { "return status 200" in { get("/hello/testcomputer") { status must_== 200 } } } "POST /uploadscript" should { "return status 200" in { val scriptfile = "testfile" val scriptname = "basescript" post("/uploadscript", Map("private" -> "true"), Map("file" -> new File(scriptfile))) { status must_== 200 } } } }
I run this inside Eclipse and I am not sure what is going on.
It works fine using HttpPost and MultipartEntity , so it seems like it's a problem with Eclipse or how the scalatra specification environment works.
Any idea what could be wrong?
I do not have a separate web.xml.
I use only berth 8.1.10, as can be seen from what I use in build.sbt:
"org.eclipse.jetty"% "jetty-webapp"% "8.1.10.v20130312"% "Container"
source share