| 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <utility> | 6 #include <utility> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 ASSERT_EQ("", GetRequest(0).data); | 271 ASSERT_EQ("", GetRequest(0).data); |
| 272 ASSERT_EQ(0u, GetRequest(0).headers.size()); | 272 ASSERT_EQ(0u, GetRequest(0).headers.size()); |
| 273 ASSERT_TRUE(StartsWithASCII(GetRequest(0).peer.ToString(), | 273 ASSERT_TRUE(StartsWithASCII(GetRequest(0).peer.ToString(), |
| 274 "127.0.0.1", | 274 "127.0.0.1", |
| 275 true)); | 275 true)); |
| 276 } | 276 } |
| 277 | 277 |
| 278 TEST_F(HttpServerTest, RequestWithHeaders) { | 278 TEST_F(HttpServerTest, RequestWithHeaders) { |
| 279 TestHttpClient client; | 279 TestHttpClient client; |
| 280 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); | 280 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); |
| 281 const char* kHeaders[][3] = { | 281 const char* const kHeaders[][3] = { |
| 282 {"Header", ": ", "1"}, | 282 {"Header", ": ", "1"}, |
| 283 {"HeaderWithNoWhitespace", ":", "1"}, | 283 {"HeaderWithNoWhitespace", ":", "1"}, |
| 284 {"HeaderWithWhitespace", " : \t ", "1 1 1 \t "}, | 284 {"HeaderWithWhitespace", " : \t ", "1 1 1 \t "}, |
| 285 {"HeaderWithColon", ": ", "1:1"}, | 285 {"HeaderWithColon", ": ", "1:1"}, |
| 286 {"EmptyHeader", ":", ""}, | 286 {"EmptyHeader", ":", ""}, |
| 287 {"EmptyHeaderWithWhitespace", ": \t ", ""}, | 287 {"EmptyHeaderWithWhitespace", ": \t ", ""}, |
| 288 {"HeaderWithNonASCII", ": ", "\xf7"}, | 288 {"HeaderWithNonASCII", ": ", "\xf7"}, |
| 289 }; | 289 }; |
| 290 std::string headers; | 290 std::string headers; |
| 291 for (size_t i = 0; i < arraysize(kHeaders); ++i) { | 291 for (size_t i = 0; i < arraysize(kHeaders); ++i) { |
| 292 headers += | 292 headers += |
| 293 std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n"; | 293 std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n"; |
| 294 } | 294 } |
| 295 | 295 |
| 296 client.Send("GET /test HTTP/1.1\r\n" + headers + "\r\n"); | 296 client.Send("GET /test HTTP/1.1\r\n" + headers + "\r\n"); |
| 297 ASSERT_TRUE(RunUntilRequestsReceived(1)); | 297 ASSERT_TRUE(RunUntilRequestsReceived(1)); |
| 298 ASSERT_EQ("", GetRequest(0).data); | 298 ASSERT_EQ("", GetRequest(0).data); |
| 299 | 299 |
| 300 for (size_t i = 0; i < arraysize(kHeaders); ++i) { | 300 for (size_t i = 0; i < arraysize(kHeaders); ++i) { |
| 301 std::string field = base::StringToLowerASCII(std::string(kHeaders[i][0])); | 301 std::string field = base::StringToLowerASCII(std::string(kHeaders[i][0])); |
| 302 std::string value = kHeaders[i][2]; | 302 std::string value = kHeaders[i][2]; |
| 303 ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field; | 303 ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field; |
| 304 ASSERT_EQ(value, GetRequest(0).headers[field]) << kHeaders[i][0]; | 304 ASSERT_EQ(value, GetRequest(0).headers[field]) << kHeaders[i][0]; |
| 305 } | 305 } |
| 306 } | 306 } |
| 307 | 307 |
| 308 TEST_F(HttpServerTest, RequestWithDuplicateHeaders) { | 308 TEST_F(HttpServerTest, RequestWithDuplicateHeaders) { |
| 309 TestHttpClient client; | 309 TestHttpClient client; |
| 310 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); | 310 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); |
| 311 const char* kHeaders[][3] = { | 311 const char* const kHeaders[][3] = { |
| 312 {"FirstHeader", ": ", "1"}, | 312 {"FirstHeader", ": ", "1"}, |
| 313 {"DuplicateHeader", ": ", "2"}, | 313 {"DuplicateHeader", ": ", "2"}, |
| 314 {"MiddleHeader", ": ", "3"}, | 314 {"MiddleHeader", ": ", "3"}, |
| 315 {"DuplicateHeader", ": ", "4"}, | 315 {"DuplicateHeader", ": ", "4"}, |
| 316 {"LastHeader", ": ", "5"}, | 316 {"LastHeader", ": ", "5"}, |
| 317 }; | 317 }; |
| 318 std::string headers; | 318 std::string headers; |
| 319 for (size_t i = 0; i < arraysize(kHeaders); ++i) { | 319 for (size_t i = 0; i < arraysize(kHeaders); ++i) { |
| 320 headers += | 320 headers += |
| 321 std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n"; | 321 std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n"; |
| 322 } | 322 } |
| 323 | 323 |
| 324 client.Send("GET /test HTTP/1.1\r\n" + headers + "\r\n"); | 324 client.Send("GET /test HTTP/1.1\r\n" + headers + "\r\n"); |
| 325 ASSERT_TRUE(RunUntilRequestsReceived(1)); | 325 ASSERT_TRUE(RunUntilRequestsReceived(1)); |
| 326 ASSERT_EQ("", GetRequest(0).data); | 326 ASSERT_EQ("", GetRequest(0).data); |
| 327 | 327 |
| 328 for (size_t i = 0; i < arraysize(kHeaders); ++i) { | 328 for (size_t i = 0; i < arraysize(kHeaders); ++i) { |
| 329 std::string field = base::StringToLowerASCII(std::string(kHeaders[i][0])); | 329 std::string field = base::StringToLowerASCII(std::string(kHeaders[i][0])); |
| 330 std::string value = (field == "duplicateheader") ? "2,4" : kHeaders[i][2]; | 330 std::string value = (field == "duplicateheader") ? "2,4" : kHeaders[i][2]; |
| 331 ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field; | 331 ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field; |
| 332 ASSERT_EQ(value, GetRequest(0).headers[field]) << kHeaders[i][0]; | 332 ASSERT_EQ(value, GetRequest(0).headers[field]) << kHeaders[i][0]; |
| 333 } | 333 } |
| 334 } | 334 } |
| 335 | 335 |
| 336 TEST_F(HttpServerTest, HasHeaderValueTest) { | 336 TEST_F(HttpServerTest, HasHeaderValueTest) { |
| 337 TestHttpClient client; | 337 TestHttpClient client; |
| 338 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); | 338 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); |
| 339 const char* kHeaders[] = { | 339 const char* const kHeaders[] = { |
| 340 "Header: Abcd", | 340 "Header: Abcd", |
| 341 "HeaderWithNoWhitespace:E", | 341 "HeaderWithNoWhitespace:E", |
| 342 "HeaderWithWhitespace : \t f \t ", | 342 "HeaderWithWhitespace : \t f \t ", |
| 343 "DuplicateHeader: g", | 343 "DuplicateHeader: g", |
| 344 "HeaderWithComma: h, i ,j", | 344 "HeaderWithComma: h, i ,j", |
| 345 "DuplicateHeader: k", | 345 "DuplicateHeader: k", |
| 346 "EmptyHeader:", | 346 "EmptyHeader:", |
| 347 "EmptyHeaderWithWhitespace: \t ", | 347 "EmptyHeaderWithWhitespace: \t ", |
| 348 "HeaderWithNonASCII: \xf7", | 348 "HeaderWithNonASCII: \xf7", |
| 349 }; | 349 }; |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); | 629 ASSERT_EQ(OK, client.ConnectAndWait(server_address_)); |
| 630 client.Send("GET / HTTP/1.1\r\n\r\n"); | 630 client.Send("GET / HTTP/1.1\r\n\r\n"); |
| 631 ASSERT_FALSE(RunUntilRequestsReceived(1)); | 631 ASSERT_FALSE(RunUntilRequestsReceived(1)); |
| 632 ASSERT_EQ(1ul, connection_ids_.size()); | 632 ASSERT_EQ(1ul, connection_ids_.size()); |
| 633 ASSERT_EQ(0ul, requests_.size()); | 633 ASSERT_EQ(0ul, requests_.size()); |
| 634 } | 634 } |
| 635 | 635 |
| 636 } // namespace | 636 } // namespace |
| 637 | 637 |
| 638 } // namespace net | 638 } // namespace net |
| OLD | NEW |