Chromium Code Reviews| 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 |