OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <queue> | 5 #include <queue> |
6 #include <utility> | 6 #include <utility> |
7 | 7 |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/memory/linked_ptr.h" | 9 #include "base/memory/linked_ptr.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
71 OwnerSettingsServiceChromeOS* service_; | 71 OwnerSettingsServiceChromeOS* service_; |
72 DeviceSettingsProvider* provider_; | 72 DeviceSettingsProvider* provider_; |
73 base::RunLoop loop_; | 73 base::RunLoop loop_; |
74 | 74 |
75 typedef std::pair<std::string, linked_ptr<base::Value>> SetRequest; | 75 typedef std::pair<std::string, linked_ptr<base::Value>> SetRequest; |
76 std::queue<SetRequest> set_requests_; | 76 std::queue<SetRequest> set_requests_; |
77 | 77 |
78 DISALLOW_COPY_AND_ASSIGN(PrefsChecker); | 78 DISALLOW_COPY_AND_ASSIGN(PrefsChecker); |
79 }; | 79 }; |
80 | 80 |
81 bool FindInListValue(const std::string& needle, const base::Value* haystack) { | |
82 const base::ListValue* list; | |
83 if (!haystack->GetAsList(&list)) | |
84 return false; | |
85 return list->end() != list->Find(base::StringValue(needle)); | |
86 } | |
Mattias Nissler (ping if slow)
2015/03/26 12:29:42
nit: newline here
| |
81 } // namespace | 87 } // namespace |
82 | 88 |
83 class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase { | 89 class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase { |
84 public: | 90 public: |
85 OwnerSettingsServiceChromeOSTest() | 91 OwnerSettingsServiceChromeOSTest() |
86 : service_(nullptr), | 92 : service_(nullptr), |
87 local_state_(TestingBrowserProcess::GetGlobal()), | 93 local_state_(TestingBrowserProcess::GetGlobal()), |
88 user_data_dir_override_(chrome::DIR_USER_DATA), | 94 user_data_dir_override_(chrome::DIR_USER_DATA), |
89 management_settings_set_(false) {} | 95 management_settings_set_(false) {} |
90 | 96 |
(...skipping 25 matching lines...) Expand all Loading... | |
116 PrefsChecker checker(service, provider_.get()); | 122 PrefsChecker checker(service, provider_.get()); |
117 checker.Set(setting, in_value); | 123 checker.Set(setting, in_value); |
118 FlushDeviceSettings(); | 124 FlushDeviceSettings(); |
119 checker.Wait(); | 125 checker.Wait(); |
120 } | 126 } |
121 | 127 |
122 void OnManagementSettingsSet(bool success) { | 128 void OnManagementSettingsSet(bool success) { |
123 management_settings_set_ = success; | 129 management_settings_set_ = success; |
124 } | 130 } |
125 | 131 |
132 protected: | |
126 OwnerSettingsServiceChromeOS* service_; | 133 OwnerSettingsServiceChromeOS* service_; |
127 ScopedTestingLocalState local_state_; | 134 ScopedTestingLocalState local_state_; |
128 scoped_ptr<DeviceSettingsProvider> provider_; | 135 scoped_ptr<DeviceSettingsProvider> provider_; |
129 base::ScopedPathOverride user_data_dir_override_; | 136 base::ScopedPathOverride user_data_dir_override_; |
130 bool management_settings_set_; | 137 bool management_settings_set_; |
131 | 138 |
132 private: | 139 private: |
133 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest); | 140 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest); |
134 }; | 141 }; |
135 | 142 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
287 // Check that the loaded policy_data contains the expected values. | 294 // Check that the loaded policy_data contains the expected values. |
288 const em::PolicyData* policy_data = device_settings_service_.policy_data(); | 295 const em::PolicyData* policy_data = device_settings_service_.policy_data(); |
289 EXPECT_EQ(policy::dm_protocol::kChromeDevicePolicyType, | 296 EXPECT_EQ(policy::dm_protocol::kChromeDevicePolicyType, |
290 policy_data->policy_type()); | 297 policy_data->policy_type()); |
291 EXPECT_EQ(device_settings_service_.GetUsername(), policy_data->username()); | 298 EXPECT_EQ(device_settings_service_.GetUsername(), policy_data->username()); |
292 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED, policy_data->management_mode()); | 299 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED, policy_data->management_mode()); |
293 EXPECT_EQ("fake_request_token", policy_data->request_token()); | 300 EXPECT_EQ("fake_request_token", policy_data->request_token()); |
294 EXPECT_EQ("fake_device_id", policy_data->device_id()); | 301 EXPECT_EQ("fake_device_id", policy_data->device_id()); |
295 } | 302 } |
296 | 303 |
304 TEST_F(OwnerSettingsServiceChromeOSTest, ForceWhitelist) { | |
305 EXPECT_FALSE(FindInListValue(device_policy_.policy_data().username(), | |
306 provider_->Get(kAccountsPrefUsers))); | |
307 // Force a settings write. | |
308 TestSingleSet(service_, kReleaseChannel, base::StringValue("dev-channel")); | |
309 EXPECT_TRUE(FindInListValue(device_policy_.policy_data().username(), | |
310 provider_->Get(kAccountsPrefUsers))); | |
311 } | |
312 | |
297 class OwnerSettingsServiceChromeOSNoOwnerTest | 313 class OwnerSettingsServiceChromeOSNoOwnerTest |
298 : public OwnerSettingsServiceChromeOSTest { | 314 : public OwnerSettingsServiceChromeOSTest { |
299 public: | 315 public: |
300 OwnerSettingsServiceChromeOSNoOwnerTest() {} | 316 OwnerSettingsServiceChromeOSNoOwnerTest() {} |
301 ~OwnerSettingsServiceChromeOSNoOwnerTest() override {} | 317 ~OwnerSettingsServiceChromeOSNoOwnerTest() override {} |
302 | 318 |
303 void SetUp() override { | 319 void SetUp() override { |
304 DeviceSettingsTestBase::SetUp(); | 320 DeviceSettingsTestBase::SetUp(); |
305 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged), | 321 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged), |
306 &device_settings_service_)); | 322 &device_settings_service_)); |
307 FlushDeviceSettings(); | 323 FlushDeviceSettings(); |
308 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( | 324 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( |
309 profile_.get()); | 325 profile_.get()); |
310 ASSERT_TRUE(service_); | 326 ASSERT_TRUE(service_); |
311 ASSERT_FALSE(service_->IsOwner()); | 327 ASSERT_FALSE(service_->IsOwner()); |
312 } | 328 } |
313 | 329 |
314 void TearDown() override { DeviceSettingsTestBase::TearDown(); } | 330 void TearDown() override { DeviceSettingsTestBase::TearDown(); } |
315 | 331 |
316 private: | 332 private: |
317 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest); | 333 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest); |
318 }; | 334 }; |
319 | 335 |
320 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) { | 336 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) { |
321 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false)); | 337 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false)); |
322 } | 338 } |
323 | 339 |
340 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, TakeOwnershipForceWhitelist) { | |
341 EXPECT_FALSE(FindInListValue(device_policy_.policy_data().username(), | |
342 provider_->Get(kAccountsPrefUsers))); | |
343 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey()); | |
344 InitOwner(device_policy_.policy_data().username(), true); | |
345 ReloadDeviceSettings(); | |
346 ASSERT_TRUE(service_->IsOwner()); | |
347 | |
348 EXPECT_TRUE(FindInListValue(device_policy_.policy_data().username(), | |
349 provider_->Get(kAccountsPrefUsers))); | |
350 } | |
351 | |
324 } // namespace chromeos | 352 } // namespace chromeos |
OLD | NEW |