Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(558)

Unified Diff: net/server/http_server_unittest.cc

Issue 274813002: HttpServer: Handling of multiple header fields with the same name and multiple values of "Connectio… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« net/server/http_server.cc ('K') | « net/server/http_server.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/server/http_server_unittest.cc
diff --git a/net/server/http_server_unittest.cc b/net/server/http_server_unittest.cc
index de8690f138e05608447ffe718c878a186fd0d4cd..afc9af504b5e33e593b6a286f6b8d6f877b9bc29 100644
--- a/net/server/http_server_unittest.cc
+++ b/net/server/http_server_unittest.cc
@@ -209,6 +209,22 @@ class HttpServerTest : public testing::Test,
size_t quit_after_request_count_;
};
+class WebSocketTest : public HttpServerTest {
+ virtual void OnHttpRequest(int connection_id,
+ const HttpServerRequestInfo& info) OVERRIDE {
+ NOTREACHED();
+ }
+
+ virtual void OnWebSocketRequest(int connection_id,
+ const HttpServerRequestInfo& info) OVERRIDE {
+ HttpServerTest::OnHttpRequest(connection_id, info);
+ }
+
+ virtual void OnWebSocketMessage(int connection_id,
+ const std::string& data) OVERRIDE {
+ }
+};
+
TEST_F(HttpServerTest, Request) {
TestHttpClient client;
ASSERT_EQ(OK, client.ConnectAndWait(server_address_));
@@ -253,6 +269,34 @@ TEST_F(HttpServerTest, RequestWithHeaders) {
}
}
+TEST_F(HttpServerTest, RequestWithDuplicateHeaders) {
+ TestHttpClient client;
+ ASSERT_EQ(OK, client.ConnectAndWait(server_address_));
+ const char* kHeaders[][3] = {
+ {"FirstHeader", ": ", "1"},
+ {"DuplicateHeader", ": ", "2"},
+ {"MiddleHeader", ": ", "3"},
+ {"DuplicateHeader", ": ", "4"},
+ {"LastHeader", ": ", "5"},
+ };
+ std::string headers;
+ for (size_t i = 0; i < arraysize(kHeaders); ++i) {
+ headers +=
+ std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n";
+ }
+
+ client.Send("GET /test HTTP/1.1\r\n" + headers + "\r\n");
+ ASSERT_TRUE(RunUntilRequestsReceived(1));
+ ASSERT_EQ("", GetRequest(0).data);
+
+ for (size_t i = 0; i < arraysize(kHeaders); ++i) {
+ std::string field = StringToLowerASCII(std::string(kHeaders[i][0]));
+ std::string value = (field == "duplicateheader") ? "2,4" : kHeaders[i][2];
+ ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field;
+ ASSERT_EQ(value, GetRequest(0).headers[field]) << kHeaders[i][0];
+ }
+}
+
TEST_F(HttpServerTest, RequestWithBody) {
TestHttpClient client;
ASSERT_EQ(OK, client.ConnectAndWait(server_address_));
@@ -270,6 +314,19 @@ TEST_F(HttpServerTest, RequestWithBody) {
ASSERT_EQ('c', *body.rbegin());
}
+TEST_F(WebSocketTest, RequestWebSocket) {
+ TestHttpClient client;
+ ASSERT_EQ(OK, client.ConnectAndWait(server_address_));
+ client.Send(
+ "GET /test HTTP/1.1\r\n"
+ "Upgrade: WebSocket\r\n"
+ "Connection: SomethingElse, Upgrade\r\n"
+ "Sec-WebSocket-Version: 8\r\n"
+ "Sec-WebSocket-Key: key\r\n"
+ "\r\n");
+ ASSERT_TRUE(RunUntilRequestsReceived(1));
+}
+
TEST_F(HttpServerTest, RequestWithTooLargeBody) {
class TestURLFetcherDelegate : public URLFetcherDelegate {
public:
« net/server/http_server.cc ('K') | « net/server/http_server.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698