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 |