Title: [1072] trunk/jopenssl: Better handling of Mime parsing, and tests of this
Revision
1072
Author
olabini
Date
2008-07-27 12:10:27 -0400 (Sun, 27 Jul 2008)

Log Message

Better handling of Mime parsing, and tests of this

Modified Paths


Diff

Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/MimeHeader.java (1071 => 1072)


--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/MimeHeader.java	2008-07-25 11:47:11 UTC (rev 1071)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/MimeHeader.java	2008-07-27 16:10:27 UTC (rev 1072)
@@ -48,8 +48,12 @@
     }
 
     public MimeHeader(String name, String value, List<MimeParam> params) {
-        this.name = name;
-        this.value = value;
+        this.name = (name == null) ?
+            null :
+            name.toLowerCase();
+        this.value = (value == null) ?
+            null :
+            value.toLowerCase();
         this.params = params;
     }
 

Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/MimeParam.java (1071 => 1072)


--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/MimeParam.java	2008-07-25 11:47:11 UTC (rev 1071)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/MimeParam.java	2008-07-27 16:10:27 UTC (rev 1072)
@@ -36,7 +36,9 @@
     private String paramValue;
 
     public MimeParam(String name, String value) {
-        this.paramName = name;
+        this.paramName = (name == null) ?
+            null :
+            name.toLowerCase();
         this.paramValue = value;
     }
 
@@ -47,4 +49,21 @@
     public String getParamValue() {
         return this.paramValue;
     }
+
+    @Override
+    public boolean equals(Object other) {
+        boolean ret = this == other;
+        if(!ret && (other instanceof MimeParam)) {
+            MimeParam mh = (MimeParam)other;
+            ret = 
+                ((this.paramName == null) ? mh.paramName == null : this.paramName.equals(mh.paramName)) &&
+                ((this.paramValue == null) ? mh.paramValue == null : this.paramValue.equals(mh.paramValue));
+        }
+        return ret;
+    }
+
+    @Override
+    public String toString() {
+        return "#<Param " + paramName + "="+paramValue+">";
+    }
 }// MimeParam

Modified: trunk/jopenssl/test/test_java_mime.rb (1071 => 1072)


--- trunk/jopenssl/test/test_java_mime.rb	2008-07-25 11:47:11 UTC (rev 1071)
+++ trunk/jopenssl/test/test_java_mime.rb	2008-07-27 16:10:27 UTC (rev 1072)
@@ -29,6 +29,7 @@
       result = Mime::DEFAULT.parse_headers(bio)
       assert_equal 1, result.size
       assert_equal MimeHeader.new("Foo", "bar"), result.first
+      assert_equal "foo", result.first.name
     end
 
     def test_simple_parse_headers2
@@ -36,6 +37,7 @@
       result = Mime::DEFAULT.parse_headers(bio)
       assert_equal 1, result.size
       assert_equal MimeHeader.new("Foo", "bar"), result.first
+      assert_equal "foo", result.first.name
     end
 
     def test_simple_parse_headers3
@@ -43,6 +45,7 @@
       result = Mime::DEFAULT.parse_headers(bio)
       assert_equal 1, result.size
       assert_equal MimeHeader.new("Foo", "bar"), result.first
+      assert_equal "foo", result.first.name
     end
 
     def test_simple_parse_headers4
@@ -50,6 +53,7 @@
       result = Mime::DEFAULT.parse_headers(bio)
       assert_equal 1, result.size
       assert_equal MimeHeader.new("Foo", "bar"), result.first
+      assert_equal "foo", result.first.name
     end
 
     def test_simple_parse_headers5
@@ -57,6 +61,7 @@
       result = Mime::DEFAULT.parse_headers(bio)
       assert_equal 1, result.size
       assert_equal MimeHeader.new("Foo", "bar"), result.first
+      assert_equal "foo", result.first.name
     end
 
 
@@ -65,6 +70,7 @@
       result = Mime::DEFAULT.parse_headers(bio)
       assert_equal 1, result.size
       assert_equal MimeHeader.new("Foo", "bar"), result.first
+      assert_equal "foo", result.first.name
     end
 
     def test_simple_parse_headers7
@@ -73,13 +79,57 @@
       assert_equal 2, result.size
       assert_equal MimeHeader.new("Foo", "bar"), result[0]
       assert_equal MimeHeader.new("Flurg", "blarg"), result[1]
+      assert_equal "foo", result[0].name
+      assert_equal "flurg", result[1].name
     end
 
-    def test_simple_parse_headers8
+    def test_simple_parse_headers_quotes
       bio = BIO::from_string("Foo: \"bar\"")
       result = Mime::DEFAULT.parse_headers(bio)
       assert_equal 1, result.size
       assert_equal MimeHeader.new("Foo", "bar"), result[0]
+      assert_equal "foo", result.first.name
     end
+
+    def test_simple_parse_headers_comment
+      bio = BIO::from_string("Foo: (this is the right thing)ba(and this is the wrong one)r")
+      result = Mime::DEFAULT.parse_headers(bio)
+      assert_equal 1, result.size
+      assert_equal MimeHeader.new("Foo", "(this is the right thing)ba(and this is the wrong one)r"), result[0]
+      assert_equal "foo", result.first.name
+    end
+
+    def test_parse_headers_with_param
+      bio = BIO::from_string("Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml")
+      result = Mime::DEFAULT.parse_headers(bio)
+      assert_equal 1, result.size
+      header = result.first
+      assert_equal "content-type", header.name
+      assert_equal "multipart/related", header.value
+      assert_equal [MimeParam.new("boundary","MIME_boundary"), 
+                    MimeParam.new("type","text/xml")], header.params.to_a
+    end
+
+    def test_parse_headers_with_param_newline
+      bio = BIO::from_string("Content-Type: Multipart/Related\n boundary=MIME_boundary; type=text/xml")
+      result = Mime::DEFAULT.parse_headers(bio)
+      assert_equal 1, result.size
+      header = result.first
+      assert_equal "content-type", header.name
+      assert_equal "multipart/related", header.value
+      assert_equal [MimeParam.new("boundary","MIME_boundary"), 
+                    MimeParam.new("type","text/xml")], header.params.to_a
+    end
+
+    def test_parse_headers_with_param_newline_and_semicolon
+      bio = BIO::from_string("Content-Type: Multipart/Related;\n boundary=MIME_boundary;\n Type=text/xml")
+      result = Mime::DEFAULT.parse_headers(bio)
+      assert_equal 1, result.size
+      header = result.first
+      assert_equal "content-type", header.name
+      assert_equal "multipart/related", header.value
+      assert_equal [MimeParam.new("boundary","MIME_boundary"), 
+                    MimeParam.new("type","text/xml")], header.params.to_a
+    end
   end
 end
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to