summaryrefslogtreecommitdiffstats
path: root/net/http/http_response_headers_unittest.cc
diff options
context:
space:
mode:
authorericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-09-13 00:45:27 +0000
committerericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-09-13 00:45:27 +0000
commit231d5a36e476d013a91ca742bb8a0a2973cfee54 (patch)
treedc5c60f8fc054503f4971b770196ed89fbfc18c1 /net/http/http_response_headers_unittest.cc
parentf4f2df8024d7adf583a61b742a32eaa17522f154 (diff)
downloadchromium_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.cc66
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);
}