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