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: |