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