| Index: chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc
|
| diff --git a/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc b/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc
|
| index 8676ed4f374c59a8ce37654d4c72e53fa1b92c96..2629ee4194752f0182e646f44b0eb80f8b8d071d 100644
|
| --- a/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc
|
| +++ b/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc
|
| @@ -17,7 +17,7 @@
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "chromeos/network/fake_network_device_handler.h"
|
| #include "chromeos/network/mock_managed_network_configuration_handler.h"
|
| -#include "chromeos/network/onc/mock_certificate_importer.h"
|
| +#include "chromeos/network/onc/onc_certificate_importer.h"
|
| #include "chromeos/network/onc/onc_test_utils.h"
|
| #include "chromeos/network/onc/onc_utils.h"
|
| #include "components/onc/onc_constants.h"
|
| @@ -71,11 +71,16 @@ class FakeUser : public user_manager::User {
|
| class FakeWebTrustedCertsObserver
|
| : public UserNetworkConfigurationUpdater::WebTrustedCertsObserver {
|
| public:
|
| + FakeWebTrustedCertsObserver() {}
|
| +
|
| virtual void OnTrustAnchorsChanged(
|
| const net::CertificateList& trust_anchors) OVERRIDE {
|
| trust_anchors_ = trust_anchors;
|
| }
|
| net::CertificateList trust_anchors_;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(FakeWebTrustedCertsObserver);
|
| };
|
|
|
| class FakeNetworkDeviceHandler : public chromeos::FakeNetworkDeviceHandler {
|
| @@ -87,6 +92,56 @@ class FakeNetworkDeviceHandler : public chromeos::FakeNetworkDeviceHandler {
|
| }
|
|
|
| bool allow_roaming_;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(FakeNetworkDeviceHandler);
|
| +};
|
| +
|
| +class FakeCertificateImporter : public chromeos::onc::CertificateImporter {
|
| + public:
|
| + FakeCertificateImporter()
|
| + : expected_onc_source_(::onc::ONC_SOURCE_UNKNOWN), call_count_(0) {}
|
| + virtual ~FakeCertificateImporter() {}
|
| +
|
| + void SetTrustedCertificatesResult(
|
| + net::CertificateList onc_trusted_certificates) {
|
| + onc_trusted_certificates_ = onc_trusted_certificates;
|
| + }
|
| +
|
| + void SetExpectedONCCertificates(const base::ListValue& certificates) {
|
| + expected_onc_certificates_.reset(certificates.DeepCopy());
|
| + }
|
| +
|
| + void SetExpectedONCSource(::onc::ONCSource source) {
|
| + expected_onc_source_ = source;
|
| + }
|
| +
|
| + unsigned int GetAndResetImportCount() {
|
| + unsigned int count = call_count_;
|
| + call_count_ = 0;
|
| + return count;
|
| + }
|
| +
|
| + virtual void ImportCertificates(const base::ListValue& certificates,
|
| + ::onc::ONCSource source,
|
| + const DoneCallback& done_callback) OVERRIDE {
|
| + if (expected_onc_source_ != ::onc::ONC_SOURCE_UNKNOWN)
|
| + EXPECT_EQ(expected_onc_source_, source);
|
| + if (expected_onc_certificates_) {
|
| + EXPECT_TRUE(chromeos::onc::test_utils::Equals(
|
| + expected_onc_certificates_.get(), &certificates));
|
| + }
|
| + ++call_count_;
|
| + done_callback.Run(true, onc_trusted_certificates_);
|
| + }
|
| +
|
| + private:
|
| + ::onc::ONCSource expected_onc_source_;
|
| + scoped_ptr<base::ListValue> expected_onc_certificates_;
|
| + net::CertificateList onc_trusted_certificates_;
|
| + unsigned int call_count_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(FakeCertificateImporter);
|
| };
|
|
|
| const char kFakeONC[] =
|
| @@ -145,8 +200,7 @@ ACTION_P(SetCertificateList, list) {
|
|
|
| class NetworkConfigurationUpdaterTest : public testing::Test {
|
| protected:
|
| - NetworkConfigurationUpdaterTest() {
|
| - }
|
| + NetworkConfigurationUpdaterTest() : certificate_importer_(NULL) {}
|
|
|
| virtual void SetUp() OVERRIDE {
|
| EXPECT_CALL(provider_, IsInitializationComplete(_))
|
| @@ -174,8 +228,7 @@ class NetworkConfigurationUpdaterTest : public testing::Test {
|
| onc::toplevel_config::kCertificates, &certs);
|
| AppendAll(*certs, &fake_certificates_);
|
|
|
| - certificate_importer_ =
|
| - new StrictMock<chromeos::onc::MockCertificateImporter>();
|
| + certificate_importer_ = new FakeCertificateImporter;
|
| certificate_importer_owned_.reset(certificate_importer_);
|
| }
|
|
|
| @@ -243,7 +296,7 @@ class NetworkConfigurationUpdaterTest : public testing::Test {
|
| // NetworkConfigurationUpdater. When that happens, |certificate_importer_|
|
| // continues to point to that instance but |certificate_importer_owned_| is
|
| // released.
|
| - StrictMock<chromeos::onc::MockCertificateImporter>* certificate_importer_;
|
| + FakeCertificateImporter* certificate_importer_;
|
| scoped_ptr<chromeos::onc::CertificateImporter> certificate_importer_owned_;
|
|
|
| StrictMock<MockConfigurationPolicyProvider> provider_;
|
| @@ -316,13 +369,13 @@ TEST_F(NetworkConfigurationUpdaterTest, PolicyIsValidatedAndRepaired) {
|
| _,
|
| IsEqualTo(network_configs_repaired),
|
| IsEqualTo(global_config_repaired)));
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(_, onc::ONC_SOURCE_USER_POLICY, _));
|
| + certificate_importer_->SetExpectedONCSource(onc::ONC_SOURCE_USER_POLICY);
|
|
|
| CreateNetworkConfigurationUpdaterForUserPolicy(
|
| false /* do not allow trusted certs from policy */,
|
| true /* set certificate importer */);
|
| MarkPolicyProviderInitialized();
|
| + EXPECT_EQ(1u, certificate_importer_->GetAndResetImportCount());
|
| }
|
|
|
| TEST_F(NetworkConfigurationUpdaterTest,
|
| @@ -336,8 +389,7 @@ TEST_F(NetworkConfigurationUpdaterTest,
|
|
|
| EXPECT_CALL(network_config_handler_,
|
| SetPolicy(onc::ONC_SOURCE_USER_POLICY, _, _, _));
|
| - EXPECT_CALL(*certificate_importer_, ImportCertificates(_, _, _))
|
| - .WillRepeatedly(SetCertificateList(cert_list));
|
| + certificate_importer_->SetTrustedCertificatesResult(cert_list);
|
|
|
| UserNetworkConfigurationUpdater* updater =
|
| CreateNetworkConfigurationUpdaterForUserPolicy(
|
| @@ -373,9 +425,8 @@ TEST_F(NetworkConfigurationUpdaterTest,
|
| net::X509Certificate::FORMAT_AUTO);
|
| ASSERT_EQ(1u, cert_list.size());
|
|
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(_, onc::ONC_SOURCE_USER_POLICY, _))
|
| - .WillRepeatedly(SetCertificateList(cert_list));
|
| + certificate_importer_->SetExpectedONCSource(onc::ONC_SOURCE_USER_POLICY);
|
| + certificate_importer_->SetTrustedCertificatesResult(cert_list);
|
|
|
| UserNetworkConfigurationUpdater* updater =
|
| CreateNetworkConfigurationUpdaterForUserPolicy(
|
| @@ -398,10 +449,6 @@ TEST_F(NetworkConfigurationUpdaterTest,
|
| .Times(AnyNumber());
|
|
|
| // Start with an empty certificate list.
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(_, onc::ONC_SOURCE_USER_POLICY, _))
|
| - .WillRepeatedly(SetCertificateList(net::CertificateList()));
|
| -
|
| UserNetworkConfigurationUpdater* updater =
|
| CreateNetworkConfigurationUpdaterForUserPolicy(
|
| true /* allow trusted certs from policy */,
|
| @@ -414,7 +461,6 @@ TEST_F(NetworkConfigurationUpdaterTest,
|
| base::RunLoop().RunUntilIdle();
|
|
|
| // Verify that the returned certificate list is empty.
|
| - Mock::VerifyAndClearExpectations(certificate_importer_);
|
| {
|
| net::CertificateList trust_anchors;
|
| updater->GetWebTrustedCertificates(&trust_anchors);
|
| @@ -429,10 +475,7 @@ TEST_F(NetworkConfigurationUpdaterTest,
|
| "ok_cert.pem",
|
| net::X509Certificate::FORMAT_AUTO);
|
| ASSERT_EQ(1u, cert_list.size());
|
| -
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(_, onc::ONC_SOURCE_USER_POLICY, _))
|
| - .WillOnce(SetCertificateList(cert_list));
|
| + certificate_importer_->SetTrustedCertificatesResult(cert_list);
|
|
|
| // Change to any non-empty policy, so that updates are triggered. The actual
|
| // content of the policy is irrelevant.
|
| @@ -469,7 +512,6 @@ TEST_F(NetworkConfigurationUpdaterTest,
|
| kFakeUsernameHash,
|
| IsEqualTo(&fake_network_configs_),
|
| IsEqualTo(&fake_global_network_config_)));
|
| - EXPECT_CALL(*certificate_importer_, ImportCertificates(_, _ , _)).Times(0);
|
|
|
| UserNetworkConfigurationUpdater* updater =
|
| CreateNetworkConfigurationUpdaterForUserPolicy(
|
| @@ -478,21 +520,14 @@ TEST_F(NetworkConfigurationUpdaterTest,
|
| MarkPolicyProviderInitialized();
|
|
|
| Mock::VerifyAndClearExpectations(&network_config_handler_);
|
| - Mock::VerifyAndClearExpectations(certificate_importer_);
|
| + EXPECT_EQ(0u, certificate_importer_->GetAndResetImportCount());
|
|
|
| - EXPECT_CALL(network_config_handler_,
|
| - SetPolicy(onc::ONC_SOURCE_USER_POLICY,
|
| - kFakeUsernameHash,
|
| - IsEqualTo(&fake_network_configs_),
|
| - IsEqualTo(&fake_global_network_config_)))
|
| - .Times(0);
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(IsEqualTo(&fake_certificates_),
|
| - onc::ONC_SOURCE_USER_POLICY,
|
| - _));
|
| + certificate_importer_->SetExpectedONCCertificates(fake_certificates_);
|
| + certificate_importer_->SetExpectedONCSource(onc::ONC_SOURCE_USER_POLICY);
|
|
|
| ASSERT_TRUE(certificate_importer_owned_);
|
| updater->SetCertificateImporterForTest(certificate_importer_owned_.Pass());
|
| + EXPECT_EQ(1u, certificate_importer_->GetAndResetImportCount());
|
| }
|
|
|
| class NetworkConfigurationUpdaterTestWithParam
|
| @@ -543,14 +578,13 @@ TEST_P(NetworkConfigurationUpdaterTestWithParam, InitialUpdates) {
|
| ExpectedUsernameHash(),
|
| IsEqualTo(&fake_network_configs_),
|
| IsEqualTo(&fake_global_network_config_)));
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(IsEqualTo(&fake_certificates_),
|
| - CurrentONCSource(),
|
| - _))
|
| - .Times(ExpectedImportCertificatesCallCount());
|
| + certificate_importer_->SetExpectedONCCertificates(fake_certificates_);
|
| + certificate_importer_->SetExpectedONCSource(CurrentONCSource());
|
|
|
| CreateNetworkConfigurationUpdater();
|
| MarkPolicyProviderInitialized();
|
| + EXPECT_EQ(ExpectedImportCertificatesCallCount(),
|
| + certificate_importer_->GetAndResetImportCount());
|
| }
|
|
|
| TEST_P(NetworkConfigurationUpdaterTestWithParam,
|
| @@ -560,35 +594,22 @@ TEST_P(NetworkConfigurationUpdaterTestWithParam,
|
| new base::StringValue(kFakeONC), NULL);
|
| UpdateProviderPolicy(policy);
|
|
|
| - EXPECT_CALL(network_config_handler_,
|
| - SetPolicy(CurrentONCSource(),
|
| - ExpectedUsernameHash(),
|
| - IsEqualTo(&fake_network_configs_),
|
| - IsEqualTo(&fake_global_network_config_)))
|
| - .Times(0);
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(IsEqualTo(&fake_certificates_),
|
| - CurrentONCSource(),
|
| - _))
|
| - .Times(0);
|
| -
|
| CreateNetworkConfigurationUpdater();
|
|
|
| Mock::VerifyAndClearExpectations(&network_config_handler_);
|
| - Mock::VerifyAndClearExpectations(certificate_importer_);
|
| + EXPECT_EQ(0u, certificate_importer_->GetAndResetImportCount());
|
|
|
| EXPECT_CALL(network_config_handler_,
|
| SetPolicy(CurrentONCSource(),
|
| ExpectedUsernameHash(),
|
| IsEqualTo(&fake_network_configs_),
|
| IsEqualTo(&fake_global_network_config_)));
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(IsEqualTo(&fake_certificates_),
|
| - CurrentONCSource(),
|
| - _))
|
| - .Times(ExpectedImportCertificatesCallCount());
|
| + certificate_importer_->SetExpectedONCSource(CurrentONCSource());
|
| + certificate_importer_->SetExpectedONCCertificates(fake_certificates_);
|
|
|
| MarkPolicyProviderInitialized();
|
| + EXPECT_EQ(ExpectedImportCertificatesCallCount(),
|
| + certificate_importer_->GetAndResetImportCount());
|
| }
|
|
|
| TEST_P(NetworkConfigurationUpdaterTestWithParam,
|
| @@ -605,26 +626,25 @@ TEST_P(NetworkConfigurationUpdaterTestWithParam,
|
| ExpectedUsernameHash(),
|
| IsEqualTo(&fake_network_configs_),
|
| IsEqualTo(&fake_global_network_config_)));
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(IsEqualTo(&fake_certificates_),
|
| - CurrentONCSource(),
|
| - _))
|
| - .Times(ExpectedImportCertificatesCallCount());
|
| + certificate_importer_->SetExpectedONCSource(CurrentONCSource());
|
| + certificate_importer_->SetExpectedONCCertificates(fake_certificates_);
|
|
|
| CreateNetworkConfigurationUpdater();
|
| +
|
| + EXPECT_EQ(ExpectedImportCertificatesCallCount(),
|
| + certificate_importer_->GetAndResetImportCount());
|
| }
|
|
|
| TEST_P(NetworkConfigurationUpdaterTestWithParam, PolicyChange) {
|
| // Ignore the initial updates.
|
| EXPECT_CALL(network_config_handler_, SetPolicy(_, _, _, _)).Times(AtLeast(1));
|
| - EXPECT_CALL(*certificate_importer_, ImportCertificates(_, _, _))
|
| - .Times(AtLeast(ExpectedImportCertificatesCallCount()));
|
|
|
| CreateNetworkConfigurationUpdater();
|
| MarkPolicyProviderInitialized();
|
|
|
| Mock::VerifyAndClearExpectations(&network_config_handler_);
|
| - Mock::VerifyAndClearExpectations(certificate_importer_);
|
| + EXPECT_LE(ExpectedImportCertificatesCallCount(),
|
| + certificate_importer_->GetAndResetImportCount());
|
|
|
| // The Updater should update if policy changes.
|
| EXPECT_CALL(network_config_handler_,
|
| @@ -632,28 +652,26 @@ TEST_P(NetworkConfigurationUpdaterTestWithParam, PolicyChange) {
|
| _,
|
| IsEqualTo(&fake_network_configs_),
|
| IsEqualTo(&fake_global_network_config_)));
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(IsEqualTo(&fake_certificates_),
|
| - CurrentONCSource(),
|
| - _))
|
| - .Times(ExpectedImportCertificatesCallCount());
|
| + certificate_importer_->SetExpectedONCSource(CurrentONCSource());
|
| + certificate_importer_->SetExpectedONCCertificates(fake_certificates_);
|
|
|
| PolicyMap policy;
|
| policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
|
| new base::StringValue(kFakeONC), NULL);
|
| UpdateProviderPolicy(policy);
|
| Mock::VerifyAndClearExpectations(&network_config_handler_);
|
| - Mock::VerifyAndClearExpectations(certificate_importer_);
|
| + EXPECT_EQ(ExpectedImportCertificatesCallCount(),
|
| + certificate_importer_->GetAndResetImportCount());
|
|
|
| // Another update is expected if the policy goes away.
|
| EXPECT_CALL(network_config_handler_,
|
| SetPolicy(CurrentONCSource(), _, IsEmpty(), IsEmpty()));
|
| - EXPECT_CALL(*certificate_importer_,
|
| - ImportCertificates(IsEmpty(), CurrentONCSource(), _))
|
| - .Times(ExpectedImportCertificatesCallCount());
|
| + certificate_importer_->SetExpectedONCCertificates(base::ListValue());
|
|
|
| policy.Erase(GetParam());
|
| UpdateProviderPolicy(policy);
|
| + EXPECT_EQ(ExpectedImportCertificatesCallCount(),
|
| + certificate_importer_->GetAndResetImportCount());
|
| }
|
|
|
| INSTANTIATE_TEST_CASE_P(NetworkConfigurationUpdaterTestWithParamInstance,
|
|
|