Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(672)

Side by Side Diff: chrome/browser/chromeos/ownership/owner_settings_service_chromeos_unittest.cc

Issue 769703003: SetManagementSettings() is moved to OwnerSettingsServiceChromeOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "base/test/scoped_path_override.h" 12 #include "base/test/scoped_path_override.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h" 14 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h"
15 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_fact ory.h" 15 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_fact ory.h"
16 #include "chrome/browser/chromeos/settings/device_settings_provider.h" 16 #include "chrome/browser/chromeos/settings/device_settings_provider.h"
17 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h" 17 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h"
18 #include "chrome/common/chrome_paths.h" 18 #include "chrome/common/chrome_paths.h"
19 #include "chrome/test/base/scoped_testing_local_state.h" 19 #include "chrome/test/base/scoped_testing_local_state.h"
20 #include "chrome/test/base/testing_browser_process.h" 20 #include "chrome/test/base/testing_browser_process.h"
21 #include "chrome/test/base/testing_profile.h" 21 #include "chrome/test/base/testing_profile.h"
22 #include "chromeos/settings/cros_settings_names.h" 22 #include "chromeos/settings/cros_settings_names.h"
23 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
24 24
25 namespace em = enterprise_management;
26
25 namespace chromeos { 27 namespace chromeos {
26 28
27 namespace { 29 namespace {
28 30
29 void OnPrefChanged(const std::string& /* setting */) { 31 void OnPrefChanged(const std::string& /* setting */) {
30 } 32 }
31 33
32 class PrefsChecker : public ownership::OwnerSettingsService::Observer { 34 class PrefsChecker : public ownership::OwnerSettingsService::Observer {
33 public: 35 public:
34 PrefsChecker(OwnerSettingsServiceChromeOS* service, 36 PrefsChecker(OwnerSettingsServiceChromeOS* service,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 DISALLOW_COPY_AND_ASSIGN(PrefsChecker); 78 DISALLOW_COPY_AND_ASSIGN(PrefsChecker);
77 }; 79 };
78 80
79 } // namespace 81 } // namespace
80 82
81 class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase { 83 class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase {
82 public: 84 public:
83 OwnerSettingsServiceChromeOSTest() 85 OwnerSettingsServiceChromeOSTest()
84 : service_(nullptr), 86 : service_(nullptr),
85 local_state_(TestingBrowserProcess::GetGlobal()), 87 local_state_(TestingBrowserProcess::GetGlobal()),
86 user_data_dir_override_(chrome::DIR_USER_DATA) {} 88 user_data_dir_override_(chrome::DIR_USER_DATA),
89 management_settings_set_(false) {}
87 90
88 virtual void SetUp() override { 91 virtual void SetUp() override {
89 DeviceSettingsTestBase::SetUp(); 92 DeviceSettingsTestBase::SetUp();
90 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged), 93 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged),
91 &device_settings_service_)); 94 &device_settings_service_));
92 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey()); 95 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
93 InitOwner(device_policy_.policy_data().username(), true); 96 InitOwner(device_policy_.policy_data().username(), true);
94 FlushDeviceSettings(); 97 FlushDeviceSettings();
95 98
96 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( 99 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(
97 profile_.get()); 100 profile_.get());
98 ASSERT_TRUE(service_); 101 ASSERT_TRUE(service_);
99 ASSERT_TRUE(service_->IsOwner()); 102 ASSERT_TRUE(service_->IsOwner());
103
104 device_policy_.policy_data().set_management_mode(
105 em::PolicyData::LOCAL_OWNER);
106 device_policy_.Build();
107 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob());
108 ReloadDeviceSettings();
100 } 109 }
101 110
102 virtual void TearDown() override { DeviceSettingsTestBase::TearDown(); } 111 virtual void TearDown() override { DeviceSettingsTestBase::TearDown(); }
103 112
104 void TestSingleSet(OwnerSettingsServiceChromeOS* service, 113 void TestSingleSet(OwnerSettingsServiceChromeOS* service,
105 const std::string& setting, 114 const std::string& setting,
106 const base::Value& in_value) { 115 const base::Value& in_value) {
107 PrefsChecker checker(service, provider_.get()); 116 PrefsChecker checker(service, provider_.get());
108 checker.Set(setting, in_value); 117 checker.Set(setting, in_value);
109 FlushDeviceSettings(); 118 FlushDeviceSettings();
110 checker.Wait(); 119 checker.Wait();
111 } 120 }
112 121
122 void OnManagementSettingsSet(bool success) {
123 management_settings_set_ = success;
124 }
125
113 OwnerSettingsServiceChromeOS* service_; 126 OwnerSettingsServiceChromeOS* service_;
114 ScopedTestingLocalState local_state_; 127 ScopedTestingLocalState local_state_;
115 scoped_ptr<DeviceSettingsProvider> provider_; 128 scoped_ptr<DeviceSettingsProvider> provider_;
116 base::ScopedPathOverride user_data_dir_override_; 129 base::ScopedPathOverride user_data_dir_override_;
130 bool management_settings_set_;
117 131
118 private: 132 private:
119 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest); 133 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest);
120 }; 134 };
121 135
122 TEST_F(OwnerSettingsServiceChromeOSTest, SingleSetTest) { 136 TEST_F(OwnerSettingsServiceChromeOSTest, SingleSetTest) {
123 TestSingleSet(service_, kReleaseChannel, base::StringValue("dev-channel")); 137 TestSingleSet(service_, kReleaseChannel, base::StringValue("dev-channel"));
124 TestSingleSet(service_, kReleaseChannel, base::StringValue("beta-channel")); 138 TestSingleSet(service_, kReleaseChannel, base::StringValue("beta-channel"));
125 TestSingleSet(service_, kReleaseChannel, base::StringValue("stable-channel")); 139 TestSingleSet(service_, kReleaseChannel, base::StringValue("stable-channel"));
126 } 140 }
(...skipping 24 matching lines...) Expand all
151 checker.Set(kReleaseChannel, base::StringValue("stable-channel")); 165 checker.Set(kReleaseChannel, base::StringValue("stable-channel"));
152 FlushDeviceSettings(); 166 FlushDeviceSettings();
153 checker.Wait(); 167 checker.Wait();
154 168
155 // Check that DeviceSettingsService's policy isn't updated. 169 // Check that DeviceSettingsService's policy isn't updated.
156 ASSERT_EQ(current_channel, device_settings_service_.device_settings() 170 ASSERT_EQ(current_channel, device_settings_service_.device_settings()
157 ->release_channel() 171 ->release_channel()
158 .release_channel()); 172 .release_channel());
159 } 173 }
160 174
175 TEST_F(OwnerSettingsServiceChromeOSTest, SetManagementSettingsModeTransition) {
176 ReloadDeviceSettings();
177 EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
178 device_settings_service_.status());
179
180 // The initial management mode should be LOCAL_OWNER.
181 EXPECT_TRUE(device_settings_service_.policy_data()->has_management_mode());
182 EXPECT_EQ(em::PolicyData::LOCAL_OWNER,
183 device_settings_service_.policy_data()->management_mode());
184
185 OwnerSettingsServiceChromeOS::ManagementSettings management_settings;
186 management_settings.management_mode =
187 policy::MANAGEMENT_MODE_CONSUMER_MANAGED;
188 management_settings.request_token = "fake_request_token";
189 management_settings.device_id = "fake_device_id";
190 OwnerSettingsServiceChromeOS::OnManagementSettingsSetCallback
191 on_management_settings_set_callback =
192 base::Bind(&OwnerSettingsServiceChromeOSTest::OnManagementSettingsSet,
193 base::Unretained(this));
194
195 // LOCAL_OWNER -> CONSUMER_MANAGED: Okay.
196 service_->SetManagementSettings(management_settings,
197 on_management_settings_set_callback);
198 FlushDeviceSettings();
199
200 EXPECT_TRUE(management_settings_set_);
201 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED,
202 device_settings_service_.policy_data()->management_mode());
203
204 // CONSUMER_MANAGED -> ENTERPRISE_MANAGED: Invalid.
205 management_settings.management_mode =
206 policy::MANAGEMENT_MODE_ENTERPRISE_MANAGED;
207 service_->SetManagementSettings(management_settings,
208 on_management_settings_set_callback);
209 FlushDeviceSettings();
210
211 EXPECT_FALSE(management_settings_set_);
212 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED,
213 device_settings_service_.policy_data()->management_mode());
214
215 // CONSUMER_MANAGED -> LOCAL_OWNER: Okay.
216 management_settings.management_mode = policy::MANAGEMENT_MODE_LOCAL_OWNER;
217 service_->SetManagementSettings(management_settings,
218 on_management_settings_set_callback);
219 FlushDeviceSettings();
220
221 EXPECT_TRUE(management_settings_set_);
222 EXPECT_EQ(em::PolicyData::LOCAL_OWNER,
223 device_settings_service_.policy_data()->management_mode());
224
225 // LOCAL_OWNER -> ENTERPRISE_MANAGED: Invalid.
226 management_settings.management_mode =
227 policy::MANAGEMENT_MODE_ENTERPRISE_MANAGED;
228 service_->SetManagementSettings(management_settings,
229 on_management_settings_set_callback);
230 FlushDeviceSettings();
231
232 EXPECT_FALSE(management_settings_set_);
233 EXPECT_EQ(em::PolicyData::LOCAL_OWNER,
234 device_settings_service_.policy_data()->management_mode());
235
236 // Inject a policy data with management mode set to ENTERPRISE_MANAGED.
237 device_policy_.policy_data().set_management_mode(
238 em::PolicyData::ENTERPRISE_MANAGED);
239 device_policy_.Build();
240 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob());
241 ReloadDeviceSettings();
242 EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
243 device_settings_service_.policy_data()->management_mode());
244
245 // ENTERPRISE_MANAGED -> LOCAL_OWNER: Invalid.
246 management_settings.management_mode = policy::MANAGEMENT_MODE_LOCAL_OWNER;
247 service_->SetManagementSettings(management_settings,
248 on_management_settings_set_callback);
249 FlushDeviceSettings();
250
251 EXPECT_FALSE(management_settings_set_);
252 EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
253 device_settings_service_.policy_data()->management_mode());
254
255 // ENTERPRISE_MANAGED -> CONSUMER_MANAGED: Invalid.
256 management_settings.management_mode =
257 policy::MANAGEMENT_MODE_CONSUMER_MANAGED;
258 service_->SetManagementSettings(management_settings,
259 on_management_settings_set_callback);
260 FlushDeviceSettings();
261
262 EXPECT_FALSE(management_settings_set_);
263 EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
264 device_settings_service_.policy_data()->management_mode());
265 }
266
267 TEST_F(OwnerSettingsServiceChromeOSTest, SetManagementSettingsSuccess) {
268 ReloadDeviceSettings();
269 EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
270 device_settings_service_.status());
271
272 OwnerSettingsServiceChromeOS::ManagementSettings management_settings;
273 management_settings.management_mode =
274 policy::MANAGEMENT_MODE_CONSUMER_MANAGED;
275 management_settings.request_token = "fake_request_token";
276 management_settings.device_id = "fake_device_id";
277 service_->SetManagementSettings(
278 management_settings,
279 base::Bind(&OwnerSettingsServiceChromeOSTest::OnManagementSettingsSet,
280 base::Unretained(this)));
281 FlushDeviceSettings();
282
283 EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
284 device_settings_service_.status());
285 ASSERT_TRUE(device_settings_service_.device_settings());
286
287 // Check that the loaded policy_data contains the expected values.
288 const em::PolicyData* policy_data = device_settings_service_.policy_data();
289 EXPECT_EQ(policy::dm_protocol::kChromeDevicePolicyType,
290 policy_data->policy_type());
291 EXPECT_EQ(device_settings_service_.GetUsername(), policy_data->username());
292 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED, policy_data->management_mode());
293 EXPECT_EQ("fake_request_token", policy_data->request_token());
294 EXPECT_EQ("fake_device_id", policy_data->device_id());
295 }
296
161 class OwnerSettingsServiceChromeOSNoOwnerTest 297 class OwnerSettingsServiceChromeOSNoOwnerTest
162 : public OwnerSettingsServiceChromeOSTest { 298 : public OwnerSettingsServiceChromeOSTest {
163 public: 299 public:
164 OwnerSettingsServiceChromeOSNoOwnerTest() {} 300 OwnerSettingsServiceChromeOSNoOwnerTest() {}
165 virtual ~OwnerSettingsServiceChromeOSNoOwnerTest() {} 301 virtual ~OwnerSettingsServiceChromeOSNoOwnerTest() {}
166 302
167 virtual void SetUp() override { 303 virtual void SetUp() override {
168 DeviceSettingsTestBase::SetUp(); 304 DeviceSettingsTestBase::SetUp();
169 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged), 305 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged),
170 &device_settings_service_)); 306 &device_settings_service_));
171 FlushDeviceSettings(); 307 FlushDeviceSettings();
172 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( 308 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(
173 profile_.get()); 309 profile_.get());
174 ASSERT_TRUE(service_); 310 ASSERT_TRUE(service_);
175 ASSERT_FALSE(service_->IsOwner()); 311 ASSERT_FALSE(service_->IsOwner());
176 } 312 }
177 313
178 virtual void TearDown() override { DeviceSettingsTestBase::TearDown(); } 314 virtual void TearDown() override { DeviceSettingsTestBase::TearDown(); }
179 315
180 private: 316 private:
181 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest); 317 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest);
182 }; 318 };
183 319
184 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) { 320 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) {
185 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false)); 321 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false));
186 } 322 }
187 323
188 } // namespace chromeos 324 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698