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_; | |
Mattias Nissler (ping if slow)
2013/05/15 09:38:47
Wait, doesn't this conflict with DeviceSettingsTes
bartfab (slow)
2013/05/17 11:14:28
Done.
| |
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 |