2010-03-01 Miguel de Icaza <miguel@novell.com>
authorMiguel de Icaza <miguel@gnome.org>
Mon, 1 Mar 2010 19:09:20 +0000 (19:09 -0000)
committerMiguel de Icaza <miguel@gnome.org>
Mon, 1 Mar 2010 19:09:20 +0000 (19:09 -0000)
        * WebHeaderCollection.cs: Apply 2 year old patch from Yves Bastide that fixes the keys
        casing in the collection;   Fixes 325491

svn path=/trunk/mcs/; revision=152734

mcs/class/System/System.Net/ChangeLog
mcs/class/System/System.Net/WebHeaderCollection.cs
mcs/class/System/Test/System.Net/WebHeaderCollectionTest.cs

index 0378694e817e0aad0e30ee79ae148be9f357c190..4860754313f04550a7f7450f7420a1f96a40c705 100644 (file)
@@ -1,3 +1,8 @@
+2010-03-01  Miguel de Icaza  <miguel@novell.com>
+
+       * WebHeaderCollection.cs: Apply 2 year old patch from Yves Bastide
+       that fixes the keys casing in the collection; Fixes 325491
+
 2010-03-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
 
        * WebConnection.cs: attach a validation callback to the new
index 9c4e94ceabc65b31270e68185e1deeacc77b0c0c..ae4598f0383525b608981a9868baba5c4c2fac75 100644 (file)
@@ -415,87 +415,87 @@ namespace System.Net
                {
                        switch (value){
                        case HttpRequestHeader.CacheControl:
-                               return "cache-control";
+                               return "Cache-Control";
                        case HttpRequestHeader.Connection:
-                               return "connection";
+                               return "Connection";
                        case HttpRequestHeader.Date:
-                               return "date";
+                               return "Date";
                        case HttpRequestHeader.KeepAlive:
-                               return "keep-alive";
+                               return "Keep-Alive";
                        case HttpRequestHeader.Pragma:
-                               return "pragma";
+                               return "Pragma";
                        case HttpRequestHeader.Trailer:
-                               return "trailer";
+                               return "Trailer";
                        case HttpRequestHeader.TransferEncoding:
-                               return "transfer-encoding";
+                               return "Transfer-Encoding";
                        case HttpRequestHeader.Upgrade:
-                               return "upgrade";
+                               return "Upgrade";
                        case HttpRequestHeader.Via:
-                               return "via";
+                               return "Via";
                        case HttpRequestHeader.Warning:
-                               return "warning";
+                               return "Warning";
                        case HttpRequestHeader.Allow:
-                               return "allow";
+                               return "Allow";
                        case HttpRequestHeader.ContentLength:
-                               return "content-length";
+                               return "Content-Length";
                        case HttpRequestHeader.ContentType:
-                               return "content-type";
+                               return "Content-Type";
                        case HttpRequestHeader.ContentEncoding:
-                               return "content-encoding";
+                               return "Content-Encoding";
                        case HttpRequestHeader.ContentLanguage:
-                               return "content-language";
+                               return "Content-Language";
                        case HttpRequestHeader.ContentLocation:
-                               return "content-location";
+                               return "Content-Location";
                        case HttpRequestHeader.ContentMd5:
-                               return "content-md5";
+                               return "Content-MD5";
                        case HttpRequestHeader.ContentRange:
-                               return "content-range";
+                               return "Content-Range";
                        case HttpRequestHeader.Expires:
-                               return "expires";
+                               return "Expires";
                        case HttpRequestHeader.LastModified:
-                               return "last-modified";
+                               return "Last-Modified";
                        case HttpRequestHeader.Accept:
-                               return "accept";
+                               return "Accept";
                        case HttpRequestHeader.AcceptCharset:
-                               return "accept-charset";
+                               return "Accept-Charset";
                        case HttpRequestHeader.AcceptEncoding:
-                               return "accept-encoding";
+                               return "Accept-Encoding";
                        case HttpRequestHeader.AcceptLanguage:
                                return "accept-language";
                        case HttpRequestHeader.Authorization:
-                               return "authorization";
+                               return "Authorization";
                        case HttpRequestHeader.Cookie:
-                               return "cookie";
+                               return "Cookie";
                        case HttpRequestHeader.Expect:
-                               return "expect";
+                               return "Expect";
                        case HttpRequestHeader.From:
-                               return "from";
+                               return "From";
                        case HttpRequestHeader.Host:
-                               return "host";
+                               return "Host";
                        case HttpRequestHeader.IfMatch:
-                               return "if-match";
+                               return "If-Match";
                        case HttpRequestHeader.IfModifiedSince:
-                               return "if-modified-since";
+                               return "If-Modified-Since";
                        case HttpRequestHeader.IfNoneMatch:
-                               return "if-none-match";
+                               return "If-None-Match";
                        case HttpRequestHeader.IfRange:
-                               return "if-range";
+                               return "If-Range";
                        case HttpRequestHeader.IfUnmodifiedSince:
-                               return "if-unmodified-since";
+                               return "If-Unmodified-Since";
                        case HttpRequestHeader.MaxForwards:
-                               return "max-forwards";
+                               return "Max-Forwards";
                        case HttpRequestHeader.ProxyAuthorization:
-                               return "proxy-authorization";
+                               return "Proxy-Authorization";
                        case HttpRequestHeader.Referer:
-                               return "referer";
+                               return "Referer";
                        case HttpRequestHeader.Range:
-                               return "range";
+                               return "Range";
                        case HttpRequestHeader.Te:
-                               return "te";
+                               return "TE";
                        case HttpRequestHeader.Translate:
-                               return "translate";
+                               return "Translate";
                        case HttpRequestHeader.UserAgent:
-                               return "user-agent";
+                               return "User-Agent";
                        default:
                                throw new InvalidOperationException ();
                        }
@@ -517,65 +517,65 @@ namespace System.Net
                {
                        switch (value){
                        case HttpResponseHeader.CacheControl:
-                               return "cache-control";
+                               return "Cache-Control";
                        case HttpResponseHeader.Connection:
-                               return "connection";
+                               return "Connection";
                        case HttpResponseHeader.Date:
-                               return "date";
+                               return "Date";
                        case HttpResponseHeader.KeepAlive:
-                               return "keep-alive";
+                               return "Keep-Alive";
                        case HttpResponseHeader.Pragma:
-                               return "pragma";
+                               return "Pragma";
                        case HttpResponseHeader.Trailer:
-                               return "trailer";
+                               return "Trailer";
                        case HttpResponseHeader.TransferEncoding:
-                               return "transfer-encoding";
+                               return "Transfer-Encoding";
                        case HttpResponseHeader.Upgrade:
-                               return "upgrade";
+                               return "Upgrade";
                        case HttpResponseHeader.Via:
-                               return "via";
+                               return "Via";
                        case HttpResponseHeader.Warning:
-                               return "warning";
+                               return "Warning";
                        case HttpResponseHeader.Allow:
-                               return "allow";
+                               return "Allow";
                        case HttpResponseHeader.ContentLength:
-                               return "content-length";
+                               return "Content-Length";
                        case HttpResponseHeader.ContentType:
-                               return "content-type";
+                               return "Content-Type";
                        case HttpResponseHeader.ContentEncoding:
-                               return "content-encoding";
+                               return "Content-Encoding";
                        case HttpResponseHeader.ContentLanguage:
-                               return "content-language";
+                               return "Content-Language";
                        case HttpResponseHeader.ContentLocation:
-                               return "content-location";
+                               return "Content-Location";
                        case HttpResponseHeader.ContentMd5:
-                               return "content-md5";
+                               return "Content-MD5";
                        case HttpResponseHeader.ContentRange:
-                               return "content-range";
+                               return "Content-Range";
                        case HttpResponseHeader.Expires:
-                               return "expires";
+                               return "Expires";
                        case HttpResponseHeader.LastModified:
-                               return "last-modified";
+                               return "Last-Modified";
                        case HttpResponseHeader.AcceptRanges:
-                               return "accept-ranges";
+                               return "Accept-Ranges";
                        case HttpResponseHeader.Age:
-                               return "age";
+                               return "Age";
                        case HttpResponseHeader.ETag:
-                               return "etag";
+                               return "ETag";
                        case HttpResponseHeader.Location:
-                               return "location";
+                               return "Location";
                        case HttpResponseHeader.ProxyAuthenticate:
-                               return "proxy-authenticate";
+                               return "Proxy-Authenticate";
                        case HttpResponseHeader.RetryAfter:
-                               return "RetryAfter";
+                               return "Retry-After";
                        case HttpResponseHeader.Server:
-                               return "server";
+                               return "Server";
                        case HttpResponseHeader.SetCookie:
-                               return "set-cookie";
+                               return "Set-Cookie";
                        case HttpResponseHeader.Vary:
-                               return "vary";
+                               return "Vary";
                        case HttpResponseHeader.WwwAuthenticate:
-                               return "www-authenticate";
+                               return "WWW-Authenticate";
                        default:
                                throw new InvalidOperationException ();
                        }
index 1bc8b4dbea761d90df8218ea3275b4060c327eca..a4aa8af91b555e970f65e59d54df9aac4457e478 100644 (file)
@@ -162,14 +162,14 @@ namespace MonoTests.System.Net
                [Test]
                public void Indexers ()
                {
-#if NET_2_0
-               Assert.AreEqual ("Value1", ((NameValueCollection)col)[0], "#1.1");
-               //FIXME: test also HttpRequestHeader and HttpResponseHeader
-#else
-                       Assert.AreEqual ("Value1", col [0], "#1");
-#endif
-                       Assert.AreEqual ("Value1", col ["Name1"], "#2");
-                       Assert.AreEqual ("Value1", col ["NAME1"], "#3");
+                       Assert.AreEqual ("Value1", ((NameValueCollection)col)[0], "#1.1");
+                       //FIXME: test also HttpRequestHeader and HttpResponseHeader
+                       //FIXME: is this enough?
+                       WebHeaderCollection w = new WebHeaderCollection ();
+                       w [HttpRequestHeader.CacheControl] = "Value2";
+                       Assertion.AssertEquals ("#1.2", "Value2", w [HttpRequestHeader.CacheControl]);
+                       w [HttpResponseHeader.Pragma] = "Value3";
+                       Assertion.AssertEquals ("#1.3", "Value3", w [HttpResponseHeader.Pragma]);
                }
 
                [Test]
@@ -217,6 +217,15 @@ namespace MonoTests.System.Net
                        col.Add ("Name3", "Value3a\r\n Value3b");
                        col.Add ("Name4", "   Value4   ");
                        Assert.AreEqual ("Name1: Value1,Value1b\r\nName2: Value2\r\nName3: Value3a\r\n Value3b\r\nName4: Value4\r\n\r\n", col.ToString (), "#1");
+                       WebHeaderCollection w;
+                       w = new WebHeaderCollection ();
+                       w.Add (HttpResponseHeader.KeepAlive, "Value1");
+                       w.Add (HttpResponseHeader.WwwAuthenticate, "Value2");
+                       Assertion.AssertEquals ("#2", "Keep-Alive: Value1\r\nWWW-Authenticate: Value2\r\n\r\n", w.ToString ());
+                       w = new WebHeaderCollection ();
+                       w.Add (HttpRequestHeader.UserAgent, "Value1");
+                       w.Add (HttpRequestHeader.ContentMd5, "Value2");
+                       Assertion.AssertEquals ("#2", "User-Agent: Value1\r\nContent-MD5: Value2\r\n\r\n", w.ToString ());
                }
 
                [Test]