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 |