| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <utility> | 5 #include <utility> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 for (size_t i = 0; i < arraysize(kHeaders); ++i) { | 255 for (size_t i = 0; i < arraysize(kHeaders); ++i) { |
| 256 headers += | 256 headers += |
| 257 std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n"; | 257 std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n"; |
| 258 } | 258 } |
| 259 | 259 |
| 260 client.Send("GET /test HTTP/1.1\r\n" + headers + "\r\n"); | 260 client.Send("GET /test HTTP/1.1\r\n" + headers + "\r\n"); |
| 261 ASSERT_TRUE(RunUntilRequestsReceived(1)); | 261 ASSERT_TRUE(RunUntilRequestsReceived(1)); |
| 262 ASSERT_EQ("", GetRequest(0).data); | 262 ASSERT_EQ("", GetRequest(0).data); |
| 263 | 263 |
| 264 for (size_t i = 0; i < arraysize(kHeaders); ++i) { | 264 for (size_t i = 0; i < arraysize(kHeaders); ++i) { |
| 265 std::string field = StringToLowerASCII(std::string(kHeaders[i][0])); | 265 std::string field = base::StringToLowerASCII(std::string(kHeaders[i][0])); |
| 266 std::string value = kHeaders[i][2]; | 266 std::string value = kHeaders[i][2]; |
| 267 ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field; | 267 ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field; |
| 268 ASSERT_EQ(value, GetRequest(0).headers[field]) << kHeaders[i][0]; | 268 ASSERT_EQ(value, GetRequest(0).headers[field]) << kHeaders[i][0]; |
| 269 } | 269 } |
| 270 } | 270 } |
| 271 | 271 |
| 272 TEST_F(HttpServerTest, RequestWithDuplicateHeaders) { | 272 TEST_F(HttpServerTest, RequestWithDuplicateHeaders) { |
| 273 TestHttpClient client; | 273 TestHttpClient client; |
| 274 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); | 274 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); |
| 275 const char* kHeaders[][3] = { | 275 const char* kHeaders[][3] = { |
| 276 {"FirstHeader", ": ", "1"}, | 276 {"FirstHeader", ": ", "1"}, |
| 277 {"DuplicateHeader", ": ", "2"}, | 277 {"DuplicateHeader", ": ", "2"}, |
| 278 {"MiddleHeader", ": ", "3"}, | 278 {"MiddleHeader", ": ", "3"}, |
| 279 {"DuplicateHeader", ": ", "4"}, | 279 {"DuplicateHeader", ": ", "4"}, |
| 280 {"LastHeader", ": ", "5"}, | 280 {"LastHeader", ": ", "5"}, |
| 281 }; | 281 }; |
| 282 std::string headers; | 282 std::string headers; |
| 283 for (size_t i = 0; i < arraysize(kHeaders); ++i) { | 283 for (size_t i = 0; i < arraysize(kHeaders); ++i) { |
| 284 headers += | 284 headers += |
| 285 std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n"; | 285 std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n"; |
| 286 } | 286 } |
| 287 | 287 |
| 288 client.Send("GET /test HTTP/1.1\r\n" + headers + "\r\n"); | 288 client.Send("GET /test HTTP/1.1\r\n" + headers + "\r\n"); |
| 289 ASSERT_TRUE(RunUntilRequestsReceived(1)); | 289 ASSERT_TRUE(RunUntilRequestsReceived(1)); |
| 290 ASSERT_EQ("", GetRequest(0).data); | 290 ASSERT_EQ("", GetRequest(0).data); |
| 291 | 291 |
| 292 for (size_t i = 0; i < arraysize(kHeaders); ++i) { | 292 for (size_t i = 0; i < arraysize(kHeaders); ++i) { |
| 293 std::string field = StringToLowerASCII(std::string(kHeaders[i][0])); | 293 std::string field = base::StringToLowerASCII(std::string(kHeaders[i][0])); |
| 294 std::string value = (field == "duplicateheader") ? "2,4" : kHeaders[i][2]; | 294 std::string value = (field == "duplicateheader") ? "2,4" : kHeaders[i][2]; |
| 295 ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field; | 295 ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field; |
| 296 ASSERT_EQ(value, GetRequest(0).headers[field]) << kHeaders[i][0]; | 296 ASSERT_EQ(value, GetRequest(0).headers[field]) << kHeaders[i][0]; |
| 297 } | 297 } |
| 298 } | 298 } |
| 299 | 299 |
| 300 TEST_F(HttpServerTest, HasHeaderValueTest) { | 300 TEST_F(HttpServerTest, HasHeaderValueTest) { |
| 301 TestHttpClient client; | 301 TestHttpClient client; |
| 302 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); | 302 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); |
| 303 const char* kHeaders[] = { | 303 const char* kHeaders[] = { |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 | 497 |
| 498 ASSERT_EQ(client_connection_id, GetConnectionId(2)); | 498 ASSERT_EQ(client_connection_id, GetConnectionId(2)); |
| 499 server_->Send200(client_connection_id, "Content for /test3", "text/plain"); | 499 server_->Send200(client_connection_id, "Content for /test3", "text/plain"); |
| 500 std::string response3; | 500 std::string response3; |
| 501 ASSERT_TRUE(client.Read(&response3)); | 501 ASSERT_TRUE(client.Read(&response3)); |
| 502 ASSERT_TRUE(StartsWithASCII(response3, "HTTP/1.1 200 OK", true)); | 502 ASSERT_TRUE(StartsWithASCII(response3, "HTTP/1.1 200 OK", true)); |
| 503 ASSERT_TRUE(EndsWith(response3, "Content for /test3", true)); | 503 ASSERT_TRUE(EndsWith(response3, "Content for /test3", true)); |
| 504 } | 504 } |
| 505 | 505 |
| 506 } // namespace net | 506 } // namespace net |
| OLD | NEW |