diff options
author | ericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-13 00:45:27 +0000 |
---|---|---|
committer | ericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-13 00:45:27 +0000 |
commit | 231d5a36e476d013a91ca742bb8a0a2973cfee54 (patch) | |
tree | dc5c60f8fc054503f4971b770196ed89fbfc18c1 /net/http/http_response_headers_unittest.cc | |
parent | f4f2df8024d7adf583a61b742a32eaa17522f154 (diff) | |
download | chromium_src-231d5a36e476d013a91ca742bb8a0a2973cfee54.zip chromium_src-231d5a36e476d013a91ca742bb8a0a2973cfee54.tar.gz chromium_src-231d5a36e476d013a91ca742bb8a0a2973cfee54.tar.bz2 |
misc. http response status-line changes:
1. check for http 0.9 responses (no status line)
2. allow up to 4 bytes of junk to precede the http version.
3. distinguish between the parsed vs normalized http version (a TODO needed this).
Review URL: http://codereview.chromium.org/1934
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2153 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_response_headers_unittest.cc')
-rw-r--r-- | net/http/http_response_headers_unittest.cc | 66 |
1 files changed, 55 insertions, 11 deletions
diff --git a/net/http/http_response_headers_unittest.cc b/net/http/http_response_headers_unittest.cc index e403a86..f02cd7f 100644 --- a/net/http/http_response_headers_unittest.cc +++ b/net/http/http_response_headers_unittest.cc @@ -12,6 +12,7 @@ using namespace std; using net::HttpResponseHeaders; +using net::HttpVersion; namespace { @@ -19,6 +20,8 @@ struct TestData { const char* raw_headers; const char* expected_headers; int expected_response_code; + HttpVersion expected_parsed_version; + HttpVersion expected_version; }; struct ContentTypeTestData { @@ -60,6 +63,9 @@ void TestCommon(const TestData& test) { EXPECT_EQ(expected_headers, headers); EXPECT_EQ(test.expected_response_code, parsed->response_code()); + + EXPECT_TRUE(test.expected_parsed_version == parsed->GetParsedHttpVersion()); + EXPECT_TRUE(test.expected_version == parsed->GetHttpVersion()); } } // end namespace @@ -76,7 +82,9 @@ TEST(HttpResponseHeadersTest, NormalizeHeadersWhitespace) { "Content-TYPE: text/html; charset=utf-8\n" "Set-Cookie: a, b\n", - 202 + 202, + HttpVersion(1,1), + HttpVersion(1,1) }; TestCommon(test); } @@ -94,7 +102,9 @@ TEST(HttpResponseHeadersTest, NormalizeHeadersLeadingWhitespace) { "HTTP/1.1 202 Accepted\n" "Set-Cookie: a, b\n", - 202 + 202, + HttpVersion(1,1), + HttpVersion(1,1) }; TestCommon(test); } @@ -114,12 +124,15 @@ TEST(HttpResponseHeadersTest, BlankHeaders) { "Header3: \n" "Header5: \n", - 200 + 200, + HttpVersion(1,1), + HttpVersion(1,1) }; TestCommon(test); } TEST(HttpResponseHeadersTest, NormalizeHeadersVersion) { + // Don't believe the http/0.9 version if there are headers! TestData test = { "hTtP/0.9 201\n" "Content-TYPE: text/html; charset=utf-8\n", @@ -127,7 +140,24 @@ TEST(HttpResponseHeadersTest, NormalizeHeadersVersion) { "HTTP/1.0 201 OK\n" "Content-TYPE: text/html; charset=utf-8\n", - 201 + 201, + HttpVersion(0,9), + HttpVersion(1,0) + }; + TestCommon(test); +} + +TEST(HttpResponseHeadersTest, PreserveHttp09) { + // Accept the HTTP/0.9 version number if there are no headers. + // This is how HTTP/0.9 responses get constructed from HttpNetworkTransaction. + TestData test = { + "hTtP/0.9 200 OK\n", + + "HTTP/0.9 200 OK\n", + + 200, + HttpVersion(0,9), + HttpVersion(0,9) }; TestCommon(test); } @@ -140,7 +170,9 @@ TEST(HttpResponseHeadersTest, NormalizeHeadersMissingOK) { "HTTP/1.1 201 OK\n" "Content-TYPE: text/html; charset=utf-8\n", - 201 + 201, + HttpVersion(1,1), + HttpVersion(1,1) }; TestCommon(test); } @@ -153,7 +185,9 @@ TEST(HttpResponseHeadersTest, NormalizeHeadersBadStatus) { "HTTP/1.0 200 OK\n" "Content-TYPE: text/html; charset=utf-8\n", - 200 + 200, + HttpVersion(0,0), // Parse error + HttpVersion(1,0) }; TestCommon(test); } @@ -164,7 +198,9 @@ TEST(HttpResponseHeadersTest, NormalizeHeadersEmpty) { "HTTP/1.0 200 OK\n", - 200 + 200, + HttpVersion(0,0), // Parse Error + HttpVersion(1,0) }; TestCommon(test); } @@ -181,7 +217,9 @@ TEST(HttpResponseHeadersTest, NormalizeHeadersStartWithColon) { "foo: bar\n" "baz: blat\n", - 202 + 202, + HttpVersion(1,1), + HttpVersion(1,1) }; TestCommon(test); } @@ -200,7 +238,9 @@ TEST(HttpResponseHeadersTest, NormalizeHeadersStartWithColonAtEOL) { "baz: blat\n" "zip: \n", - 202 + 202, + HttpVersion(1,1), + HttpVersion(1,1) }; TestCommon(test); } @@ -211,7 +251,9 @@ TEST(HttpResponseHeadersTest, NormalizeHeadersOfWhitepace) { "HTTP/1.0 200 OK\n", - 200 + 200, + HttpVersion(0,0), // Parse error + HttpVersion(1,0) }; TestCommon(test); } @@ -225,7 +267,9 @@ TEST(HttpResponseHeadersTest, RepeatedSetCookie) { "HTTP/1.1 200 OK\n" "Set-Cookie: x=1, y=2\n", - 200 + 200, + HttpVersion(1,1), + HttpVersion(1,1) }; TestCommon(test); } |