Chromium Code Reviews| 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) { |
|
pfeldman
2014/05/08 15:19:16
Please add the test for HasHeaderValue.
|
| + 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: |