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 |