| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/chromeos/policy/device_local_account_policy_service.h" | 5 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "chrome/browser/chromeos/policy/device_local_account.h" |
| 10 #include "chrome/browser/chromeos/policy/device_local_account_policy_provider.h" | 11 #include "chrome/browser/chromeos/policy/device_local_account_policy_provider.h" |
| 12 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 13 #include "chrome/browser/chromeos/settings/device_settings_service.h" |
| 11 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h" | 14 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h" |
| 12 #include "chrome/browser/policy/cloud/cloud_policy_client.h" | 15 #include "chrome/browser/policy/cloud/cloud_policy_client.h" |
| 13 #include "chrome/browser/policy/cloud/cloud_policy_constants.h" | 16 #include "chrome/browser/policy/cloud/cloud_policy_constants.h" |
| 14 #include "chrome/browser/policy/cloud/cloud_policy_service.h" | 17 #include "chrome/browser/policy/cloud/cloud_policy_service.h" |
| 15 #include "chrome/browser/policy/cloud/mock_device_management_service.h" | 18 #include "chrome/browser/policy/cloud/mock_device_management_service.h" |
| 16 #include "chrome/browser/policy/cloud/policy_builder.h" | 19 #include "chrome/browser/policy/cloud/policy_builder.h" |
| 17 #include "chrome/browser/policy/mock_configuration_policy_provider.h" | 20 #include "chrome/browser/policy/mock_configuration_policy_provider.h" |
| 18 #include "chrome/browser/policy/proto/chromeos/chrome_device_policy.pb.h" | 21 #include "chrome/browser/policy/proto/chromeos/chrome_device_policy.pb.h" |
| 19 #include "chromeos/dbus/power_policy_controller.h" | 22 #include "chromeos/dbus/power_policy_controller.h" |
| 20 #include "policy/policy_constants.h" | 23 #include "policy/policy_constants.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 34 : public DeviceLocalAccountPolicyService::Observer { | 37 : public DeviceLocalAccountPolicyService::Observer { |
| 35 public: | 38 public: |
| 36 MOCK_METHOD1(OnPolicyUpdated, void(const std::string&)); | 39 MOCK_METHOD1(OnPolicyUpdated, void(const std::string&)); |
| 37 MOCK_METHOD0(OnDeviceLocalAccountsChanged, void(void)); | 40 MOCK_METHOD0(OnDeviceLocalAccountsChanged, void(void)); |
| 38 }; | 41 }; |
| 39 | 42 |
| 40 class DeviceLocalAccountPolicyServiceTest | 43 class DeviceLocalAccountPolicyServiceTest |
| 41 : public chromeos::DeviceSettingsTestBase { | 44 : public chromeos::DeviceSettingsTestBase { |
| 42 public: | 45 public: |
| 43 DeviceLocalAccountPolicyServiceTest() | 46 DeviceLocalAccountPolicyServiceTest() |
| 44 : service_(&device_settings_test_helper_, &device_settings_service_) {} | 47 : public_session_user_id_(GenerateDeviceLocalAccountUserId( |
| 48 PolicyBuilder::kFakeUsername, |
| 49 DeviceLocalAccount::TYPE_PUBLIC_SESSION)), |
| 50 service_(&device_settings_test_helper_, |
| 51 chromeos::DeviceSettingsService::Get(), |
| 52 chromeos::CrosSettings::Get()) {} |
| 45 | 53 |
| 46 virtual void SetUp() OVERRIDE { | 54 virtual void SetUp() OVERRIDE { |
| 47 DeviceSettingsTestBase::SetUp(); | 55 DeviceSettingsTestBase::SetUp(); |
| 48 | 56 |
| 49 // Values implicitly enforced for public accounts. | 57 // Values implicitly enforced for public accounts. |
| 50 expected_policy_map_.Set(key::kLidCloseAction, | 58 expected_policy_map_.Set(key::kLidCloseAction, |
| 51 POLICY_LEVEL_MANDATORY, | 59 POLICY_LEVEL_MANDATORY, |
| 52 POLICY_SCOPE_USER, | 60 POLICY_SCOPE_USER, |
| 53 base::Value::CreateIntegerValue( | 61 base::Value::CreateIntegerValue( |
| 54 chromeos::PowerPolicyController:: | 62 chromeos::PowerPolicyController:: |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 | 108 |
| 101 void InstallDevicePolicy() { | 109 void InstallDevicePolicy() { |
| 102 EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()); | 110 EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()); |
| 103 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); | 111 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
| 104 ReloadDeviceSettings(); | 112 ReloadDeviceSettings(); |
| 105 Mock::VerifyAndClearExpectations(&service_observer_); | 113 Mock::VerifyAndClearExpectations(&service_observer_); |
| 106 } | 114 } |
| 107 | 115 |
| 108 MOCK_METHOD1(OnRefreshDone, void(bool)); | 116 MOCK_METHOD1(OnRefreshDone, void(bool)); |
| 109 | 117 |
| 118 const std::string public_session_user_id_; |
| 119 |
| 110 PolicyMap expected_policy_map_; | 120 PolicyMap expected_policy_map_; |
| 111 UserPolicyBuilder device_local_account_policy_; | 121 UserPolicyBuilder device_local_account_policy_; |
| 122 chromeos::ScopedTestCrosSettings test_cros_settings_; |
| 112 MockDeviceLocalAccountPolicyServiceObserver service_observer_; | 123 MockDeviceLocalAccountPolicyServiceObserver service_observer_; |
| 113 MockDeviceManagementService mock_device_management_service_; | 124 MockDeviceManagementService mock_device_management_service_; |
| 114 DeviceLocalAccountPolicyService service_; | 125 DeviceLocalAccountPolicyService service_; |
| 115 | 126 |
| 116 private: | 127 private: |
| 117 DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyServiceTest); | 128 DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyServiceTest); |
| 118 }; | 129 }; |
| 119 | 130 |
| 120 TEST_F(DeviceLocalAccountPolicyServiceTest, NoAccounts) { | 131 TEST_F(DeviceLocalAccountPolicyServiceTest, NoAccounts) { |
| 121 EXPECT_FALSE(service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername)); | 132 EXPECT_FALSE(service_.GetBrokerForUser(public_session_user_id_)); |
| 122 } | 133 } |
| 123 | 134 |
| 124 TEST_F(DeviceLocalAccountPolicyServiceTest, GetBroker) { | 135 TEST_F(DeviceLocalAccountPolicyServiceTest, GetBroker) { |
| 125 InstallDevicePolicy(); | 136 InstallDevicePolicy(); |
| 126 | 137 |
| 127 DeviceLocalAccountPolicyBroker* broker = | 138 DeviceLocalAccountPolicyBroker* broker = |
| 128 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 139 service_.GetBrokerForUser(public_session_user_id_); |
| 129 ASSERT_TRUE(broker); | 140 ASSERT_TRUE(broker); |
| 130 EXPECT_EQ(PolicyBuilder::kFakeUsername, broker->account_id()); | 141 EXPECT_EQ(public_session_user_id_, broker->user_id()); |
| 131 ASSERT_TRUE(broker->core()->store()); | 142 ASSERT_TRUE(broker->core()->store()); |
| 132 EXPECT_EQ(CloudPolicyStore::STATUS_OK, broker->core()->store()->status()); | 143 EXPECT_EQ(CloudPolicyStore::STATUS_OK, broker->core()->store()->status()); |
| 133 EXPECT_FALSE(broker->core()->client()); | 144 EXPECT_FALSE(broker->core()->client()); |
| 134 EXPECT_TRUE(broker->core()->store()->policy_map().empty()); | 145 EXPECT_TRUE(broker->core()->store()->policy_map().empty()); |
| 135 } | 146 } |
| 136 | 147 |
| 137 TEST_F(DeviceLocalAccountPolicyServiceTest, LoadNoPolicy) { | 148 TEST_F(DeviceLocalAccountPolicyServiceTest, LoadNoPolicy) { |
| 138 InstallDevicePolicy(); | 149 InstallDevicePolicy(); |
| 139 | 150 |
| 140 EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); | 151 EXPECT_CALL(service_observer_, OnPolicyUpdated(public_session_user_id_)); |
| 141 DeviceLocalAccountPolicyBroker* broker = | 152 DeviceLocalAccountPolicyBroker* broker = |
| 142 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 153 service_.GetBrokerForUser(public_session_user_id_); |
| 143 ASSERT_TRUE(broker); | 154 ASSERT_TRUE(broker); |
| 144 FlushDeviceSettings(); | 155 FlushDeviceSettings(); |
| 145 Mock::VerifyAndClearExpectations(&service_observer_); | 156 Mock::VerifyAndClearExpectations(&service_observer_); |
| 146 | 157 |
| 147 ASSERT_TRUE(broker->core()->store()); | 158 ASSERT_TRUE(broker->core()->store()); |
| 148 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, | 159 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, |
| 149 broker->core()->store()->status()); | 160 broker->core()->store()->status()); |
| 150 EXPECT_TRUE(broker->core()->store()->policy_map().empty()); | 161 EXPECT_TRUE(broker->core()->store()->policy_map().empty()); |
| 151 EXPECT_FALSE(service_.IsPolicyAvailableForAccount( | 162 EXPECT_FALSE(service_.IsPolicyAvailableForUser(public_session_user_id_)); |
| 152 PolicyBuilder::kFakeUsername)); | |
| 153 } | 163 } |
| 154 | 164 |
| 155 TEST_F(DeviceLocalAccountPolicyServiceTest, LoadValidationFailure) { | 165 TEST_F(DeviceLocalAccountPolicyServiceTest, LoadValidationFailure) { |
| 156 device_local_account_policy_.policy_data().set_policy_type( | 166 device_local_account_policy_.policy_data().set_policy_type( |
| 157 dm_protocol::kChromeUserPolicyType); | 167 dm_protocol::kChromeUserPolicyType); |
| 158 device_local_account_policy_.Build(); | 168 device_local_account_policy_.Build(); |
| 159 device_settings_test_helper_.set_device_local_account_policy_blob( | 169 device_settings_test_helper_.set_device_local_account_policy_blob( |
| 160 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); | 170 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
| 161 InstallDevicePolicy(); | 171 InstallDevicePolicy(); |
| 162 | 172 |
| 163 EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); | 173 EXPECT_CALL(service_observer_, OnPolicyUpdated(public_session_user_id_)); |
| 164 DeviceLocalAccountPolicyBroker* broker = | 174 DeviceLocalAccountPolicyBroker* broker = |
| 165 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 175 service_.GetBrokerForUser(public_session_user_id_); |
| 166 ASSERT_TRUE(broker); | 176 ASSERT_TRUE(broker); |
| 167 FlushDeviceSettings(); | 177 FlushDeviceSettings(); |
| 168 Mock::VerifyAndClearExpectations(&service_observer_); | 178 Mock::VerifyAndClearExpectations(&service_observer_); |
| 169 | 179 |
| 170 ASSERT_TRUE(broker->core()->store()); | 180 ASSERT_TRUE(broker->core()->store()); |
| 171 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, | 181 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, |
| 172 broker->core()->store()->status()); | 182 broker->core()->store()->status()); |
| 173 EXPECT_TRUE(broker->core()->store()->policy_map().empty()); | 183 EXPECT_TRUE(broker->core()->store()->policy_map().empty()); |
| 174 EXPECT_FALSE(service_.IsPolicyAvailableForAccount( | 184 EXPECT_FALSE(service_.IsPolicyAvailableForUser(public_session_user_id_)); |
| 175 PolicyBuilder::kFakeUsername)); | |
| 176 } | 185 } |
| 177 | 186 |
| 178 TEST_F(DeviceLocalAccountPolicyServiceTest, LoadPolicy) { | 187 TEST_F(DeviceLocalAccountPolicyServiceTest, LoadPolicy) { |
| 179 device_settings_test_helper_.set_device_local_account_policy_blob( | 188 device_settings_test_helper_.set_device_local_account_policy_blob( |
| 180 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); | 189 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
| 181 InstallDevicePolicy(); | 190 InstallDevicePolicy(); |
| 182 | 191 |
| 183 EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); | 192 EXPECT_CALL(service_observer_, OnPolicyUpdated(public_session_user_id_)); |
| 184 DeviceLocalAccountPolicyBroker* broker = | 193 DeviceLocalAccountPolicyBroker* broker = |
| 185 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 194 service_.GetBrokerForUser(public_session_user_id_); |
| 186 ASSERT_TRUE(broker); | 195 ASSERT_TRUE(broker); |
| 187 FlushDeviceSettings(); | 196 FlushDeviceSettings(); |
| 188 Mock::VerifyAndClearExpectations(&service_observer_); | 197 Mock::VerifyAndClearExpectations(&service_observer_); |
| 189 | 198 |
| 190 ASSERT_TRUE(broker->core()->store()); | 199 ASSERT_TRUE(broker->core()->store()); |
| 191 EXPECT_EQ(CloudPolicyStore::STATUS_OK, | 200 EXPECT_EQ(CloudPolicyStore::STATUS_OK, |
| 192 broker->core()->store()->status()); | 201 broker->core()->store()->status()); |
| 193 ASSERT_TRUE(broker->core()->store()->policy()); | 202 ASSERT_TRUE(broker->core()->store()->policy()); |
| 194 EXPECT_EQ(device_local_account_policy_.policy_data().SerializeAsString(), | 203 EXPECT_EQ(device_local_account_policy_.policy_data().SerializeAsString(), |
| 195 broker->core()->store()->policy()->SerializeAsString()); | 204 broker->core()->store()->policy()->SerializeAsString()); |
| 196 EXPECT_TRUE(expected_policy_map_.Equals( | 205 EXPECT_TRUE(expected_policy_map_.Equals( |
| 197 broker->core()->store()->policy_map())); | 206 broker->core()->store()->policy_map())); |
| 198 EXPECT_TRUE(service_.IsPolicyAvailableForAccount( | 207 EXPECT_TRUE(service_.IsPolicyAvailableForUser(public_session_user_id_)); |
| 199 PolicyBuilder::kFakeUsername)); | |
| 200 } | 208 } |
| 201 | 209 |
| 202 TEST_F(DeviceLocalAccountPolicyServiceTest, StoreValidationFailure) { | 210 TEST_F(DeviceLocalAccountPolicyServiceTest, StoreValidationFailure) { |
| 203 device_local_account_policy_.policy_data().set_policy_type( | 211 device_local_account_policy_.policy_data().set_policy_type( |
| 204 dm_protocol::kChromeUserPolicyType); | 212 dm_protocol::kChromeUserPolicyType); |
| 205 device_local_account_policy_.Build(); | 213 device_local_account_policy_.Build(); |
| 206 InstallDevicePolicy(); | 214 InstallDevicePolicy(); |
| 207 | 215 |
| 208 EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); | 216 EXPECT_CALL(service_observer_, OnPolicyUpdated(public_session_user_id_)); |
| 209 DeviceLocalAccountPolicyBroker* broker = | 217 DeviceLocalAccountPolicyBroker* broker = |
| 210 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 218 service_.GetBrokerForUser(public_session_user_id_); |
| 211 ASSERT_TRUE(broker); | 219 ASSERT_TRUE(broker); |
| 212 ASSERT_TRUE(broker->core()->store()); | 220 ASSERT_TRUE(broker->core()->store()); |
| 213 broker->core()->store()->Store(device_local_account_policy_.policy()); | 221 broker->core()->store()->Store(device_local_account_policy_.policy()); |
| 214 FlushDeviceSettings(); | 222 FlushDeviceSettings(); |
| 215 Mock::VerifyAndClearExpectations(&service_observer_); | 223 Mock::VerifyAndClearExpectations(&service_observer_); |
| 216 | 224 |
| 217 ASSERT_TRUE(broker->core()->store()); | 225 ASSERT_TRUE(broker->core()->store()); |
| 218 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, | 226 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, |
| 219 broker->core()->store()->status()); | 227 broker->core()->store()->status()); |
| 220 EXPECT_EQ(CloudPolicyValidatorBase::VALIDATION_WRONG_POLICY_TYPE, | 228 EXPECT_EQ(CloudPolicyValidatorBase::VALIDATION_WRONG_POLICY_TYPE, |
| 221 broker->core()->store()->validation_status()); | 229 broker->core()->store()->validation_status()); |
| 222 EXPECT_FALSE(service_.IsPolicyAvailableForAccount( | 230 EXPECT_FALSE(service_.IsPolicyAvailableForUser(public_session_user_id_)); |
| 223 PolicyBuilder::kFakeUsername)); | |
| 224 } | 231 } |
| 225 | 232 |
| 226 TEST_F(DeviceLocalAccountPolicyServiceTest, StorePolicy) { | 233 TEST_F(DeviceLocalAccountPolicyServiceTest, StorePolicy) { |
| 227 InstallDevicePolicy(); | 234 InstallDevicePolicy(); |
| 228 | 235 |
| 229 EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); | 236 EXPECT_CALL(service_observer_, OnPolicyUpdated(public_session_user_id_)); |
| 230 DeviceLocalAccountPolicyBroker* broker = | 237 DeviceLocalAccountPolicyBroker* broker = |
| 231 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 238 service_.GetBrokerForUser(public_session_user_id_); |
| 232 ASSERT_TRUE(broker); | 239 ASSERT_TRUE(broker); |
| 233 ASSERT_TRUE(broker->core()->store()); | 240 ASSERT_TRUE(broker->core()->store()); |
| 234 broker->core()->store()->Store(device_local_account_policy_.policy()); | 241 broker->core()->store()->Store(device_local_account_policy_.policy()); |
| 235 FlushDeviceSettings(); | 242 FlushDeviceSettings(); |
| 236 Mock::VerifyAndClearExpectations(&service_observer_); | 243 Mock::VerifyAndClearExpectations(&service_observer_); |
| 237 | 244 |
| 238 EXPECT_EQ(device_local_account_policy_.GetBlob(), | 245 EXPECT_EQ(device_local_account_policy_.GetBlob(), |
| 239 device_settings_test_helper_.device_local_account_policy_blob( | 246 device_settings_test_helper_.device_local_account_policy_blob( |
| 240 PolicyBuilder::kFakeUsername)); | 247 PolicyBuilder::kFakeUsername)); |
| 241 EXPECT_TRUE(service_.IsPolicyAvailableForAccount( | 248 EXPECT_TRUE(service_.IsPolicyAvailableForUser(public_session_user_id_)); |
| 242 PolicyBuilder::kFakeUsername)); | |
| 243 } | 249 } |
| 244 | 250 |
| 245 TEST_F(DeviceLocalAccountPolicyServiceTest, DevicePolicyChange) { | 251 TEST_F(DeviceLocalAccountPolicyServiceTest, DevicePolicyChange) { |
| 246 device_settings_test_helper_.set_device_local_account_policy_blob( | 252 device_settings_test_helper_.set_device_local_account_policy_blob( |
| 247 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); | 253 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
| 248 InstallDevicePolicy(); | 254 InstallDevicePolicy(); |
| 249 | 255 |
| 250 EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()); | 256 EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()); |
| 251 device_policy_.payload().mutable_device_local_accounts()->clear_account(); | 257 device_policy_.payload().mutable_device_local_accounts()->clear_account(); |
| 252 device_policy_.Build(); | 258 device_policy_.Build(); |
| 253 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); | 259 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
| 254 device_settings_service_.PropertyChangeComplete(true); | 260 chromeos::DeviceSettingsService::Get()->PropertyChangeComplete(true); |
| 255 FlushDeviceSettings(); | 261 FlushDeviceSettings(); |
| 256 EXPECT_FALSE(service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername)); | 262 EXPECT_FALSE(service_.GetBrokerForUser(public_session_user_id_)); |
| 257 Mock::VerifyAndClearExpectations(&service_observer_); | 263 Mock::VerifyAndClearExpectations(&service_observer_); |
| 258 } | 264 } |
| 259 | 265 |
| 260 TEST_F(DeviceLocalAccountPolicyServiceTest, DuplicateAccounts) { | 266 TEST_F(DeviceLocalAccountPolicyServiceTest, DuplicateAccounts) { |
| 261 InstallDevicePolicy(); | 267 InstallDevicePolicy(); |
| 262 DeviceLocalAccountPolicyBroker* broker = | 268 DeviceLocalAccountPolicyBroker* broker = |
| 263 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 269 service_.GetBrokerForUser(public_session_user_id_); |
| 264 ASSERT_TRUE(broker); | 270 ASSERT_TRUE(broker); |
| 265 | 271 |
| 266 // Add a second entry with a duplicate account name to device policy. | 272 // Add a second entry with a duplicate account name to device policy. |
| 267 em::DeviceLocalAccountInfoProto* account = | 273 em::DeviceLocalAccountInfoProto* account = |
| 268 device_policy_.payload().mutable_device_local_accounts()->add_account(); | 274 device_policy_.payload().mutable_device_local_accounts()->add_account(); |
| 269 account->set_account_id(PolicyBuilder::kFakeUsername); | 275 account->set_account_id(PolicyBuilder::kFakeUsername); |
| 270 account->set_type( | 276 account->set_type( |
| 271 em::DeviceLocalAccountInfoProto::ACCOUNT_TYPE_PUBLIC_SESSION); | 277 em::DeviceLocalAccountInfoProto::ACCOUNT_TYPE_PUBLIC_SESSION); |
| 272 device_policy_.Build(); | 278 device_policy_.Build(); |
| 273 device_settings_test_helper_.set_device_local_account_policy_blob( | 279 device_settings_test_helper_.set_device_local_account_policy_blob( |
| 274 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); | 280 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
| 275 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); | 281 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
| 276 | 282 |
| 277 EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()); | 283 EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()); |
| 278 EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); | 284 EXPECT_CALL(service_observer_, OnPolicyUpdated(public_session_user_id_)); |
| 279 device_settings_service_.PropertyChangeComplete(true); | 285 chromeos::DeviceSettingsService::Get()->PropertyChangeComplete(true); |
| 280 FlushDeviceSettings(); | 286 FlushDeviceSettings(); |
| 281 Mock::VerifyAndClearExpectations(&service_observer_); | 287 Mock::VerifyAndClearExpectations(&service_observer_); |
| 282 | 288 |
| 283 // Make sure the broker is accessible and policy got loaded. | 289 // Make sure the broker is accessible and policy got loaded. |
| 284 broker = service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 290 broker = service_.GetBrokerForUser(public_session_user_id_); |
| 285 ASSERT_TRUE(broker); | 291 ASSERT_TRUE(broker); |
| 286 EXPECT_EQ(PolicyBuilder::kFakeUsername, broker->account_id()); | 292 EXPECT_EQ(public_session_user_id_, broker->user_id()); |
| 287 EXPECT_TRUE(broker->core()->store()->policy()); | 293 EXPECT_TRUE(broker->core()->store()->policy()); |
| 288 } | 294 } |
| 289 | 295 |
| 290 TEST_F(DeviceLocalAccountPolicyServiceTest, FetchPolicy) { | 296 TEST_F(DeviceLocalAccountPolicyServiceTest, FetchPolicy) { |
| 291 device_settings_test_helper_.set_device_local_account_policy_blob( | 297 device_settings_test_helper_.set_device_local_account_policy_blob( |
| 292 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); | 298 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
| 293 InstallDevicePolicy(); | 299 InstallDevicePolicy(); |
| 294 | 300 |
| 295 DeviceLocalAccountPolicyBroker* broker = | 301 DeviceLocalAccountPolicyBroker* broker = |
| 296 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 302 service_.GetBrokerForUser(public_session_user_id_); |
| 297 ASSERT_TRUE(broker); | 303 ASSERT_TRUE(broker); |
| 298 | 304 |
| 299 service_.Connect(&mock_device_management_service_); | 305 service_.Connect(&mock_device_management_service_); |
| 300 EXPECT_TRUE(broker->core()->client()); | 306 EXPECT_TRUE(broker->core()->client()); |
| 301 | 307 |
| 302 em::DeviceManagementRequest request; | 308 em::DeviceManagementRequest request; |
| 303 em::DeviceManagementResponse response; | 309 em::DeviceManagementResponse response; |
| 304 response.mutable_policy_response()->add_response()->CopyFrom( | 310 response.mutable_policy_response()->add_response()->CopyFrom( |
| 305 device_local_account_policy_.policy()); | 311 device_local_account_policy_.policy()); |
| 306 EXPECT_CALL(mock_device_management_service_, | 312 EXPECT_CALL(mock_device_management_service_, |
| 307 CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH)) | 313 CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH)) |
| 308 .WillOnce(mock_device_management_service_.SucceedJob(response)); | 314 .WillOnce(mock_device_management_service_.SucceedJob(response)); |
| 309 EXPECT_CALL(mock_device_management_service_, | 315 EXPECT_CALL(mock_device_management_service_, |
| 310 StartJob(dm_protocol::kValueRequestPolicy, | 316 StartJob(dm_protocol::kValueRequestPolicy, |
| 311 std::string(), std::string(), | 317 std::string(), std::string(), |
| 312 device_policy_.policy_data().request_token(), | 318 device_policy_.policy_data().request_token(), |
| 313 dm_protocol::kValueUserAffiliationManaged, | 319 dm_protocol::kValueUserAffiliationManaged, |
| 314 device_policy_.policy_data().device_id(), | 320 device_policy_.policy_data().device_id(), |
| 315 _)) | 321 _)) |
| 316 .WillOnce(SaveArg<6>(&request)); | 322 .WillOnce(SaveArg<6>(&request)); |
| 317 EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); | 323 EXPECT_CALL(service_observer_, OnPolicyUpdated(public_session_user_id_)); |
| 318 broker->core()->client()->FetchPolicy(); | 324 broker->core()->client()->FetchPolicy(); |
| 319 FlushDeviceSettings(); | 325 FlushDeviceSettings(); |
| 320 Mock::VerifyAndClearExpectations(&service_observer_); | 326 Mock::VerifyAndClearExpectations(&service_observer_); |
| 321 Mock::VerifyAndClearExpectations(&mock_device_management_service_); | 327 Mock::VerifyAndClearExpectations(&mock_device_management_service_); |
| 322 EXPECT_TRUE(request.has_policy_request()); | 328 EXPECT_TRUE(request.has_policy_request()); |
| 323 EXPECT_EQ(1, request.policy_request().request_size()); | 329 EXPECT_EQ(1, request.policy_request().request_size()); |
| 324 EXPECT_EQ(dm_protocol::kChromePublicAccountPolicyType, | 330 EXPECT_EQ(dm_protocol::kChromePublicAccountPolicyType, |
| 325 request.policy_request().request(0).policy_type()); | 331 request.policy_request().request(0).policy_type()); |
| 326 EXPECT_FALSE(request.policy_request().request(0).has_machine_id()); | 332 EXPECT_FALSE(request.policy_request().request(0).has_machine_id()); |
| 327 EXPECT_EQ(PolicyBuilder::kFakeUsername, | 333 EXPECT_EQ(PolicyBuilder::kFakeUsername, |
| 328 request.policy_request().request(0).settings_entity_id()); | 334 request.policy_request().request(0).settings_entity_id()); |
| 329 | 335 |
| 330 ASSERT_TRUE(broker->core()->store()); | 336 ASSERT_TRUE(broker->core()->store()); |
| 331 EXPECT_EQ(CloudPolicyStore::STATUS_OK, | 337 EXPECT_EQ(CloudPolicyStore::STATUS_OK, |
| 332 broker->core()->store()->status()); | 338 broker->core()->store()->status()); |
| 333 ASSERT_TRUE(broker->core()->store()->policy()); | 339 ASSERT_TRUE(broker->core()->store()->policy()); |
| 334 EXPECT_EQ(device_local_account_policy_.policy_data().SerializeAsString(), | 340 EXPECT_EQ(device_local_account_policy_.policy_data().SerializeAsString(), |
| 335 broker->core()->store()->policy()->SerializeAsString()); | 341 broker->core()->store()->policy()->SerializeAsString()); |
| 336 EXPECT_TRUE(expected_policy_map_.Equals( | 342 EXPECT_TRUE(expected_policy_map_.Equals( |
| 337 broker->core()->store()->policy_map())); | 343 broker->core()->store()->policy_map())); |
| 338 EXPECT_TRUE(service_.IsPolicyAvailableForAccount( | 344 EXPECT_TRUE(service_.IsPolicyAvailableForUser(public_session_user_id_)); |
| 339 PolicyBuilder::kFakeUsername)); | |
| 340 | 345 |
| 341 EXPECT_CALL(service_observer_, | 346 EXPECT_CALL(service_observer_, OnPolicyUpdated(public_session_user_id_)) |
| 342 OnPolicyUpdated(PolicyBuilder::kFakeUsername)).Times(0); | 347 .Times(0); |
| 343 service_.Disconnect(); | 348 service_.Disconnect(); |
| 344 EXPECT_FALSE(broker->core()->client()); | 349 EXPECT_FALSE(broker->core()->client()); |
| 345 Mock::VerifyAndClearExpectations(&service_observer_); | 350 Mock::VerifyAndClearExpectations(&service_observer_); |
| 346 EXPECT_TRUE(service_.IsPolicyAvailableForAccount( | 351 EXPECT_TRUE(service_.IsPolicyAvailableForUser(public_session_user_id_)); |
| 347 PolicyBuilder::kFakeUsername)); | |
| 348 } | 352 } |
| 349 | 353 |
| 350 TEST_F(DeviceLocalAccountPolicyServiceTest, RefreshPolicy) { | 354 TEST_F(DeviceLocalAccountPolicyServiceTest, RefreshPolicy) { |
| 351 device_settings_test_helper_.set_device_local_account_policy_blob( | 355 device_settings_test_helper_.set_device_local_account_policy_blob( |
| 352 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); | 356 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
| 353 InstallDevicePolicy(); | 357 InstallDevicePolicy(); |
| 354 | 358 |
| 355 DeviceLocalAccountPolicyBroker* broker = | 359 DeviceLocalAccountPolicyBroker* broker = |
| 356 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 360 service_.GetBrokerForUser(public_session_user_id_); |
| 357 ASSERT_TRUE(broker); | 361 ASSERT_TRUE(broker); |
| 358 | 362 |
| 359 service_.Connect(&mock_device_management_service_); | 363 service_.Connect(&mock_device_management_service_); |
| 360 ASSERT_TRUE(broker->core()->service()); | 364 ASSERT_TRUE(broker->core()->service()); |
| 361 | 365 |
| 362 em::DeviceManagementResponse response; | 366 em::DeviceManagementResponse response; |
| 363 response.mutable_policy_response()->add_response()->CopyFrom( | 367 response.mutable_policy_response()->add_response()->CopyFrom( |
| 364 device_local_account_policy_.policy()); | 368 device_local_account_policy_.policy()); |
| 365 EXPECT_CALL(mock_device_management_service_, CreateJob(_)) | 369 EXPECT_CALL(mock_device_management_service_, CreateJob(_)) |
| 366 .WillOnce(mock_device_management_service_.SucceedJob(response)); | 370 .WillOnce(mock_device_management_service_.SucceedJob(response)); |
| 367 EXPECT_CALL(mock_device_management_service_, StartJob(_, _, _, _, _, _, _)); | 371 EXPECT_CALL(mock_device_management_service_, StartJob(_, _, _, _, _, _, _)); |
| 368 EXPECT_CALL(*this, OnRefreshDone(true)).Times(1); | 372 EXPECT_CALL(*this, OnRefreshDone(true)).Times(1); |
| 369 EXPECT_CALL(service_observer_, OnPolicyUpdated(PolicyBuilder::kFakeUsername)); | 373 EXPECT_CALL(service_observer_, OnPolicyUpdated(public_session_user_id_)); |
| 370 broker->core()->service()->RefreshPolicy( | 374 broker->core()->service()->RefreshPolicy( |
| 371 base::Bind(&DeviceLocalAccountPolicyServiceTest::OnRefreshDone, | 375 base::Bind(&DeviceLocalAccountPolicyServiceTest::OnRefreshDone, |
| 372 base::Unretained(this))); | 376 base::Unretained(this))); |
| 373 FlushDeviceSettings(); | 377 FlushDeviceSettings(); |
| 374 Mock::VerifyAndClearExpectations(&service_observer_); | 378 Mock::VerifyAndClearExpectations(&service_observer_); |
| 375 Mock::VerifyAndClearExpectations(this); | 379 Mock::VerifyAndClearExpectations(this); |
| 376 Mock::VerifyAndClearExpectations(&mock_device_management_service_); | 380 Mock::VerifyAndClearExpectations(&mock_device_management_service_); |
| 377 | 381 |
| 378 ASSERT_TRUE(broker->core()->store()); | 382 ASSERT_TRUE(broker->core()->store()); |
| 379 EXPECT_EQ(CloudPolicyStore::STATUS_OK, | 383 EXPECT_EQ(CloudPolicyStore::STATUS_OK, |
| 380 broker->core()->store()->status()); | 384 broker->core()->store()->status()); |
| 381 EXPECT_TRUE(expected_policy_map_.Equals( | 385 EXPECT_TRUE(expected_policy_map_.Equals( |
| 382 broker->core()->store()->policy_map())); | 386 broker->core()->store()->policy_map())); |
| 383 EXPECT_TRUE(service_.IsPolicyAvailableForAccount( | 387 EXPECT_TRUE(service_.IsPolicyAvailableForUser(public_session_user_id_)); |
| 384 PolicyBuilder::kFakeUsername)); | |
| 385 } | 388 } |
| 386 | 389 |
| 387 class DeviceLocalAccountPolicyProviderTest | 390 class DeviceLocalAccountPolicyProviderTest |
| 388 : public DeviceLocalAccountPolicyServiceTest { | 391 : public DeviceLocalAccountPolicyServiceTest { |
| 389 protected: | 392 protected: |
| 390 DeviceLocalAccountPolicyProviderTest() | 393 DeviceLocalAccountPolicyProviderTest() |
| 391 : provider_(PolicyBuilder::kFakeUsername, &service_) {} | 394 : provider_( |
| 395 GenerateDeviceLocalAccountUserId( |
| 396 PolicyBuilder::kFakeUsername, |
| 397 DeviceLocalAccount::TYPE_PUBLIC_SESSION), |
| 398 &service_) {} |
| 392 | 399 |
| 393 virtual void SetUp() OVERRIDE { | 400 virtual void SetUp() OVERRIDE { |
| 394 DeviceLocalAccountPolicyServiceTest::SetUp(); | 401 DeviceLocalAccountPolicyServiceTest::SetUp(); |
| 395 provider_.Init(); | 402 provider_.Init(); |
| 396 provider_.AddObserver(&provider_observer_); | 403 provider_.AddObserver(&provider_observer_); |
| 397 | 404 |
| 398 EXPECT_CALL(service_observer_, OnPolicyUpdated(_)).Times(AnyNumber()); | 405 EXPECT_CALL(service_observer_, OnPolicyUpdated(_)).Times(AnyNumber()); |
| 399 EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()) | 406 EXPECT_CALL(service_observer_, OnDeviceLocalAccountsChanged()) |
| 400 .Times(AnyNumber()); | 407 .Times(AnyNumber()); |
| 401 } | 408 } |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 453 EXPECT_TRUE(expected_policy_bundle.Equals(provider_.policies())); | 460 EXPECT_TRUE(expected_policy_bundle.Equals(provider_.policies())); |
| 454 | 461 |
| 455 // Policy change should be reported. | 462 // Policy change should be reported. |
| 456 EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); | 463 EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
| 457 device_local_account_policy_.payload().mutable_disablespdy()->set_value( | 464 device_local_account_policy_.payload().mutable_disablespdy()->set_value( |
| 458 false); | 465 false); |
| 459 device_local_account_policy_.Build(); | 466 device_local_account_policy_.Build(); |
| 460 device_settings_test_helper_.set_device_local_account_policy_blob( | 467 device_settings_test_helper_.set_device_local_account_policy_blob( |
| 461 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); | 468 PolicyBuilder::kFakeUsername, device_local_account_policy_.GetBlob()); |
| 462 DeviceLocalAccountPolicyBroker* broker = | 469 DeviceLocalAccountPolicyBroker* broker = |
| 463 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 470 service_.GetBrokerForUser(public_session_user_id_); |
| 464 ASSERT_TRUE(broker); | 471 ASSERT_TRUE(broker); |
| 465 broker->core()->store()->Load(); | 472 broker->core()->store()->Load(); |
| 466 FlushDeviceSettings(); | 473 FlushDeviceSettings(); |
| 467 Mock::VerifyAndClearExpectations(&provider_observer_); | 474 Mock::VerifyAndClearExpectations(&provider_observer_); |
| 468 | 475 |
| 469 expected_policy_bundle.Get( | 476 expected_policy_bundle.Get( |
| 470 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 477 PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 471 .Set(key::kDisableSpdy, | 478 .Set(key::kDisableSpdy, |
| 472 POLICY_LEVEL_MANDATORY, | 479 POLICY_LEVEL_MANDATORY, |
| 473 POLICY_SCOPE_USER, | 480 POLICY_SCOPE_USER, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 498 device_policy_.Build(); | 505 device_policy_.Build(); |
| 499 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); | 506 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
| 500 ReloadDeviceSettings(); | 507 ReloadDeviceSettings(); |
| 501 Mock::VerifyAndClearExpectations(&provider_observer_); | 508 Mock::VerifyAndClearExpectations(&provider_observer_); |
| 502 | 509 |
| 503 EXPECT_TRUE(expected_policy_bundle.Equals(provider_.policies())); | 510 EXPECT_TRUE(expected_policy_bundle.Equals(provider_.policies())); |
| 504 } | 511 } |
| 505 | 512 |
| 506 TEST_F(DeviceLocalAccountPolicyProviderTest, RefreshPolicies) { | 513 TEST_F(DeviceLocalAccountPolicyProviderTest, RefreshPolicies) { |
| 507 // If there's no device policy, the refresh completes immediately. | 514 // If there's no device policy, the refresh completes immediately. |
| 508 EXPECT_FALSE(service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername)); | 515 EXPECT_FALSE(service_.GetBrokerForUser(public_session_user_id_)); |
| 509 EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); | 516 EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
| 510 provider_.RefreshPolicies(); | 517 provider_.RefreshPolicies(); |
| 511 Mock::VerifyAndClearExpectations(&provider_observer_); | 518 Mock::VerifyAndClearExpectations(&provider_observer_); |
| 512 | 519 |
| 513 // Make device settings appear. | 520 // Make device settings appear. |
| 514 EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)) | 521 EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)) |
| 515 .Times(AnyNumber()); | 522 .Times(AnyNumber()); |
| 516 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); | 523 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
| 517 ReloadDeviceSettings(); | 524 ReloadDeviceSettings(); |
| 518 Mock::VerifyAndClearExpectations(&provider_observer_); | 525 Mock::VerifyAndClearExpectations(&provider_observer_); |
| 519 EXPECT_TRUE(service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername)); | 526 EXPECT_TRUE(service_.GetBrokerForUser(public_session_user_id_)); |
| 520 | 527 |
| 521 // If there's no cloud connection, refreshes are still immediate. | 528 // If there's no cloud connection, refreshes are still immediate. |
| 522 DeviceLocalAccountPolicyBroker* broker = | 529 DeviceLocalAccountPolicyBroker* broker = |
| 523 service_.GetBrokerForAccount(PolicyBuilder::kFakeUsername); | 530 service_.GetBrokerForUser(public_session_user_id_); |
| 524 ASSERT_TRUE(broker); | 531 ASSERT_TRUE(broker); |
| 525 EXPECT_FALSE(broker->core()->client()); | 532 EXPECT_FALSE(broker->core()->client()); |
| 526 EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); | 533 EXPECT_CALL(provider_observer_, OnUpdatePolicy(&provider_)).Times(AtLeast(1)); |
| 527 provider_.RefreshPolicies(); | 534 provider_.RefreshPolicies(); |
| 528 Mock::VerifyAndClearExpectations(&provider_observer_); | 535 Mock::VerifyAndClearExpectations(&provider_observer_); |
| 529 | 536 |
| 530 // Bring up the cloud connection. The refresh scheduler may fire refreshes at | 537 // Bring up the cloud connection. The refresh scheduler may fire refreshes at |
| 531 // this point which are not relevant for the test. | 538 // this point which are not relevant for the test. |
| 532 EXPECT_CALL(mock_device_management_service_, CreateJob(_)) | 539 EXPECT_CALL(mock_device_management_service_, CreateJob(_)) |
| 533 .WillRepeatedly( | 540 .WillRepeatedly( |
| (...skipping 20 matching lines...) Expand all Loading... |
| 554 ASSERT_TRUE(request_job); | 561 ASSERT_TRUE(request_job); |
| 555 em::DeviceManagementResponse response; | 562 em::DeviceManagementResponse response; |
| 556 response.mutable_policy_response()->add_response()->CopyFrom( | 563 response.mutable_policy_response()->add_response()->CopyFrom( |
| 557 device_local_account_policy_.policy()); | 564 device_local_account_policy_.policy()); |
| 558 request_job->SendResponse(DM_STATUS_SUCCESS, response); | 565 request_job->SendResponse(DM_STATUS_SUCCESS, response); |
| 559 FlushDeviceSettings(); | 566 FlushDeviceSettings(); |
| 560 Mock::VerifyAndClearExpectations(&provider_observer_); | 567 Mock::VerifyAndClearExpectations(&provider_observer_); |
| 561 } | 568 } |
| 562 | 569 |
| 563 } // namespace policy | 570 } // namespace policy |
| OLD | NEW |