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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
11 #include "base/values.h" | 11 #include "base/values.h" |
12 #include "chrome/browser/chromeos/policy/device_network_configuration_updater.h" | 12 #include "chrome/browser/chromeos/policy/device_network_configuration_updater.h" |
13 #include "chrome/browser/chromeos/policy/user_network_configuration_updater.h" | 13 #include "chrome/browser/chromeos/policy/user_network_configuration_updater.h" |
14 #include "chrome/browser/chromeos/settings/cros_settings.h" | 14 #include "chrome/browser/chromeos/settings/cros_settings.h" |
15 #include "chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.h" | 15 #include "chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.h" |
16 #include "chrome/test/base/testing_profile.h" | 16 #include "chrome/test/base/testing_profile.h" |
17 #include "chromeos/network/fake_network_device_handler.h" | 17 #include "chromeos/network/fake_network_device_handler.h" |
18 #include "chromeos/network/mock_managed_network_configuration_handler.h" | 18 #include "chromeos/network/mock_managed_network_configuration_handler.h" |
19 #include "chromeos/network/onc/onc_certificate_importer.h" | 19 #include "chromeos/network/onc/onc_certificate_importer.h" |
20 #include "chromeos/network/onc/onc_test_utils.h" | 20 #include "chromeos/network/onc/onc_test_utils.h" |
21 #include "chromeos/network/onc/onc_utils.h" | 21 #include "chromeos/network/onc/onc_utils.h" |
22 #include "components/onc/onc_constants.h" | 22 #include "components/onc/onc_constants.h" |
23 #include "components/policy/core/common/external_data_fetcher.h" | 23 #include "components/policy/core/common/external_data_fetcher.h" |
24 #include "components/policy/core/common/mock_configuration_policy_provider.h" | 24 #include "components/policy/core/common/mock_configuration_policy_provider.h" |
25 #include "components/policy/core/common/policy_map.h" | 25 #include "components/policy/core/common/policy_map.h" |
26 #include "components/policy/core/common/policy_service_impl.h" | 26 #include "components/policy/core/common/policy_service_impl.h" |
27 #include "components/policy/core/common/policy_types.h" | |
28 #include "components/user_manager/user.h" | 27 #include "components/user_manager/user.h" |
29 #include "components/user_manager/user_type.h" | 28 #include "components/user_manager/user_type.h" |
30 #include "content/public/test/test_browser_thread_bundle.h" | 29 #include "content/public/test/test_browser_thread_bundle.h" |
31 #include "content/public/test/test_utils.h" | 30 #include "content/public/test/test_utils.h" |
32 #include "net/base/test_data_directory.h" | 31 #include "net/base/test_data_directory.h" |
33 #include "net/cert/x509_certificate.h" | 32 #include "net/cert/x509_certificate.h" |
34 #include "net/test/cert_test_util.h" | 33 #include "net/test/cert_test_util.h" |
35 #include "policy/policy_constants.h" | 34 #include "policy/policy_constants.h" |
36 #include "testing/gmock/include/gmock/gmock.h" | 35 #include "testing/gmock/include/gmock/gmock.h" |
37 #include "testing/gtest/include/gtest/gtest.h" | 36 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 onc::toplevel_config::kGlobalNetworkConfiguration, | 337 onc::toplevel_config::kGlobalNetworkConfiguration, |
339 &global_config_repaired); | 338 &global_config_repaired); |
340 ASSERT_TRUE(global_config_repaired); | 339 ASSERT_TRUE(global_config_repaired); |
341 | 340 |
342 std::string onc_policy = | 341 std::string onc_policy = |
343 chromeos::onc::test_utils::ReadTestData("toplevel_partially_invalid.onc"); | 342 chromeos::onc::test_utils::ReadTestData("toplevel_partially_invalid.onc"); |
344 PolicyMap policy; | 343 PolicyMap policy; |
345 policy.Set(key::kOpenNetworkConfiguration, | 344 policy.Set(key::kOpenNetworkConfiguration, |
346 POLICY_LEVEL_MANDATORY, | 345 POLICY_LEVEL_MANDATORY, |
347 POLICY_SCOPE_USER, | 346 POLICY_SCOPE_USER, |
348 POLICY_SOURCE_CLOUD, | |
349 new base::StringValue(onc_policy), | 347 new base::StringValue(onc_policy), |
350 NULL); | 348 NULL); |
351 UpdateProviderPolicy(policy); | 349 UpdateProviderPolicy(policy); |
352 | 350 |
353 EXPECT_CALL(network_config_handler_, | 351 EXPECT_CALL(network_config_handler_, |
354 SetPolicy(onc::ONC_SOURCE_USER_POLICY, | 352 SetPolicy(onc::ONC_SOURCE_USER_POLICY, |
355 _, | 353 _, |
356 IsEqualTo(network_configs_repaired), | 354 IsEqualTo(network_configs_repaired), |
357 IsEqualTo(global_config_repaired))); | 355 IsEqualTo(global_config_repaired))); |
358 certificate_importer_->SetExpectedONCSource(onc::ONC_SOURCE_USER_POLICY); | 356 certificate_importer_->SetExpectedONCSource(onc::ONC_SOURCE_USER_POLICY); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 net::X509Certificate::FORMAT_AUTO); | 460 net::X509Certificate::FORMAT_AUTO); |
463 ASSERT_EQ(1u, cert_list.size()); | 461 ASSERT_EQ(1u, cert_list.size()); |
464 certificate_importer_->SetTrustedCertificatesResult(cert_list); | 462 certificate_importer_->SetTrustedCertificatesResult(cert_list); |
465 | 463 |
466 // Change to any non-empty policy, so that updates are triggered. The actual | 464 // Change to any non-empty policy, so that updates are triggered. The actual |
467 // content of the policy is irrelevant. | 465 // content of the policy is irrelevant. |
468 PolicyMap policy; | 466 PolicyMap policy; |
469 policy.Set(key::kOpenNetworkConfiguration, | 467 policy.Set(key::kOpenNetworkConfiguration, |
470 POLICY_LEVEL_MANDATORY, | 468 POLICY_LEVEL_MANDATORY, |
471 POLICY_SCOPE_USER, | 469 POLICY_SCOPE_USER, |
472 POLICY_SOURCE_CLOUD, | |
473 new base::StringValue(kFakeONC), | 470 new base::StringValue(kFakeONC), |
474 NULL); | 471 NULL); |
475 UpdateProviderPolicy(policy); | 472 UpdateProviderPolicy(policy); |
476 base::RunLoop().RunUntilIdle(); | 473 base::RunLoop().RunUntilIdle(); |
477 | 474 |
478 // Certificates with the "Web" trust flag set will be returned and forwarded | 475 // Certificates with the "Web" trust flag set will be returned and forwarded |
479 // to observers. | 476 // to observers. |
480 { | 477 { |
481 net::CertificateList trust_anchors; | 478 net::CertificateList trust_anchors; |
482 updater->GetWebTrustedCertificates(&trust_anchors); | 479 updater->GetWebTrustedCertificates(&trust_anchors); |
483 EXPECT_EQ(1u, trust_anchors.size()); | 480 EXPECT_EQ(1u, trust_anchors.size()); |
484 } | 481 } |
485 EXPECT_EQ(1u, observer.trust_anchors_.size()); | 482 EXPECT_EQ(1u, observer.trust_anchors_.size()); |
486 | 483 |
487 updater->RemoveTrustedCertsObserver(&observer); | 484 updater->RemoveTrustedCertsObserver(&observer); |
488 } | 485 } |
489 | 486 |
490 TEST_F(NetworkConfigurationUpdaterTest, | 487 TEST_F(NetworkConfigurationUpdaterTest, |
491 DontImportCertificateBeforeCertificateImporterSet) { | 488 DontImportCertificateBeforeCertificateImporterSet) { |
492 PolicyMap policy; | 489 PolicyMap policy; |
493 policy.Set(key::kOpenNetworkConfiguration, POLICY_LEVEL_MANDATORY, | 490 policy.Set(key::kOpenNetworkConfiguration, POLICY_LEVEL_MANDATORY, |
494 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, | 491 POLICY_SCOPE_USER, new base::StringValue(kFakeONC), NULL); |
495 new base::StringValue(kFakeONC), nullptr); | |
496 UpdateProviderPolicy(policy); | 492 UpdateProviderPolicy(policy); |
497 | 493 |
498 EXPECT_CALL(network_config_handler_, | 494 EXPECT_CALL(network_config_handler_, |
499 SetPolicy(onc::ONC_SOURCE_USER_POLICY, | 495 SetPolicy(onc::ONC_SOURCE_USER_POLICY, |
500 kFakeUsernameHash, | 496 kFakeUsernameHash, |
501 IsEqualTo(&fake_network_configs_), | 497 IsEqualTo(&fake_network_configs_), |
502 IsEqualTo(&fake_global_network_config_))); | 498 IsEqualTo(&fake_global_network_config_))); |
503 | 499 |
504 UserNetworkConfigurationUpdater* updater = | 500 UserNetworkConfigurationUpdater* updater = |
505 CreateNetworkConfigurationUpdaterForUserPolicy( | 501 CreateNetworkConfigurationUpdaterForUserPolicy( |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
551 true /* set certificate importer */); | 547 true /* set certificate importer */); |
552 } else { | 548 } else { |
553 CreateNetworkConfigurationUpdaterForDevicePolicy(); | 549 CreateNetworkConfigurationUpdaterForDevicePolicy(); |
554 } | 550 } |
555 } | 551 } |
556 }; | 552 }; |
557 | 553 |
558 TEST_P(NetworkConfigurationUpdaterTestWithParam, InitialUpdates) { | 554 TEST_P(NetworkConfigurationUpdaterTestWithParam, InitialUpdates) { |
559 PolicyMap policy; | 555 PolicyMap policy; |
560 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 556 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
561 POLICY_SOURCE_CLOUD, new base::StringValue(kFakeONC), nullptr); | 557 new base::StringValue(kFakeONC), NULL); |
562 UpdateProviderPolicy(policy); | 558 UpdateProviderPolicy(policy); |
563 | 559 |
564 EXPECT_CALL(network_config_handler_, | 560 EXPECT_CALL(network_config_handler_, |
565 SetPolicy(CurrentONCSource(), | 561 SetPolicy(CurrentONCSource(), |
566 ExpectedUsernameHash(), | 562 ExpectedUsernameHash(), |
567 IsEqualTo(&fake_network_configs_), | 563 IsEqualTo(&fake_network_configs_), |
568 IsEqualTo(&fake_global_network_config_))); | 564 IsEqualTo(&fake_global_network_config_))); |
569 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); | 565 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); |
570 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); | 566 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); |
571 | 567 |
572 CreateNetworkConfigurationUpdater(); | 568 CreateNetworkConfigurationUpdater(); |
573 MarkPolicyProviderInitialized(); | 569 MarkPolicyProviderInitialized(); |
574 EXPECT_EQ(ExpectedImportCertificatesCallCount(), | 570 EXPECT_EQ(ExpectedImportCertificatesCallCount(), |
575 certificate_importer_->GetAndResetImportCount()); | 571 certificate_importer_->GetAndResetImportCount()); |
576 } | 572 } |
577 | 573 |
578 TEST_P(NetworkConfigurationUpdaterTestWithParam, | 574 TEST_P(NetworkConfigurationUpdaterTestWithParam, |
579 PolicyNotSetBeforePolicyProviderInitialized) { | 575 PolicyNotSetBeforePolicyProviderInitialized) { |
580 PolicyMap policy; | 576 PolicyMap policy; |
581 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 577 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
582 POLICY_SOURCE_CLOUD, new base::StringValue(kFakeONC), nullptr); | 578 new base::StringValue(kFakeONC), NULL); |
583 UpdateProviderPolicy(policy); | 579 UpdateProviderPolicy(policy); |
584 | 580 |
585 CreateNetworkConfigurationUpdater(); | 581 CreateNetworkConfigurationUpdater(); |
586 | 582 |
587 Mock::VerifyAndClearExpectations(&network_config_handler_); | 583 Mock::VerifyAndClearExpectations(&network_config_handler_); |
588 EXPECT_EQ(0u, certificate_importer_->GetAndResetImportCount()); | 584 EXPECT_EQ(0u, certificate_importer_->GetAndResetImportCount()); |
589 | 585 |
590 EXPECT_CALL(network_config_handler_, | 586 EXPECT_CALL(network_config_handler_, |
591 SetPolicy(CurrentONCSource(), | 587 SetPolicy(CurrentONCSource(), |
592 ExpectedUsernameHash(), | 588 ExpectedUsernameHash(), |
593 IsEqualTo(&fake_network_configs_), | 589 IsEqualTo(&fake_network_configs_), |
594 IsEqualTo(&fake_global_network_config_))); | 590 IsEqualTo(&fake_global_network_config_))); |
595 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); | 591 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); |
596 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); | 592 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); |
597 | 593 |
598 MarkPolicyProviderInitialized(); | 594 MarkPolicyProviderInitialized(); |
599 EXPECT_EQ(ExpectedImportCertificatesCallCount(), | 595 EXPECT_EQ(ExpectedImportCertificatesCallCount(), |
600 certificate_importer_->GetAndResetImportCount()); | 596 certificate_importer_->GetAndResetImportCount()); |
601 } | 597 } |
602 | 598 |
603 TEST_P(NetworkConfigurationUpdaterTestWithParam, | 599 TEST_P(NetworkConfigurationUpdaterTestWithParam, |
604 PolicyAppliedImmediatelyIfProvidersInitialized) { | 600 PolicyAppliedImmediatelyIfProvidersInitialized) { |
605 MarkPolicyProviderInitialized(); | 601 MarkPolicyProviderInitialized(); |
606 | 602 |
607 PolicyMap policy; | 603 PolicyMap policy; |
608 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 604 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
609 POLICY_SOURCE_CLOUD, new base::StringValue(kFakeONC), nullptr); | 605 new base::StringValue(kFakeONC), NULL); |
610 UpdateProviderPolicy(policy); | 606 UpdateProviderPolicy(policy); |
611 | 607 |
612 EXPECT_CALL(network_config_handler_, | 608 EXPECT_CALL(network_config_handler_, |
613 SetPolicy(CurrentONCSource(), | 609 SetPolicy(CurrentONCSource(), |
614 ExpectedUsernameHash(), | 610 ExpectedUsernameHash(), |
615 IsEqualTo(&fake_network_configs_), | 611 IsEqualTo(&fake_network_configs_), |
616 IsEqualTo(&fake_global_network_config_))); | 612 IsEqualTo(&fake_global_network_config_))); |
617 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); | 613 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); |
618 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); | 614 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); |
619 | 615 |
(...skipping 18 matching lines...) Expand all Loading... |
638 EXPECT_CALL(network_config_handler_, | 634 EXPECT_CALL(network_config_handler_, |
639 SetPolicy(CurrentONCSource(), | 635 SetPolicy(CurrentONCSource(), |
640 _, | 636 _, |
641 IsEqualTo(&fake_network_configs_), | 637 IsEqualTo(&fake_network_configs_), |
642 IsEqualTo(&fake_global_network_config_))); | 638 IsEqualTo(&fake_global_network_config_))); |
643 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); | 639 certificate_importer_->SetExpectedONCSource(CurrentONCSource()); |
644 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); | 640 certificate_importer_->SetExpectedONCCertificates(fake_certificates_); |
645 | 641 |
646 PolicyMap policy; | 642 PolicyMap policy; |
647 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 643 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
648 POLICY_SOURCE_CLOUD, new base::StringValue(kFakeONC), nullptr); | 644 new base::StringValue(kFakeONC), NULL); |
649 UpdateProviderPolicy(policy); | 645 UpdateProviderPolicy(policy); |
650 Mock::VerifyAndClearExpectations(&network_config_handler_); | 646 Mock::VerifyAndClearExpectations(&network_config_handler_); |
651 EXPECT_EQ(ExpectedImportCertificatesCallCount(), | 647 EXPECT_EQ(ExpectedImportCertificatesCallCount(), |
652 certificate_importer_->GetAndResetImportCount()); | 648 certificate_importer_->GetAndResetImportCount()); |
653 | 649 |
654 // Another update is expected if the policy goes away. | 650 // Another update is expected if the policy goes away. |
655 EXPECT_CALL(network_config_handler_, | 651 EXPECT_CALL(network_config_handler_, |
656 SetPolicy(CurrentONCSource(), _, IsEmpty(), IsEmpty())); | 652 SetPolicy(CurrentONCSource(), _, IsEmpty(), IsEmpty())); |
657 certificate_importer_->SetExpectedONCCertificates(base::ListValue()); | 653 certificate_importer_->SetExpectedONCCertificates(base::ListValue()); |
658 | 654 |
659 policy.Erase(GetParam()); | 655 policy.Erase(GetParam()); |
660 UpdateProviderPolicy(policy); | 656 UpdateProviderPolicy(policy); |
661 EXPECT_EQ(ExpectedImportCertificatesCallCount(), | 657 EXPECT_EQ(ExpectedImportCertificatesCallCount(), |
662 certificate_importer_->GetAndResetImportCount()); | 658 certificate_importer_->GetAndResetImportCount()); |
663 } | 659 } |
664 | 660 |
665 INSTANTIATE_TEST_CASE_P(NetworkConfigurationUpdaterTestWithParamInstance, | 661 INSTANTIATE_TEST_CASE_P(NetworkConfigurationUpdaterTestWithParamInstance, |
666 NetworkConfigurationUpdaterTestWithParam, | 662 NetworkConfigurationUpdaterTestWithParam, |
667 testing::Values(key::kDeviceOpenNetworkConfiguration, | 663 testing::Values(key::kDeviceOpenNetworkConfiguration, |
668 key::kOpenNetworkConfiguration)); | 664 key::kOpenNetworkConfiguration)); |
669 | 665 |
670 } // namespace policy | 666 } // namespace policy |
OLD | NEW |