| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| 11 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
| 12 #include "base/callback.h" | 12 #include "base/callback.h" |
| 13 #include "base/files/file_path.h" | 13 #include "base/files/file_path.h" |
| 14 #include "base/macros.h" | 14 #include "base/macros.h" |
| 15 #include "base/memory/ptr_util.h" |
| 15 #include "base/run_loop.h" | 16 #include "base/run_loop.h" |
| 16 #include "base/values.h" | 17 #include "base/values.h" |
| 17 #include "chrome/browser/chromeos/policy/device_network_configuration_updater.h" | 18 #include "chrome/browser/chromeos/policy/device_network_configuration_updater.h" |
| 18 #include "chrome/browser/chromeos/policy/user_network_configuration_updater.h" | 19 #include "chrome/browser/chromeos/policy/user_network_configuration_updater.h" |
| 19 #include "chrome/browser/chromeos/settings/cros_settings.h" | 20 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 20 #include "chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.h" | 21 #include "chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.h" |
| 21 #include "chrome/test/base/testing_profile.h" | 22 #include "chrome/test/base/testing_profile.h" |
| 22 #include "chromeos/network/fake_network_device_handler.h" | 23 #include "chromeos/network/fake_network_device_handler.h" |
| 23 #include "chromeos/network/mock_managed_network_configuration_handler.h" | 24 #include "chromeos/network/mock_managed_network_configuration_handler.h" |
| 24 #include "chromeos/network/onc/onc_certificate_importer.h" | 25 #include "chromeos/network/onc/onc_certificate_importer.h" |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 | 343 |
| 343 base::DictionaryValue* global_config_repaired = NULL; | 344 base::DictionaryValue* global_config_repaired = NULL; |
| 344 onc_repaired->GetDictionaryWithoutPathExpansion( | 345 onc_repaired->GetDictionaryWithoutPathExpansion( |
| 345 onc::toplevel_config::kGlobalNetworkConfiguration, | 346 onc::toplevel_config::kGlobalNetworkConfiguration, |
| 346 &global_config_repaired); | 347 &global_config_repaired); |
| 347 ASSERT_TRUE(global_config_repaired); | 348 ASSERT_TRUE(global_config_repaired); |
| 348 | 349 |
| 349 std::string onc_policy = | 350 std::string onc_policy = |
| 350 chromeos::onc::test_utils::ReadTestData("toplevel_partially_invalid.onc"); | 351 chromeos::onc::test_utils::ReadTestData("toplevel_partially_invalid.onc"); |
| 351 PolicyMap policy; | 352 PolicyMap policy; |
| 352 policy.Set(key::kOpenNetworkConfiguration, | 353 policy.Set(key::kOpenNetworkConfiguration, POLICY_LEVEL_MANDATORY, |
| 353 POLICY_LEVEL_MANDATORY, | 354 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
| 354 POLICY_SCOPE_USER, | 355 base::WrapUnique(new base::StringValue(onc_policy)), nullptr); |
| 355 POLICY_SOURCE_CLOUD, | |
| 356 new base::StringValue(onc_policy), | |
| 357 NULL); | |
| 358 UpdateProviderPolicy(policy); | 356 UpdateProviderPolicy(policy); |
| 359 | 357 |
| 360 EXPECT_CALL(network_config_handler_, | 358 EXPECT_CALL(network_config_handler_, |
| 361 SetPolicy(onc::ONC_SOURCE_USER_POLICY, | 359 SetPolicy(onc::ONC_SOURCE_USER_POLICY, |
| 362 _, | 360 _, |
| 363 IsEqualTo(network_configs_repaired), | 361 IsEqualTo(network_configs_repaired), |
| 364 IsEqualTo(global_config_repaired))); | 362 IsEqualTo(global_config_repaired))); |
| 365 certificate_importer_->SetExpectedONCSource(onc::ONC_SOURCE_USER_POLICY); | 363 certificate_importer_->SetExpectedONCSource(onc::ONC_SOURCE_USER_POLICY); |
| 366 | 364 |
| 367 CreateNetworkConfigurationUpdaterForUserPolicy( | 365 CreateNetworkConfigurationUpdaterForUserPolicy( |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 cert_list = | 464 cert_list = |
| 467 net::CreateCertificateListFromFile(net::GetTestCertsDirectory(), | 465 net::CreateCertificateListFromFile(net::GetTestCertsDirectory(), |
| 468 "ok_cert.pem", | 466 "ok_cert.pem", |
| 469 net::X509Certificate::FORMAT_AUTO); | 467 net::X509Certificate::FORMAT_AUTO); |
| 470 ASSERT_EQ(1u, cert_list.size()); | 468 ASSERT_EQ(1u, cert_list.size()); |
| 471 certificate_importer_->SetTrustedCertificatesResult(cert_list); | 469 certificate_importer_->SetTrustedCertificatesResult(cert_list); |
| 472 | 470 |
| 473 // Change to any non-empty policy, so that updates are triggered. The actual | 471 // Change to any non-empty policy, so that updates are triggered. The actual |
| 474 // content of the policy is irrelevant. | 472 // content of the policy is irrelevant. |
| 475 PolicyMap policy; | 473 PolicyMap policy; |
| 476 policy.Set(key::kOpenNetworkConfiguration, | 474 policy.Set(key::kOpenNetworkConfiguration, POLICY_LEVEL_MANDATORY, |
| 477 POLICY_LEVEL_MANDATORY, | 475 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
| 478 POLICY_SCOPE_USER, | 476 base::WrapUnique(new base::StringValue(kFakeONC)), nullptr); |
| 479 POLICY_SOURCE_CLOUD, | |
| 480 new base::StringValue(kFakeONC), | |
| 481 NULL); | |
| 482 UpdateProviderPolicy(policy); | 477 UpdateProviderPolicy(policy); |
| 483 base::RunLoop().RunUntilIdle(); | 478 base::RunLoop().RunUntilIdle(); |
| 484 | 479 |
| 485 // Certificates with the "Web" trust flag set will be returned and forwarded | 480 // Certificates with the "Web" trust flag set will be returned and forwarded |
| 486 // to observers. | 481 // to observers. |
| 487 { | 482 { |
| 488 net::CertificateList trust_anchors; | 483 net::CertificateList trust_anchors; |
| 489 updater->GetWebTrustedCertificates(&trust_anchors); | 484 updater->GetWebTrustedCertificates(&trust_anchors); |
| 490 EXPECT_EQ(1u, trust_anchors.size()); | 485 EXPECT_EQ(1u, trust_anchors.size()); |
| 491 } | 486 } |
| 492 EXPECT_EQ(1u, observer.trust_anchors_.size()); | 487 EXPECT_EQ(1u, observer.trust_anchors_.size()); |
| 493 | 488 |
| 494 updater->RemoveTrustedCertsObserver(&observer); | 489 updater->RemoveTrustedCertsObserver(&observer); |
| 495 } | 490 } |
| 496 | 491 |
| 497 TEST_F(NetworkConfigurationUpdaterTest, | 492 TEST_F(NetworkConfigurationUpdaterTest, |
| 498 DontImportCertificateBeforeCertificateImporterSet) { | 493 DontImportCertificateBeforeCertificateImporterSet) { |
| 499 PolicyMap policy; | 494 PolicyMap policy; |
| 500 policy.Set(key::kOpenNetworkConfiguration, POLICY_LEVEL_MANDATORY, | 495 policy.Set(key::kOpenNetworkConfiguration, POLICY_LEVEL_MANDATORY, |
| 501 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, | 496 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
| 502 new base::StringValue(kFakeONC), nullptr); | 497 base::WrapUnique(new base::StringValue(kFakeONC)), nullptr); |
| 503 UpdateProviderPolicy(policy); | 498 UpdateProviderPolicy(policy); |
| 504 | 499 |
| 505 EXPECT_CALL(network_config_handler_, | 500 EXPECT_CALL(network_config_handler_, |
| 506 SetPolicy(onc::ONC_SOURCE_USER_POLICY, | 501 SetPolicy(onc::ONC_SOURCE_USER_POLICY, |
| 507 kFakeUsernameHash, | 502 kFakeUsernameHash, |
| 508 IsEqualTo(&fake_network_configs_), | 503 IsEqualTo(&fake_network_configs_), |
| 509 IsEqualTo(&fake_global_network_config_))); | 504 IsEqualTo(&fake_global_network_config_))); |
| 510 | 505 |
| 511 UserNetworkConfigurationUpdater* updater = | 506 UserNetworkConfigurationUpdater* updater = |
| 512 CreateNetworkConfigurationUpdaterForUserPolicy( | 507 CreateNetworkConfigurationUpdaterForUserPolicy( |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 true /* set certificate importer */); | 554 true /* set certificate importer */); |
| 560 } else { | 555 } else { |
| 561 CreateNetworkConfigurationUpdaterForDevicePolicy(); | 556 CreateNetworkConfigurationUpdaterForDevicePolicy(); |
| 562 } | 557 } |
| 563 } | 558 } |
| 564 }; | 559 }; |
| 565 | 560 |
| 566 TEST_P(NetworkConfigurationUpdaterTestWithParam, InitialUpdates) { | 561 TEST_P(NetworkConfigurationUpdaterTestWithParam, InitialUpdates) { |
| 567 PolicyMap policy; | 562 PolicyMap policy; |
| 568 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 563 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 569 POLICY_SOURCE_CLOUD, new base::StringValue(kFakeONC), nullptr); | 564 POLICY_SOURCE_CLOUD, |
| 565 base::WrapUnique(new base::StringValue(kFakeONC)), nullptr); |
| 570 UpdateProviderPolicy(policy); | 566 UpdateProviderPolicy(policy); |
| 571 | 567 |
| 572 EXPECT_CALL(network_config_handler_, | 568 EXPECT_CALL(network_config_handler_, |
| 573 SetPolicy(CurrentONCSource(), | 569 SetPolicy(CurrentONCSource(), |
| 574 ExpectedUsernameHash(), | 570 ExpectedUsernameHash(), |
| 575 IsEqualTo(&fake_network_configs_), | 571 IsEqualTo(&fake_network_configs_), |
| 576 IsEqualTo(&fake_global_network_config_))); | 572 IsEqualTo(&fake_global_network_config_))); |
| 577 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); | 573 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); |
| 578 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); | 574 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); |
| 579 | 575 |
| 580 CreateNetworkConfigurationUpdater(); | 576 CreateNetworkConfigurationUpdater(); |
| 581 MarkPolicyProviderInitialized(); | 577 MarkPolicyProviderInitialized(); |
| 582 EXPECT_EQ(ExpectedImportCertificatesCallCount(), | 578 EXPECT_EQ(ExpectedImportCertificatesCallCount(), |
| 583 certificate_importer_->GetAndResetImportCount()); | 579 certificate_importer_->GetAndResetImportCount()); |
| 584 } | 580 } |
| 585 | 581 |
| 586 TEST_P(NetworkConfigurationUpdaterTestWithParam, | 582 TEST_P(NetworkConfigurationUpdaterTestWithParam, |
| 587 PolicyNotSetBeforePolicyProviderInitialized) { | 583 PolicyNotSetBeforePolicyProviderInitialized) { |
| 588 PolicyMap policy; | 584 PolicyMap policy; |
| 589 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 585 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 590 POLICY_SOURCE_CLOUD, new base::StringValue(kFakeONC), nullptr); | 586 POLICY_SOURCE_CLOUD, |
| 587 base::WrapUnique(new base::StringValue(kFakeONC)), nullptr); |
| 591 UpdateProviderPolicy(policy); | 588 UpdateProviderPolicy(policy); |
| 592 | 589 |
| 593 CreateNetworkConfigurationUpdater(); | 590 CreateNetworkConfigurationUpdater(); |
| 594 | 591 |
| 595 Mock::VerifyAndClearExpectations(&network_config_handler_); | 592 Mock::VerifyAndClearExpectations(&network_config_handler_); |
| 596 EXPECT_EQ(0u, certificate_importer_->GetAndResetImportCount()); | 593 EXPECT_EQ(0u, certificate_importer_->GetAndResetImportCount()); |
| 597 | 594 |
| 598 EXPECT_CALL(network_config_handler_, | 595 EXPECT_CALL(network_config_handler_, |
| 599 SetPolicy(CurrentONCSource(), | 596 SetPolicy(CurrentONCSource(), |
| 600 ExpectedUsernameHash(), | 597 ExpectedUsernameHash(), |
| 601 IsEqualTo(&fake_network_configs_), | 598 IsEqualTo(&fake_network_configs_), |
| 602 IsEqualTo(&fake_global_network_config_))); | 599 IsEqualTo(&fake_global_network_config_))); |
| 603 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); | 600 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); |
| 604 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); | 601 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); |
| 605 | 602 |
| 606 MarkPolicyProviderInitialized(); | 603 MarkPolicyProviderInitialized(); |
| 607 EXPECT_EQ(ExpectedImportCertificatesCallCount(), | 604 EXPECT_EQ(ExpectedImportCertificatesCallCount(), |
| 608 certificate_importer_->GetAndResetImportCount()); | 605 certificate_importer_->GetAndResetImportCount()); |
| 609 } | 606 } |
| 610 | 607 |
| 611 TEST_P(NetworkConfigurationUpdaterTestWithParam, | 608 TEST_P(NetworkConfigurationUpdaterTestWithParam, |
| 612 PolicyAppliedImmediatelyIfProvidersInitialized) { | 609 PolicyAppliedImmediatelyIfProvidersInitialized) { |
| 613 MarkPolicyProviderInitialized(); | 610 MarkPolicyProviderInitialized(); |
| 614 | 611 |
| 615 PolicyMap policy; | 612 PolicyMap policy; |
| 616 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 613 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 617 POLICY_SOURCE_CLOUD, new base::StringValue(kFakeONC), nullptr); | 614 POLICY_SOURCE_CLOUD, |
| 615 base::WrapUnique(new base::StringValue(kFakeONC)), nullptr); |
| 618 UpdateProviderPolicy(policy); | 616 UpdateProviderPolicy(policy); |
| 619 | 617 |
| 620 EXPECT_CALL(network_config_handler_, | 618 EXPECT_CALL(network_config_handler_, |
| 621 SetPolicy(CurrentONCSource(), | 619 SetPolicy(CurrentONCSource(), |
| 622 ExpectedUsernameHash(), | 620 ExpectedUsernameHash(), |
| 623 IsEqualTo(&fake_network_configs_), | 621 IsEqualTo(&fake_network_configs_), |
| 624 IsEqualTo(&fake_global_network_config_))); | 622 IsEqualTo(&fake_global_network_config_))); |
| 625 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); | 623 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); |
| 626 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); | 624 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); |
| 627 | 625 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 646 EXPECT_CALL(network_config_handler_, | 644 EXPECT_CALL(network_config_handler_, |
| 647 SetPolicy(CurrentONCSource(), | 645 SetPolicy(CurrentONCSource(), |
| 648 _, | 646 _, |
| 649 IsEqualTo(&fake_network_configs_), | 647 IsEqualTo(&fake_network_configs_), |
| 650 IsEqualTo(&fake_global_network_config_))); | 648 IsEqualTo(&fake_global_network_config_))); |
| 651 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); | 649 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); |
| 652 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); | 650 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); |
| 653 | 651 |
| 654 PolicyMap policy; | 652 PolicyMap policy; |
| 655 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 653 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 656 POLICY_SOURCE_CLOUD, new base::StringValue(kFakeONC), nullptr); | 654 POLICY_SOURCE_CLOUD, |
| 655 base::WrapUnique(new base::StringValue(kFakeONC)), nullptr); |
| 657 UpdateProviderPolicy(policy); | 656 UpdateProviderPolicy(policy); |
| 658 Mock::VerifyAndClearExpectations(&network_config_handler_); | 657 Mock::VerifyAndClearExpectations(&network_config_handler_); |
| 659 EXPECT_EQ(ExpectedImportCertificatesCallCount(), | 658 EXPECT_EQ(ExpectedImportCertificatesCallCount(), |
| 660 certificate_importer_->GetAndResetImportCount()); | 659 certificate_importer_->GetAndResetImportCount()); |
| 661 | 660 |
| 662 // Another update is expected if the policy goes away. | 661 // Another update is expected if the policy goes away. |
| 663 EXPECT_CALL(network_config_handler_, | 662 EXPECT_CALL(network_config_handler_, |
| 664 SetPolicy(CurrentONCSource(), _, IsEmpty(), IsEmpty())); | 663 SetPolicy(CurrentONCSource(), _, IsEmpty(), IsEmpty())); |
| 665 certificate_importer_->SetExpectedONCCertificates(base::ListValue()); | 664 certificate_importer_->SetExpectedONCCertificates(base::ListValue()); |
| 666 | 665 |
| 667 policy.Erase(GetParam()); | 666 policy.Erase(GetParam()); |
| 668 UpdateProviderPolicy(policy); | 667 UpdateProviderPolicy(policy); |
| 669 EXPECT_EQ(ExpectedImportCertificatesCallCount(), | 668 EXPECT_EQ(ExpectedImportCertificatesCallCount(), |
| 670 certificate_importer_->GetAndResetImportCount()); | 669 certificate_importer_->GetAndResetImportCount()); |
| 671 } | 670 } |
| 672 | 671 |
| 673 INSTANTIATE_TEST_CASE_P(NetworkConfigurationUpdaterTestWithParamInstance, | 672 INSTANTIATE_TEST_CASE_P(NetworkConfigurationUpdaterTestWithParamInstance, |
| 674 NetworkConfigurationUpdaterTestWithParam, | 673 NetworkConfigurationUpdaterTestWithParam, |
| 675 testing::Values(key::kDeviceOpenNetworkConfiguration, | 674 testing::Values(key::kDeviceOpenNetworkConfiguration, |
| 676 key::kOpenNetworkConfiguration)); | 675 key::kOpenNetworkConfiguration)); |
| 677 | 676 |
| 678 } // namespace policy | 677 } // namespace policy |
| OLD | NEW |