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

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: Management settings-related tests are moved to OwnerSettingsService's test suite. 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());
100 } 103 }
101 104
102 virtual void TearDown() override { DeviceSettingsTestBase::TearDown(); } 105 virtual void TearDown() override { DeviceSettingsTestBase::TearDown(); }
103 106
104 void TestSingleSet(OwnerSettingsServiceChromeOS* service, 107 void TestSingleSet(OwnerSettingsServiceChromeOS* service,
105 const std::string& setting, 108 const std::string& setting,
106 const base::Value& in_value) { 109 const base::Value& in_value) {
107 PrefsChecker checker(service, provider_.get()); 110 PrefsChecker checker(service, provider_.get());
108 checker.Set(setting, in_value); 111 checker.Set(setting, in_value);
109 FlushDeviceSettings(); 112 FlushDeviceSettings();
110 checker.Wait(); 113 checker.Wait();
111 } 114 }
112 115
116 void OnManagementSettingsSet(bool success) {
117 management_settings_set_ = success;
118 }
119
113 OwnerSettingsServiceChromeOS* service_; 120 OwnerSettingsServiceChromeOS* service_;
114 ScopedTestingLocalState local_state_; 121 ScopedTestingLocalState local_state_;
115 scoped_ptr<DeviceSettingsProvider> provider_; 122 scoped_ptr<DeviceSettingsProvider> provider_;
116 base::ScopedPathOverride user_data_dir_override_; 123 base::ScopedPathOverride user_data_dir_override_;
124 bool management_settings_set_;
117 125
118 private: 126 private:
119 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest); 127 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest);
120 }; 128 };
121 129
122 TEST_F(OwnerSettingsServiceChromeOSTest, SingleSetTest) { 130 TEST_F(OwnerSettingsServiceChromeOSTest, SingleSetTest) {
123 TestSingleSet(service_, kReleaseChannel, base::StringValue("dev-channel")); 131 TestSingleSet(service_, kReleaseChannel, base::StringValue("dev-channel"));
124 TestSingleSet(service_, kReleaseChannel, base::StringValue("beta-channel")); 132 TestSingleSet(service_, kReleaseChannel, base::StringValue("beta-channel"));
125 TestSingleSet(service_, kReleaseChannel, base::StringValue("stable-channel")); 133 TestSingleSet(service_, kReleaseChannel, base::StringValue("stable-channel"));
126 } 134 }
(...skipping 24 matching lines...) Expand all
151 checker.Set(kReleaseChannel, base::StringValue("stable-channel")); 159 checker.Set(kReleaseChannel, base::StringValue("stable-channel"));
152 FlushDeviceSettings(); 160 FlushDeviceSettings();
153 checker.Wait(); 161 checker.Wait();
154 162
155 // Check that DeviceSettingsService's policy isn't updated. 163 // Check that DeviceSettingsService's policy isn't updated.
156 ASSERT_EQ(current_channel, device_settings_service_.device_settings() 164 ASSERT_EQ(current_channel, device_settings_service_.device_settings()
157 ->release_channel() 165 ->release_channel()
158 .release_channel()); 166 .release_channel());
159 } 167 }
160 168
169 TEST_F(OwnerSettingsServiceChromeOSTest, SetManagementSettingsModeTransition) {
170 ReloadDeviceSettings();
171 EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
172 device_settings_service_.status());
173
174 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
175 InitOwner(device_policy_.policy_data().username(), true);
176 FlushDeviceSettings();
177
178 // The initial management mode should be LOCAL_OWNER.
179 EXPECT_EQ(em::PolicyData::LOCAL_OWNER,
180 device_settings_service_.policy_data()->management_mode());
181
182 OwnerSettingsServiceChromeOS::ManagementSettingsSetRequest
183 management_settings;
184 management_settings.management_mode = em::PolicyData::CONSUMER_MANAGED;
185 management_settings.request_token = "fake_request_token";
186 management_settings.device_id = "fake_device_id";
187 management_settings.callback =
188 base::Bind(&OwnerSettingsServiceChromeOSTest::OnManagementSettingsSet,
189 base::Unretained(this));
190
191 // LOCAL_OWNER -> CONSUMER_MANAGED: Okay.
192 service_->SetManagementSettings(management_settings);
193 FlushDeviceSettings();
194
195 EXPECT_TRUE(management_settings_set_);
196 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED,
197 device_settings_service_.policy_data()->management_mode());
198
199 // CONSUMER_MANAGED -> ENTERPRISE_MANAGED: Invalid.
200 management_settings.management_mode = em::PolicyData::ENTERPRISE_MANAGED;
201 service_->SetManagementSettings(management_settings);
202 FlushDeviceSettings();
203
204 EXPECT_FALSE(management_settings_set_);
205 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED,
206 device_settings_service_.policy_data()->management_mode());
207
208 // CONSUMER_MANAGED -> LOCAL_OWNER: Okay.
209 management_settings.management_mode = em::PolicyData::LOCAL_OWNER;
210 service_->SetManagementSettings(management_settings);
211 FlushDeviceSettings();
212
213 EXPECT_TRUE(management_settings_set_);
214 EXPECT_EQ(em::PolicyData::LOCAL_OWNER,
215 device_settings_service_.policy_data()->management_mode());
216
217 // LOCAL_OWNER -> ENTERPRISE_MANAGED: Invalid.
218 management_settings.management_mode = em::PolicyData::ENTERPRISE_MANAGED;
219 service_->SetManagementSettings(management_settings);
220 FlushDeviceSettings();
221
222 EXPECT_FALSE(management_settings_set_);
223 EXPECT_EQ(em::PolicyData::LOCAL_OWNER,
224 device_settings_service_.policy_data()->management_mode());
225
226 // Inject a policy data with management mode set to ENTERPRISE_MANAGED.
227 device_policy_.policy_data().set_management_mode(
228 em::PolicyData::ENTERPRISE_MANAGED);
229 device_policy_.Build();
230 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob());
231 ReloadDeviceSettings();
232 EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
233 device_settings_service_.policy_data()->management_mode());
234
235 // ENTERPRISE_MANAGED -> LOCAL_OWNER: Invalid.
236 management_settings.management_mode = em::PolicyData::LOCAL_OWNER;
237 service_->SetManagementSettings(management_settings);
238 FlushDeviceSettings();
239
240 EXPECT_FALSE(management_settings_set_);
241 EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
242 device_settings_service_.policy_data()->management_mode());
243
244 // ENTERPRISE_MANAGED -> CONSUMER_MANAGED: Invalid.
245 management_settings.management_mode = em::PolicyData::CONSUMER_MANAGED;
246 service_->SetManagementSettings(management_settings);
247 FlushDeviceSettings();
248
249 EXPECT_FALSE(management_settings_set_);
250 EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
251 device_settings_service_.policy_data()->management_mode());
252 }
253
254 TEST_F(OwnerSettingsServiceChromeOSTest, SetManagementSettingsSuccess) {
255 ReloadDeviceSettings();
256 EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
257 device_settings_service_.status());
258
259 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
260 InitOwner(device_policy_.policy_data().username(), true);
261 FlushDeviceSettings();
262
263 OwnerSettingsServiceChromeOS::ManagementSettingsSetRequest request;
264 request.management_mode = em::PolicyData::CONSUMER_MANAGED;
265 request.request_token = "fake_request_token";
266 request.device_id = "fake_device_id";
267 request.callback =
268 base::Bind(&OwnerSettingsServiceChromeOSTest::OnManagementSettingsSet,
269 base::Unretained(this));
270 service_->SetManagementSettings(request);
271 FlushDeviceSettings();
272
273 EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
274 device_settings_service_.status());
275 ASSERT_TRUE(device_settings_service_.device_settings());
276
277 // Check that the loaded policy_data contains the expected values.
278 const em::PolicyData* policy_data = device_settings_service_.policy_data();
279 EXPECT_EQ(policy::dm_protocol::kChromeDevicePolicyType,
280 policy_data->policy_type());
281 EXPECT_EQ(device_settings_service_.GetUsername(),
282 policy_data->username());
283 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED, policy_data->management_mode());
284 EXPECT_EQ("fake_request_token", policy_data->request_token());
285 EXPECT_EQ("fake_device_id", policy_data->device_id());
286 }
287
161 class OwnerSettingsServiceChromeOSNoOwnerTest 288 class OwnerSettingsServiceChromeOSNoOwnerTest
162 : public OwnerSettingsServiceChromeOSTest { 289 : public OwnerSettingsServiceChromeOSTest {
163 public: 290 public:
164 OwnerSettingsServiceChromeOSNoOwnerTest() {} 291 OwnerSettingsServiceChromeOSNoOwnerTest() {}
165 virtual ~OwnerSettingsServiceChromeOSNoOwnerTest() {} 292 virtual ~OwnerSettingsServiceChromeOSNoOwnerTest() {}
166 293
167 virtual void SetUp() override { 294 virtual void SetUp() override {
168 DeviceSettingsTestBase::SetUp(); 295 DeviceSettingsTestBase::SetUp();
169 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged), 296 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged),
170 &device_settings_service_)); 297 &device_settings_service_));
171 FlushDeviceSettings(); 298 FlushDeviceSettings();
172 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( 299 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(
173 profile_.get()); 300 profile_.get());
174 ASSERT_TRUE(service_); 301 ASSERT_TRUE(service_);
175 ASSERT_FALSE(service_->IsOwner()); 302 ASSERT_FALSE(service_->IsOwner());
176 } 303 }
177 304
178 virtual void TearDown() override { DeviceSettingsTestBase::TearDown(); } 305 virtual void TearDown() override { DeviceSettingsTestBase::TearDown(); }
179 306
180 private: 307 private:
181 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest); 308 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest);
182 }; 309 };
183 310
184 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) { 311 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) {
185 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false)); 312 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false));
186 } 313 }
187 314
188 } // namespace chromeos 315 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698