Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: net/url_request/url_request_unittest.cc

Issue 2337253004: Update Token Binding code to the latest drafts (Closed)
Patch Set: Fix compilation error in unit_tests Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <memory> 5 #include <memory>
6 #include <utility> 6 #include <utility>
7 7
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 3409 matching lines...) Expand 10 before | Expand all | Expand 10 after
3420 base::RunLoop().Run(); 3420 base::RunLoop().Run();
3421 3421
3422 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); 3422 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status());
3423 3423
3424 HttpRequestHeaders headers; 3424 HttpRequestHeaders headers;
3425 std::string token_binding_header, token_binding_message; 3425 std::string token_binding_header, token_binding_message;
3426 EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); 3426 EXPECT_TRUE(r->GetFullRequestHeaders(&headers));
3427 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, 3427 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding,
3428 &token_binding_header)); 3428 &token_binding_header));
3429 EXPECT_TRUE(base::Base64UrlDecode( 3429 EXPECT_TRUE(base::Base64UrlDecode(
3430 token_binding_header, base::Base64UrlDecodePolicy::REQUIRE_PADDING, 3430 token_binding_header, base::Base64UrlDecodePolicy::DISALLOW_PADDING,
3431 &token_binding_message)); 3431 &token_binding_message));
3432 std::vector<TokenBinding> token_bindings; 3432 std::vector<TokenBinding> token_bindings;
3433 ASSERT_TRUE( 3433 ASSERT_TRUE(
3434 ParseTokenBindingMessage(token_binding_message, &token_bindings)); 3434 ParseTokenBindingMessage(token_binding_message, &token_bindings));
3435 ASSERT_EQ(1ull, token_bindings.size()); 3435 ASSERT_EQ(1ull, token_bindings.size());
3436 3436
3437 EXPECT_GT(d.bytes_received(), 0); 3437 EXPECT_GT(d.bytes_received(), 0);
3438 std::string ekm = d.data_received(); 3438 std::string ekm = d.data_received();
3439 3439
3440 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type); 3440 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type);
3441 EXPECT_TRUE(VerifyEKMSignature(token_bindings[0].ec_point, 3441 EXPECT_TRUE(VerifyTokenBindingSignature(token_bindings[0].ec_point,
3442 token_bindings[0].signature, ekm)); 3442 token_bindings[0].signature,
3443 TokenBindingType::PROVIDED, ekm));
3443 } 3444 }
3444 } 3445 }
3445 3446
3446 TEST_F(TokenBindingURLRequestTest, ForwardTokenBinding) { 3447 TEST_F(TokenBindingURLRequestTest, ForwardTokenBinding) {
3447 SpawnedTestServer::SSLOptions ssl_options; 3448 SpawnedTestServer::SSLOptions ssl_options;
3448 ssl_options.supported_token_binding_params.push_back(TB_PARAM_ECDSAP256); 3449 ssl_options.supported_token_binding_params.push_back(TB_PARAM_ECDSAP256);
3449 SpawnedTestServer https_test_server(SpawnedTestServer::TYPE_HTTPS, 3450 SpawnedTestServer https_test_server(SpawnedTestServer::TYPE_HTTPS,
3450 ssl_options, 3451 ssl_options,
3451 base::FilePath(kTestFilePath)); 3452 base::FilePath(kTestFilePath));
3452 ASSERT_TRUE(https_test_server.Start()); 3453 ASSERT_TRUE(https_test_server.Start());
(...skipping 10 matching lines...) Expand all
3463 base::RunLoop().Run(); 3464 base::RunLoop().Run();
3464 3465
3465 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); 3466 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status());
3466 3467
3467 HttpRequestHeaders headers; 3468 HttpRequestHeaders headers;
3468 std::string token_binding_header, token_binding_message; 3469 std::string token_binding_header, token_binding_message;
3469 EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); 3470 EXPECT_TRUE(r->GetFullRequestHeaders(&headers));
3470 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, 3471 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding,
3471 &token_binding_header)); 3472 &token_binding_header));
3472 EXPECT_TRUE(base::Base64UrlDecode( 3473 EXPECT_TRUE(base::Base64UrlDecode(
3473 token_binding_header, base::Base64UrlDecodePolicy::REQUIRE_PADDING, 3474 token_binding_header, base::Base64UrlDecodePolicy::DISALLOW_PADDING,
3474 &token_binding_message)); 3475 &token_binding_message));
3475 std::vector<TokenBinding> token_bindings; 3476 std::vector<TokenBinding> token_bindings;
3476 ASSERT_TRUE( 3477 ASSERT_TRUE(
3477 ParseTokenBindingMessage(token_binding_message, &token_bindings)); 3478 ParseTokenBindingMessage(token_binding_message, &token_bindings));
3478 ASSERT_EQ(2ull, token_bindings.size()); 3479 ASSERT_EQ(2ull, token_bindings.size());
3479 3480
3480 EXPECT_GT(d.bytes_received(), 0); 3481 EXPECT_GT(d.bytes_received(), 0);
3481 std::string ekm = d.data_received(); 3482 std::string ekm = d.data_received();
3482 3483
3483 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type); 3484 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type);
3484 EXPECT_TRUE(VerifyEKMSignature(token_bindings[0].ec_point, 3485 EXPECT_TRUE(VerifyTokenBindingSignature(token_bindings[0].ec_point,
3485 token_bindings[0].signature, ekm)); 3486 token_bindings[0].signature,
3487 TokenBindingType::PROVIDED, ekm));
3486 EXPECT_EQ(TokenBindingType::REFERRED, token_bindings[1].type); 3488 EXPECT_EQ(TokenBindingType::REFERRED, token_bindings[1].type);
3487 EXPECT_TRUE(VerifyEKMSignature(token_bindings[1].ec_point, 3489 EXPECT_TRUE(VerifyTokenBindingSignature(token_bindings[1].ec_point,
3488 token_bindings[1].signature, ekm)); 3490 token_bindings[1].signature,
3491 TokenBindingType::REFERRED, ekm));
3489 } 3492 }
3490 } 3493 }
3491 3494
3492 // TODO(nharper): Remove this #ifdef and replace SpawnedTestServer with 3495 // TODO(nharper): Remove this #ifdef and replace SpawnedTestServer with
3493 // EmbeddedTestServer once crbug.com/599187 is resolved. 3496 // EmbeddedTestServer once crbug.com/599187 is resolved.
3494 #if !defined(OS_ANDROID) 3497 #if !defined(OS_ANDROID)
3495 TEST_F(TokenBindingURLRequestTest, DontForwardHeaderFromHttp) { 3498 TEST_F(TokenBindingURLRequestTest, DontForwardHeaderFromHttp) {
3496 SpawnedTestServer http_server(SpawnedTestServer::TYPE_HTTP, 3499 SpawnedTestServer http_server(SpawnedTestServer::TYPE_HTTP,
3497 SpawnedTestServer::kLocalhost, 3500 SpawnedTestServer::kLocalhost,
3498 base::FilePath()); 3501 base::FilePath());
(...skipping 17 matching lines...) Expand all
3516 base::RunLoop().Run(); 3519 base::RunLoop().Run();
3517 3520
3518 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); 3521 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status());
3519 3522
3520 HttpRequestHeaders headers; 3523 HttpRequestHeaders headers;
3521 std::string token_binding_header, token_binding_message; 3524 std::string token_binding_header, token_binding_message;
3522 EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); 3525 EXPECT_TRUE(r->GetFullRequestHeaders(&headers));
3523 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, 3526 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding,
3524 &token_binding_header)); 3527 &token_binding_header));
3525 EXPECT_TRUE(base::Base64UrlDecode( 3528 EXPECT_TRUE(base::Base64UrlDecode(
3526 token_binding_header, base::Base64UrlDecodePolicy::REQUIRE_PADDING, 3529 token_binding_header, base::Base64UrlDecodePolicy::DISALLOW_PADDING,
3527 &token_binding_message)); 3530 &token_binding_message));
3528 std::vector<TokenBinding> token_bindings; 3531 std::vector<TokenBinding> token_bindings;
3529 ASSERT_TRUE( 3532 ASSERT_TRUE(
3530 ParseTokenBindingMessage(token_binding_message, &token_bindings)); 3533 ParseTokenBindingMessage(token_binding_message, &token_bindings));
3531 ASSERT_EQ(1ull, token_bindings.size()); 3534 ASSERT_EQ(1ull, token_bindings.size());
3532 3535
3533 EXPECT_GT(d.bytes_received(), 0); 3536 EXPECT_GT(d.bytes_received(), 0);
3534 std::string ekm = d.data_received(); 3537 std::string ekm = d.data_received();
3535 3538
3536 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type); 3539 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type);
3537 EXPECT_TRUE(VerifyEKMSignature(token_bindings[0].ec_point, 3540 EXPECT_TRUE(VerifyTokenBindingSignature(token_bindings[0].ec_point,
3538 token_bindings[0].signature, ekm)); 3541 token_bindings[0].signature,
3542 TokenBindingType::PROVIDED, ekm));
3539 } 3543 }
3540 } 3544 }
3541 3545
3542 // Test that if a server supporting Token Binding redirects (with 3546 // Test that if a server supporting Token Binding redirects (with
3543 // Include-Referred-Token-Binding-ID) to an https url on a server that does not 3547 // Include-Referred-Token-Binding-ID) to an https url on a server that does not
3544 // support Token Binding, then we do not send a Sec-Token-Binding when following 3548 // support Token Binding, then we do not send a Sec-Token-Binding when following
3545 // the redirect. 3549 // the redirect.
3546 TEST_F(TokenBindingURLRequestTest, ForwardWithoutTokenBinding) { 3550 TEST_F(TokenBindingURLRequestTest, ForwardWithoutTokenBinding) {
3547 SpawnedTestServer::SSLOptions ssl_options; 3551 SpawnedTestServer::SSLOptions ssl_options;
3548 SpawnedTestServer https_test_server(SpawnedTestServer::TYPE_HTTPS, 3552 SpawnedTestServer https_test_server(SpawnedTestServer::TYPE_HTTPS,
(...skipping 6690 matching lines...) Expand 10 before | Expand all | Expand 10 after
10239 AddTestInterceptor()->set_main_intercept_job(std::move(job)); 10243 AddTestInterceptor()->set_main_intercept_job(std::move(job));
10240 10244
10241 req->Start(); 10245 req->Start();
10242 req->Cancel(); 10246 req->Cancel();
10243 base::RunLoop().RunUntilIdle(); 10247 base::RunLoop().RunUntilIdle();
10244 EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); 10248 EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status());
10245 EXPECT_EQ(0, d.received_redirect_count()); 10249 EXPECT_EQ(0, d.received_redirect_count());
10246 } 10250 }
10247 10251
10248 } // namespace net 10252 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698