sullis      2004/12/07 19:53:42

  Added:       fileupload/src/test/org/apache/commons/fileupload
                        ServletFileUploadTest.java
  Log:
  servlet file upload testcase
  
  Revision  Changes    Path
  1.1                  
jakarta-commons/fileupload/src/test/org/apache/commons/fileupload/ServletFileUploadTest.java
  
  Index: ServletFileUploadTest.java
  ===================================================================
  /*
   * Copyright 2001-2004 The Apache Software Foundation
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.commons.fileupload;
  
  import java.io.IOException;
  import java.io.UnsupportedEncodingException;
  import java.util.List;
  import javax.servlet.http.HttpServletRequest;
  import junit.framework.TestCase;
  
  /**
   * Unit tests [EMAIL PROTECTED] org.apache.commons.fileupload.DiskFileUpload}.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">John McNally</a>
   * @author Sean C. Sullivan
   *
   */
  public class ServletFileUploadTest extends TestCase
  {
        public void testWithInvalidRequest()
      {
        FileUploadBase fu = null;
  
        fu = new DiskFileUpload();
  
        HttpServletRequest req = 
HttpServletRequestFactory.createInvalidHttpServletRequest();
  
  
        try
        {
                fu.parseRequest(req);
                fail("testWithInvalidRequest: expected exception was not 
thrown");
        }
        catch (FileUploadException expected)
        {
                // this exception is expected
        }
  
      }
  
  
        public void testWithNullContentType()
      {
        FileUploadBase fu = new DiskFileUpload();
  
        HttpServletRequest req = 
HttpServletRequestFactory.createHttpServletRequestWithNullContentType();
  
        try
        {
                fu.parseRequest(req);
                fail("testWithNullContentType: expected exception was not 
thrown");
        }
        catch (DiskFileUpload.InvalidContentTypeException expected)
        {
                // this exception is expected
        }
          catch (FileUploadException unexpected)
          {
                fail("testWithNullContentType: unexpected exception was 
thrown");
          }
  
      }
  
  
      public FileUploadTest(String name)
      {
          super(name);
      }
  
  
      public void testFileUpload()
              throws IOException, FileUploadException
      {
          List fileItems = parseUpload("-----1234\r\n" +
                          "Content-Disposition: form-data; name=\"file\"; 
filename=\"foo.tab\"\r\n" +
                          "Content-Type: text/whatever\r\n" +
                          "\r\n" +
                          "This is the content of the file\n" +
                          "\r\n" +
                          "-----1234\r\n" +
                          "Content-Disposition: form-data; name=\"field\"\r\n" +
                          "\r\n" +
                          "fieldValue\r\n" +
                          "-----1234\r\n" +
                          "Content-Disposition: form-data; name=\"multi\"\r\n" +
                          "\r\n" +
                          "value1\r\n" +
                          "-----1234\r\n" +
                          "Content-Disposition: form-data; name=\"multi\"\r\n" +
                          "\r\n" +
                          "value2\r\n" +
                          "-----1234--\r\n");
          assertEquals(4, fileItems.size());
  
          FileItem file = (FileItem) fileItems.get(0);
          assertEquals("file", file.getFieldName());
          assertFalse(file.isFormField());
          assertEquals("This is the content of the file\n", file.getString());
          assertEquals("text/whatever", file.getContentType());
          assertEquals("foo.tab", file.getName());
  
          FileItem field = (FileItem) fileItems.get(1);
          assertEquals("field", field.getFieldName());
          assertTrue(field.isFormField());
          assertEquals("fieldValue", field.getString());
  
          FileItem multi0 = (FileItem) fileItems.get(2);
          assertEquals("multi", multi0.getFieldName());
          assertTrue(multi0.isFormField());
          assertEquals("value1", multi0.getString());
  
          FileItem multi1 = (FileItem) fileItems.get(3);
          assertEquals("multi", multi1.getFieldName());
          assertTrue(multi1.isFormField());
          assertEquals("value2", multi1.getString());
      }
  
      /**
       * This is what the browser does if you submit the form without choosing 
a file.
       */
      public void testEmptyFile()
              throws UnsupportedEncodingException, FileUploadException
      {
          List fileItems = parseUpload ("-----1234\r\n" +
                  "Content-Disposition: form-data; name=\"file\"; 
filename=\"\"\r\n" +
                  "\r\n" +
                  "\r\n" +
                  "-----1234--\r\n");
          assertEquals(1, fileItems.size());
  
          FileItem file = (FileItem) fileItems.get(0);
          assertFalse(file.isFormField());
          assertEquals("", file.getString());
          assertEquals("", file.getName());
      }
  
      /**
       * Internet Explorer 5 for the Mac has a bug where the carriage
       * return is missing on any boundary line immediately preceding
       * an input with type=image. (type=submit does not have the bug.)
       */
      public void testIE5MacBug()
              throws UnsupportedEncodingException, FileUploadException
      {
          List fileItems = parseUpload("-----1234\r\n" +
                  "Content-Disposition: form-data; name=\"field1\"\r\n" +
                  "\r\n" +
                  "fieldValue\r\n" +
                  "-----1234\n" + // NOTE \r missing
                  "Content-Disposition: form-data; name=\"submitName.x\"\r\n" +
                  "\r\n" +
                  "42\r\n" +
                  "-----1234\n" + // NOTE \r missing
                  "Content-Disposition: form-data; name=\"submitName.y\"\r\n" +
                  "\r\n" +
                  "21\r\n" +
                  "-----1234\r\n" +
                  "Content-Disposition: form-data; name=\"field2\"\r\n" +
                  "\r\n" +
                  "fieldValue2\r\n" +
                  "-----1234--\r\n");
  
          assertEquals(4, fileItems.size());
  
          FileItem field1 = (FileItem) fileItems.get(0);
          assertEquals("field1", field1.getFieldName());
          assertTrue(field1.isFormField());
          assertEquals("fieldValue", field1.getString());
  
          FileItem submitX = (FileItem) fileItems.get(1);
          assertEquals("submitName.x", submitX.getFieldName());
          assertTrue(submitX.isFormField());
          assertEquals("42", submitX.getString());
  
          FileItem submitY = (FileItem) fileItems.get(2);
          assertEquals("submitName.y", submitY.getFieldName());
          assertTrue(submitY.isFormField());
          assertEquals("21", submitY.getString());
  
          FileItem field2 = (FileItem) fileItems.get(3);
          assertEquals("field2", field2.getFieldName());
          assertTrue(field2.isFormField());
          assertEquals("fieldValue2", field2.getString());
      }
  
      private List parseUpload(String content)
              throws UnsupportedEncodingException, FileUploadException
      {
          byte[] bytes = content.getBytes("US-ASCII");
  
          String contentType = "multipart/form-data; boundary=---1234";
  
          FileUploadBase upload = new DiskFileUpload();
          HttpServletRequest request = new MockHttpServletRequest(bytes, 
contentType);
  
          List fileItems = upload.parseRequest(request);
          return fileItems;
      }
  
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to