| 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 } |
| 87 |
| 81 } // namespace | 88 } // namespace |
| 82 | 89 |
| 83 class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase { | 90 class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase { |
| 84 public: | 91 public: |
| 85 OwnerSettingsServiceChromeOSTest() | 92 OwnerSettingsServiceChromeOSTest() |
| 86 : service_(nullptr), | 93 : service_(nullptr), |
| 87 local_state_(TestingBrowserProcess::GetGlobal()), | 94 local_state_(TestingBrowserProcess::GetGlobal()), |
| 88 user_data_dir_override_(chrome::DIR_USER_DATA), | 95 user_data_dir_override_(chrome::DIR_USER_DATA), |
| 89 management_settings_set_(false) {} | 96 management_settings_set_(false) {} |
| 90 | 97 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 116 PrefsChecker checker(service, provider_.get()); | 123 PrefsChecker checker(service, provider_.get()); |
| 117 checker.Set(setting, in_value); | 124 checker.Set(setting, in_value); |
| 118 FlushDeviceSettings(); | 125 FlushDeviceSettings(); |
| 119 checker.Wait(); | 126 checker.Wait(); |
| 120 } | 127 } |
| 121 | 128 |
| 122 void OnManagementSettingsSet(bool success) { | 129 void OnManagementSettingsSet(bool success) { |
| 123 management_settings_set_ = success; | 130 management_settings_set_ = success; |
| 124 } | 131 } |
| 125 | 132 |
| 133 protected: |
| 126 OwnerSettingsServiceChromeOS* service_; | 134 OwnerSettingsServiceChromeOS* service_; |
| 127 ScopedTestingLocalState local_state_; | 135 ScopedTestingLocalState local_state_; |
| 128 scoped_ptr<DeviceSettingsProvider> provider_; | 136 scoped_ptr<DeviceSettingsProvider> provider_; |
| 129 base::ScopedPathOverride user_data_dir_override_; | 137 base::ScopedPathOverride user_data_dir_override_; |
| 130 bool management_settings_set_; | 138 bool management_settings_set_; |
| 131 | 139 |
| 132 private: | 140 private: |
| 133 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest); | 141 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest); |
| 134 }; | 142 }; |
| 135 | 143 |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 // Check that the loaded policy_data contains the expected values. | 295 // Check that the loaded policy_data contains the expected values. |
| 288 const em::PolicyData* policy_data = device_settings_service_.policy_data(); | 296 const em::PolicyData* policy_data = device_settings_service_.policy_data(); |
| 289 EXPECT_EQ(policy::dm_protocol::kChromeDevicePolicyType, | 297 EXPECT_EQ(policy::dm_protocol::kChromeDevicePolicyType, |
| 290 policy_data->policy_type()); | 298 policy_data->policy_type()); |
| 291 EXPECT_EQ(device_settings_service_.GetUsername(), policy_data->username()); | 299 EXPECT_EQ(device_settings_service_.GetUsername(), policy_data->username()); |
| 292 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED, policy_data->management_mode()); | 300 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED, policy_data->management_mode()); |
| 293 EXPECT_EQ("fake_request_token", policy_data->request_token()); | 301 EXPECT_EQ("fake_request_token", policy_data->request_token()); |
| 294 EXPECT_EQ("fake_device_id", policy_data->device_id()); | 302 EXPECT_EQ("fake_device_id", policy_data->device_id()); |
| 295 } | 303 } |
| 296 | 304 |
| 305 TEST_F(OwnerSettingsServiceChromeOSTest, ForceWhitelist) { |
| 306 EXPECT_FALSE(FindInListValue(device_policy_.policy_data().username(), |
| 307 provider_->Get(kAccountsPrefUsers))); |
| 308 // Force a settings write. |
| 309 TestSingleSet(service_, kReleaseChannel, base::StringValue("dev-channel")); |
| 310 EXPECT_TRUE(FindInListValue(device_policy_.policy_data().username(), |
| 311 provider_->Get(kAccountsPrefUsers))); |
| 312 } |
| 313 |
| 297 class OwnerSettingsServiceChromeOSNoOwnerTest | 314 class OwnerSettingsServiceChromeOSNoOwnerTest |
| 298 : public OwnerSettingsServiceChromeOSTest { | 315 : public OwnerSettingsServiceChromeOSTest { |
| 299 public: | 316 public: |
| 300 OwnerSettingsServiceChromeOSNoOwnerTest() {} | 317 OwnerSettingsServiceChromeOSNoOwnerTest() {} |
| 301 ~OwnerSettingsServiceChromeOSNoOwnerTest() override {} | 318 ~OwnerSettingsServiceChromeOSNoOwnerTest() override {} |
| 302 | 319 |
| 303 void SetUp() override { | 320 void SetUp() override { |
| 304 DeviceSettingsTestBase::SetUp(); | 321 DeviceSettingsTestBase::SetUp(); |
| 305 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged), | 322 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged), |
| 306 &device_settings_service_)); | 323 &device_settings_service_)); |
| 307 FlushDeviceSettings(); | 324 FlushDeviceSettings(); |
| 308 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( | 325 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( |
| 309 profile_.get()); | 326 profile_.get()); |
| 310 ASSERT_TRUE(service_); | 327 ASSERT_TRUE(service_); |
| 311 ASSERT_FALSE(service_->IsOwner()); | 328 ASSERT_FALSE(service_->IsOwner()); |
| 312 } | 329 } |
| 313 | 330 |
| 314 void TearDown() override { DeviceSettingsTestBase::TearDown(); } | 331 void TearDown() override { DeviceSettingsTestBase::TearDown(); } |
| 315 | 332 |
| 316 private: | 333 private: |
| 317 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest); | 334 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest); |
| 318 }; | 335 }; |
| 319 | 336 |
| 320 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) { | 337 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) { |
| 321 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false)); | 338 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false)); |
| 322 } | 339 } |
| 323 | 340 |
| 341 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, TakeOwnershipForceWhitelist) { |
| 342 EXPECT_FALSE(FindInListValue(device_policy_.policy_data().username(), |
| 343 provider_->Get(kAccountsPrefUsers))); |
| 344 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey()); |
| 345 InitOwner(device_policy_.policy_data().username(), true); |
| 346 ReloadDeviceSettings(); |
| 347 ASSERT_TRUE(service_->IsOwner()); |
| 348 |
| 349 EXPECT_TRUE(FindInListValue(device_policy_.policy_data().username(), |
| 350 provider_->Get(kAccountsPrefUsers))); |
| 351 } |
| 352 |
| 324 } // namespace chromeos | 353 } // namespace chromeos |
| OLD | NEW |