Index: chrome/browser/policy/device_local_account_policy_service_unittest.cc |
diff --git a/chrome/browser/policy/device_local_account_policy_service_unittest.cc b/chrome/browser/policy/device_local_account_policy_service_unittest.cc |
deleted file mode 100644 |
index 0970b3309a3720e26a2b68ba26e360cc83815adb..0000000000000000000000000000000000000000 |
--- a/chrome/browser/policy/device_local_account_policy_service_unittest.cc |
+++ /dev/null |
@@ -1,550 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/policy/device_local_account_policy_service.h" |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "chrome/browser/chromeos/settings/device_settings_test_helper.h" |
-#include "chrome/browser/policy/cloud_policy_client.h" |
-#include "chrome/browser/policy/cloud_policy_constants.h" |
-#include "chrome/browser/policy/cloud_policy_service.h" |
-#include "chrome/browser/policy/device_local_account_policy_provider.h" |
-#include "chrome/browser/policy/mock_configuration_policy_provider.h" |
-#include "chrome/browser/policy/mock_device_management_service.h" |
-#include "chrome/browser/policy/policy_builder.h" |
-#include "chrome/browser/policy/proto/chrome_device_policy.pb.h" |
-#include "policy/policy_constants.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using testing::AnyNumber; |
-using testing::AtLeast; |
-using testing::Mock; |
-using testing::SaveArg; |
-using testing::_; |
- |
-namespace em = enterprise_management; |
- |
-namespace policy { |
- |
-class MockDeviceLocalAccountPolicyServiceObserver |
- : public DeviceLocalAccountPolicyService::Observer { |
- public: |
- MOCK_METHOD1(OnPolicyUpdated, void(const std::string&)); |
- MOCK_METHOD0(OnDeviceLocalAccountsChanged, void(void)); |
-}; |
- |
-class DeviceLocalAccountPolicyServiceTest |
- : public chromeos::DeviceSettingsTestBase { |
- public: |
- DeviceLocalAccountPolicyServiceTest() |
- : service_(&device_settings_test_helper_, &device_settings_service_) {} |
- |
- virtual void SetUp() OVERRIDE { |
- DeviceSettingsTestBase::SetUp(); |
- |
- // Values implicitly enforced for public accounts. |
- expected_policy_map_.Set(key::kShelfAutoHideBehavior, |
- POLICY_LEVEL_MANDATORY, |
- POLICY_SCOPE_USER, |
- Value::CreateStringValue("Never")); |
- expected_policy_map_.Set(key::kShowLogoutButtonInTray, |
- POLICY_LEVEL_MANDATORY, |
- POLICY_SCOPE_USER, |
- Value::CreateBooleanValue(true)); |
- scoped_ptr<base::ListValue> allowed_extension_types(new base::ListValue()); |
- allowed_extension_types->AppendString("hosted_app"); |
- expected_policy_map_.Set(key::kExtensionAllowedTypes, |
- POLICY_LEVEL_MANDATORY, |
- POLICY_SCOPE_USER, |
- allowed_extension_types.release()); |
- |
- // Explicitly set value. |
- expected_policy_map_.Set(key::kDisableSpdy, |
- POLICY_LEVEL_MANDATORY, |
- POLICY_SCOPE_USER, |
- Value::CreateBooleanValue(true)); |
- |
- device_local_account_policy_.payload().mutable_disablespdy()->set_value( |
- true); |
- device_local_account_policy_.policy_data().set_policy_type( |
- dm_protocol::kChromePublicAccountPolicyType); |
- device_local_account_policy_.policy_data().set_settings_entity_id( |
- PolicyBuilder::kFakeUsername); |
- device_local_account_policy_.Build(); |
- |
- device_policy_.payload().mutable_device_local_accounts()->add_account()-> |
- set_id(PolicyBuilder::kFakeUsername); |
- device_policy_.Build(); |
- |
- service_.AddObserver(&service_observer_); |
- } |
- |
- virtual void TearDown() OVERRIDE { |
- service_.RemoveObserver(&service_observer_); |
- |
- DeviceSettingsTestBase::TearDown(); |
- } |
- |
- void InstallDevicePolicy() { |
- EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()); |
- device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
- ReloadDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- } |
- |
- MOCK_METHOD1(OnRefreshDone, void(bool)); |
- |
- PolicyMap expected_policy_map_; |
- UserPolicyBuilder device_local_account_policy_; |
- MockDeviceLocalAccountPolicyServiceObserver service_observer_; |
- MockDeviceManagementService mock_device_management_service_; |
- DeviceLocalAccountPolicyService service_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyServiceTest); |
-}; |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, NoAccounts) { |
- EXPECT_FALSE(service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername)); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, GetBroker) { |
- InstallDevicePolicy(); |
- |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- EXPECT_EQ(PolicyBuilder::kFakeUsername, broker->account_id()); |
- ASSERT_TRUE(broker->core()->store()); |
- EXPECT_EQ(CloudPolicyStore::STATUS_OK, broker->core()->store()->status()); |
- EXPECT_FALSE(broker->core()->client()); |
- EXPECT_TRUE(broker->core()->store()->policy_map().empty()); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, LoadNoPolicy) { |
- InstallDevicePolicy(); |
- |
- EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- |
- ASSERT_TRUE(broker->core()->store()); |
- EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, |
- broker->core()->store()->status()); |
- EXPECT_TRUE(broker->core()->store()->policy_map().empty()); |
- EXPECT_FALSE(service_.IsPolicyAvailableForAccount( |
- PolicyBuilder::kFakeUsername)); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, LoadValidationFailure) { |
- device_local_account_policy_.policy_data().set_policy_type( |
- dm_protocol::kChromeUserPolicyType); |
- device_local_account_policy_.Build(); |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- InstallDevicePolicy(); |
- |
- EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- |
- ASSERT_TRUE(broker->core()->store()); |
- EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, |
- broker->core()->store()->status()); |
- EXPECT_TRUE(broker->core()->store()->policy_map().empty()); |
- EXPECT_FALSE(service_.IsPolicyAvailableForAccount( |
- PolicyBuilder::kFakeUsername)); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, LoadPolicy) { |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- InstallDevicePolicy(); |
- |
- EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- |
- ASSERT_TRUE(broker->core()->store()); |
- EXPECT_EQ(CloudPolicyStore::STATUS_OK, |
- broker->core()->store()->status()); |
- ASSERT_TRUE(broker->core()->store()->policy()); |
- EXPECT_EQ(device_local_account_policy_.policy_data().SerializeAsString(), |
- broker->core()->store()->policy()->SerializeAsString()); |
- EXPECT_TRUE(expected_policy_map_.Equals( |
- broker->core()->store()->policy_map())); |
- EXPECT_TRUE(service_.IsPolicyAvailableForAccount( |
- PolicyBuilder::kFakeUsername)); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, StoreValidationFailure) { |
- device_local_account_policy_.policy_data().set_policy_type( |
- dm_protocol::kChromeUserPolicyType); |
- device_local_account_policy_.Build(); |
- InstallDevicePolicy(); |
- |
- EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- ASSERT_TRUE(broker->core()->store()); |
- broker->core()->store()->Store(device_local_account_policy_.policy()); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- |
- ASSERT_TRUE(broker->core()->store()); |
- EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, |
- broker->core()->store()->status()); |
- EXPECT_EQ(CloudPolicyValidatorBase::VALIDATION_WRONG_POLICY_TYPE, |
- broker->core()->store()->validation_status()); |
- EXPECT_FALSE(service_.IsPolicyAvailableForAccount( |
- PolicyBuilder::kFakeUsername)); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, StorePolicy) { |
- InstallDevicePolicy(); |
- |
- EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- ASSERT_TRUE(broker->core()->store()); |
- broker->core()->store()->Store(device_local_account_policy_.policy()); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- |
- EXPECT_EQ(device_local_account_policy_.GetBlob(), |
- device_settings_test_helper_.device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername)); |
- EXPECT_TRUE(service_.IsPolicyAvailableForAccount( |
- PolicyBuilder::kFakeUsername)); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, DevicePolicyChange) { |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- InstallDevicePolicy(); |
- |
- EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()); |
- device_policy_.payload().mutable_device_local_accounts()->clear_account(); |
- device_policy_.Build(); |
- device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
- device_settings_service_.PropertyChangeComplete(true); |
- FlushDeviceSettings(); |
- EXPECT_FALSE(service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername)); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, DuplicateAccounts) { |
- InstallDevicePolicy(); |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- |
- // Add a second entry with a duplicate account name to device policy. |
- device_policy_.payload().mutable_device_local_accounts()->add_account()-> |
- set_id(PolicyBuilder::kFakeUsername); |
- device_policy_.Build(); |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
- |
- EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()); |
- EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); |
- device_settings_service_.PropertyChangeComplete(true); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- |
- // Make sure the broker is accessible and policy got loaded. |
- broker = service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- EXPECT_EQ(PolicyBuilder::kFakeUsername, broker->account_id()); |
- EXPECT_TRUE(broker->core()->store()->policy()); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, FetchPolicy) { |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- InstallDevicePolicy(); |
- |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- |
- service_.Connect(&mock_device_management_service_); |
- EXPECT_TRUE(broker->core()->client()); |
- |
- em::DeviceManagementRequest request; |
- em::DeviceManagementResponse response; |
- response.mutable_policy_response()->add_response()->CopyFrom( |
- device_local_account_policy_.policy()); |
- EXPECT_CALL(mock_device_management_service_, |
- CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH)) |
- .WillOnce(mock_device_management_service_.SucceedJob(response)); |
- EXPECT_CALL(mock_device_management_service_, |
- StartJob(dm_protocol::kValueRequestPolicy, |
- std::string(), std::string(), |
- device_policy_.policy_data().request_token(), |
- dm_protocol::kValueUserAffiliationManaged, |
- device_policy_.policy_data().device_id(), |
- _)) |
- .WillOnce(SaveArg<6>(&request)); |
- EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); |
- broker->core()->client()->FetchPolicy(); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- Mock::VerifyAndClearExpectations(&mock_device_management_service_); |
- EXPECT_TRUE(request.has_policy_request()); |
- EXPECT_EQ(1, request.policy_request().request_size()); |
- EXPECT_EQ(dm_protocol::kChromePublicAccountPolicyType, |
- request.policy_request().request(0).policy_type()); |
- EXPECT_FALSE(request.policy_request().request(0).has_machine_id()); |
- EXPECT_EQ(PolicyBuilder::kFakeUsername, |
- request.policy_request().request(0).settings_entity_id()); |
- |
- ASSERT_TRUE(broker->core()->store()); |
- EXPECT_EQ(CloudPolicyStore::STATUS_OK, |
- broker->core()->store()->status()); |
- ASSERT_TRUE(broker->core()->store()->policy()); |
- EXPECT_EQ(device_local_account_policy_.policy_data().SerializeAsString(), |
- broker->core()->store()->policy()->SerializeAsString()); |
- EXPECT_TRUE(expected_policy_map_.Equals( |
- broker->core()->store()->policy_map())); |
- EXPECT_TRUE(service_.IsPolicyAvailableForAccount( |
- PolicyBuilder::kFakeUsername)); |
- |
- EXPECT_CALL(service_observer_, |
- OnPolicyUpdated(PolicyBuilder::kFakeUsername)).Times(0); |
- service_.Disconnect(); |
- EXPECT_FALSE(broker->core()->client()); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- EXPECT_TRUE(service_.IsPolicyAvailableForAccount( |
- PolicyBuilder::kFakeUsername)); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyServiceTest, RefreshPolicy) { |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- InstallDevicePolicy(); |
- |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- |
- service_.Connect(&mock_device_management_service_); |
- ASSERT_TRUE(broker->core()->service()); |
- |
- em::DeviceManagementResponse response; |
- response.mutable_policy_response()->add_response()->CopyFrom( |
- device_local_account_policy_.policy()); |
- EXPECT_CALL(mock_device_management_service_, CreateJob(_)) |
- .WillOnce(mock_device_management_service_.SucceedJob(response)); |
- EXPECT_CALL(mock_device_management_service_, StartJob(_, _, _, _, _, _, _)); |
- EXPECT_CALL(*this, OnRefreshDone(true)).Times(1); |
- EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); |
- broker->core()->service()->RefreshPolicy( |
- base::Bind(&DeviceLocalAccountPolicyServiceTest::OnRefreshDone, |
- base::Unretained(this))); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&service_observer_); |
- Mock::VerifyAndClearExpectations(this); |
- Mock::VerifyAndClearExpectations(&mock_device_management_service_); |
- |
- ASSERT_TRUE(broker->core()->store()); |
- EXPECT_EQ(CloudPolicyStore::STATUS_OK, |
- broker->core()->store()->status()); |
- EXPECT_TRUE(expected_policy_map_.Equals( |
- broker->core()->store()->policy_map())); |
- EXPECT_TRUE(service_.IsPolicyAvailableForAccount( |
- PolicyBuilder::kFakeUsername)); |
-} |
- |
-class DeviceLocalAccountPolicyProviderTest |
- : public DeviceLocalAccountPolicyServiceTest { |
- protected: |
- DeviceLocalAccountPolicyProviderTest() |
- : provider_(PolicyBuilder::kFakeUsername, &service_) {} |
- |
- virtual void SetUp() OVERRIDE { |
- DeviceLocalAccountPolicyServiceTest::SetUp(); |
- provider_.Init(); |
- provider_.AddObserver(&provider_observer_); |
- |
- EXPECT_CALL(service_observer_, OnPolicyUpdated(_)).Times(AnyNumber()); |
- EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()) |
- .Times(AnyNumber()); |
- } |
- |
- virtual void TearDown() OVERRIDE { |
- provider_.RemoveObserver(&provider_observer_); |
- provider_.Shutdown(); |
- DeviceLocalAccountPolicyServiceTest::TearDown(); |
- } |
- |
- DeviceLocalAccountPolicyProvider provider_; |
- MockConfigurationPolicyObserver provider_observer_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyProviderTest); |
-}; |
- |
-TEST_F(DeviceLocalAccountPolicyProviderTest, Initialization) { |
- EXPECT_FALSE(provider_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
- |
- // Policy change should complete initialization. |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
- ReloadDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- |
- EXPECT_TRUE(provider_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
- |
- // The account disappearing should *not* flip the initialization flag back. |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)) |
- .Times(AnyNumber()); |
- device_policy_.payload().mutable_device_local_accounts()->clear_account(); |
- device_policy_.Build(); |
- device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
- ReloadDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- |
- EXPECT_TRUE(provider_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyProviderTest, Policy) { |
- // Policy should load successfully. |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
- device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- ReloadDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- |
- PolicyBundle expected_policy_bundle; |
- expected_policy_bundle.Get(PolicyNamespace( |
- POLICY_DOMAIN_CHROME, std::string())).CopyFrom(expected_policy_map_); |
- EXPECT_TRUE(expected_policy_bundle.Equals(provider_.policies())); |
- |
- // Policy change should be reported. |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
- device_local_account_policy_.payload().mutable_disablespdy()->set_value( |
- false); |
- device_local_account_policy_.Build(); |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- broker->core()->store()->Load(); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- |
- expected_policy_bundle.Get( |
- PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
- .Set(key::kDisableSpdy, |
- POLICY_LEVEL_MANDATORY, |
- POLICY_SCOPE_USER, |
- Value::CreateBooleanValue(false)); |
- EXPECT_TRUE(expected_policy_bundle.Equals(provider_.policies())); |
- |
- // Any values set for the |ShelfAutoHideBehavior|, |ShowLogoutButtonInTray| |
- // and |ExtensionAllowedTypes| policies should be overridden. |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
- device_local_account_policy_.payload().mutable_shelfautohidebehavior()-> |
- set_value("Always"); |
- device_local_account_policy_.payload().mutable_showlogoutbuttonintray()-> |
- set_value(false); |
- device_local_account_policy_.payload().mutable_extensionallowedtypes()-> |
- mutable_value()->mutable_entries()->Clear(); |
- device_local_account_policy_.Build(); |
- device_settings_test_helper_.set_device_local_account_policy_blob( |
- PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
- broker->core()->store()->Load(); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- EXPECT_TRUE(expected_policy_bundle.Equals(provider_.policies())); |
- |
- // Account disappears, policy should stay in effect. |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)) |
- .Times(AnyNumber()); |
- device_policy_.payload().mutable_device_local_accounts()->clear_account(); |
- device_policy_.Build(); |
- device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
- ReloadDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- |
- EXPECT_TRUE(expected_policy_bundle.Equals(provider_.policies())); |
-} |
- |
-TEST_F(DeviceLocalAccountPolicyProviderTest, RefreshPolicies) { |
- // If there's no device policy, the refresh completes immediately. |
- EXPECT_FALSE(service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername)); |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
- provider_.RefreshPolicies(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- |
- // Make device settings appear. |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)) |
- .Times(AnyNumber()); |
- device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
- ReloadDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- EXPECT_TRUE(service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername)); |
- |
- // If there's no cloud connection, refreshes are still immediate. |
- DeviceLocalAccountPolicyBroker* broker = |
- service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); |
- ASSERT_TRUE(broker); |
- EXPECT_FALSE(broker->core()->client()); |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
- provider_.RefreshPolicies(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- |
- // Bring up the cloud connection. The refresh scheduler may fire refreshes at |
- // this point which are not relevant for the test. |
- EXPECT_CALL(mock_device_management_service_, CreateJob(_)) |
- .WillRepeatedly( |
- mock_device_management_service_.FailJob(DM_STATUS_REQUEST_FAILED)); |
- EXPECT_CALL(mock_device_management_service_, StartJob(_, _, _, _, _, _, _)); |
- service_.Connect(&mock_device_management_service_); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&mock_device_management_service_); |
- |
- // No callbacks until the refresh completes. |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(_)).Times(0); |
- MockDeviceManagementJob* request_job; |
- EXPECT_CALL(mock_device_management_service_, CreateJob(_)) |
- .WillOnce(mock_device_management_service_.CreateAsyncJob(&request_job)); |
- EXPECT_CALL(mock_device_management_service_, StartJob(_, _, _, _, _, _, _)); |
- provider_.RefreshPolicies(); |
- ReloadDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
- Mock::VerifyAndClearExpectations(&mock_device_management_service_); |
- EXPECT_TRUE(provider_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
- |
- // When the response comes in, it should propagate and fire the notification. |
- EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
- ASSERT_TRUE(request_job); |
- em::DeviceManagementResponse response; |
- response.mutable_policy_response()->add_response()->CopyFrom( |
- device_local_account_policy_.policy()); |
- request_job->SendResponse(DM_STATUS_SUCCESS, response); |
- FlushDeviceSettings(); |
- Mock::VerifyAndClearExpectations(&provider_observer_); |
-} |
- |
-} // namespace policy |