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

Side by Side Diff: chrome/browser/policy/configuration_policy_provider_win_unittest.cc

Issue 6091002: Refactor the windows policy provider to use AsynchronousPolicyProvider. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix windows tests Created 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <gtest/gtest.h> 5 #include <gtest/gtest.h>
6
7 #include <windows.h> 6 #include <windows.h>
8 7
8 #include "base/message_loop.h"
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #include "base/stl_util-inl.h" 10 #include "base/stl_util-inl.h"
11 #include "base/string_number_conversions.h" 11 #include "base/string_number_conversions.h"
12 #include "base/string_piece.h" 12 #include "base/string_piece.h"
13 #include "base/utf_string_conversions.h" 13 #include "base/utf_string_conversions.h"
14 #include "base/win/registry.h" 14 #include "base/win/registry.h"
15 #include "chrome/browser/browser_thread.h"
16 #include "chrome/browser/policy/asynchronous_policy_loader.h"
15 #include "chrome/browser/policy/configuration_policy_pref_store.h" 17 #include "chrome/browser/policy/configuration_policy_pref_store.h"
16 #include "chrome/browser/policy/configuration_policy_provider_win.h" 18 #include "chrome/browser/policy/configuration_policy_provider_win.h"
17 #include "chrome/browser/policy/mock_configuration_policy_store.h" 19 #include "chrome/browser/policy/mock_configuration_policy_store.h"
18 #include "chrome/common/policy_constants.h" 20 #include "chrome/common/policy_constants.h"
19 #include "chrome/common/pref_names.h" 21 #include "chrome/common/pref_names.h"
20 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
21 23
22 using base::win::RegKey; 24 using base::win::RegKey;
23 25
24 namespace policy { 26 namespace policy {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 146
145 // Write the given value to the registry. 147 // Write the given value to the registry.
146 void WriteValue(HKEY hive, const char* name, const Value* value); 148 void WriteValue(HKEY hive, const char* name, const Value* value);
147 // Write a value that is not compatible with the given |value|. 149 // Write a value that is not compatible with the given |value|.
148 void WriteInvalidValue(HKEY hive, const char* name, const Value* value); 150 void WriteInvalidValue(HKEY hive, const char* name, const Value* value);
149 151
150 protected: 152 protected:
151 scoped_ptr<MockConfigurationPolicyStore> store_; 153 scoped_ptr<MockConfigurationPolicyStore> store_;
152 scoped_ptr<ConfigurationPolicyProviderWin> provider_; 154 scoped_ptr<ConfigurationPolicyProviderWin> provider_;
153 155
154 private:
155 // A message loop must be declared and instantiated for these tests, 156 // A message loop must be declared and instantiated for these tests,
156 // because Windows policy provider create WaitableEvents and 157 // because Windows policy provider create WaitableEvents and
157 // ObjectWatchers that require the tests to have a MessageLoop associated 158 // ObjectWatchers that require the tests to have a MessageLoop associated
158 // with the thread executing the tests. 159 // with the thread executing the tests.
159 MessageLoop loop_; 160 MessageLoop loop_;
160 161
162 private:
163 BrowserThread ui_thread_;
164 BrowserThread file_thread_;
165
161 // Keys are created for the lifetime of a test to contain 166 // Keys are created for the lifetime of a test to contain
162 // the sandboxed HKCU and HKLM hives, respectively. 167 // the sandboxed HKCU and HKLM hives, respectively.
163 RegKey temp_hkcu_hive_key_; 168 RegKey temp_hkcu_hive_key_;
164 RegKey temp_hklm_hive_key_; 169 RegKey temp_hklm_hive_key_;
165 }; 170 };
166 171
167 ConfigurationPolicyProviderWinTest::ConfigurationPolicyProviderWinTest() 172 ConfigurationPolicyProviderWinTest::ConfigurationPolicyProviderWinTest()
168 : temp_hklm_hive_key_(HKEY_CURRENT_USER, kUnitTestMachineOverrideSubKey, 173 : ui_thread_(BrowserThread::UI, &loop_),
174 file_thread_(BrowserThread::FILE, &loop_),
175 temp_hklm_hive_key_(HKEY_CURRENT_USER, kUnitTestMachineOverrideSubKey,
169 KEY_READ), 176 KEY_READ),
170 temp_hkcu_hive_key_(HKEY_CURRENT_USER, kUnitTestUserOverrideSubKey, 177 temp_hkcu_hive_key_(HKEY_CURRENT_USER, kUnitTestUserOverrideSubKey,
171 KEY_READ) { 178 KEY_READ) {
172 } 179 }
173 180
174 void ConfigurationPolicyProviderWinTest::SetUp() { 181 void ConfigurationPolicyProviderWinTest::SetUp() {
175 // Cleanup any remnants of previous tests. 182 // Cleanup any remnants of previous tests.
176 DeleteRegistrySandbox(); 183 DeleteRegistrySandbox();
177 184
178 // Create the subkeys to hold the overridden HKLM and HKCU 185 // Create the subkeys to hold the overridden HKLM and HKCU
179 // policy settings. 186 // policy settings.
180 temp_hklm_hive_key_.Create(HKEY_CURRENT_USER, 187 temp_hklm_hive_key_.Create(HKEY_CURRENT_USER,
181 kUnitTestMachineOverrideSubKey, 188 kUnitTestMachineOverrideSubKey,
182 KEY_ALL_ACCESS); 189 KEY_ALL_ACCESS);
183 temp_hkcu_hive_key_.Create(HKEY_CURRENT_USER, 190 temp_hkcu_hive_key_.Create(HKEY_CURRENT_USER,
184 kUnitTestUserOverrideSubKey, 191 kUnitTestUserOverrideSubKey,
185 KEY_ALL_ACCESS); 192 KEY_ALL_ACCESS);
186 193
187 ActivateOverrides(); 194 ActivateOverrides();
188 195
189 store_.reset(new MockConfigurationPolicyStore); 196 store_.reset(new MockConfigurationPolicyStore);
190 provider_.reset(new ConfigurationPolicyProviderWin( 197 provider_.reset(new ConfigurationPolicyProviderWin(
191 ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList())); 198 ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList()));
192 } 199 }
193 200
194 void ConfigurationPolicyProviderWinTest::TearDown() { 201 void ConfigurationPolicyProviderWinTest::TearDown() {
195 DeactivateOverrides(); 202 DeactivateOverrides();
196 DeleteRegistrySandbox(); 203 DeleteRegistrySandbox();
204 loop_.RunAllPending();
197 } 205 }
198 206
199 void ConfigurationPolicyProviderWinTest::ActivateOverrides() { 207 void ConfigurationPolicyProviderWinTest::ActivateOverrides() {
200 HRESULT result = RegOverridePredefKey(HKEY_LOCAL_MACHINE, 208 HRESULT result = RegOverridePredefKey(HKEY_LOCAL_MACHINE,
201 temp_hklm_hive_key_.Handle()); 209 temp_hklm_hive_key_.Handle());
202 EXPECT_EQ(ERROR_SUCCESS, result); 210 EXPECT_EQ(ERROR_SUCCESS, result);
203 result = RegOverridePredefKey(HKEY_CURRENT_USER, 211 result = RegOverridePredefKey(HKEY_CURRENT_USER,
204 temp_hkcu_hive_key_.Handle()); 212 temp_hkcu_hive_key_.Handle());
205 EXPECT_EQ(ERROR_SUCCESS, result); 213 EXPECT_EQ(ERROR_SUCCESS, result);
206 } 214 }
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 EXPECT_TRUE(store_->policy_map().empty()); 300 EXPECT_TRUE(store_->policy_map().empty());
293 } 301 }
294 302
295 TEST_P(ConfigurationPolicyProviderWinTest, InvalidValue) { 303 TEST_P(ConfigurationPolicyProviderWinTest, InvalidValue) {
296 WriteInvalidValue(HKEY_LOCAL_MACHINE, 304 WriteInvalidValue(HKEY_LOCAL_MACHINE,
297 GetParam().policy_name(), 305 GetParam().policy_name(),
298 GetParam().hklm_value()); 306 GetParam().hklm_value());
299 WriteInvalidValue(HKEY_CURRENT_USER, 307 WriteInvalidValue(HKEY_CURRENT_USER,
300 GetParam().policy_name(), 308 GetParam().policy_name(),
301 GetParam().hkcu_value()); 309 GetParam().hkcu_value());
310 provider_->loader()->Reload();
311 loop_.RunAllPending();
302 provider_->Provide(store_.get()); 312 provider_->Provide(store_.get());
303 EXPECT_TRUE(store_->policy_map().empty()); 313 EXPECT_TRUE(store_->policy_map().empty());
304 } 314 }
305 315
306 TEST_P(ConfigurationPolicyProviderWinTest, HKLM) { 316 TEST_P(ConfigurationPolicyProviderWinTest, HKLM) {
307 WriteValue(HKEY_LOCAL_MACHINE, 317 WriteValue(HKEY_LOCAL_MACHINE,
308 GetParam().policy_name(), 318 GetParam().policy_name(),
309 GetParam().hklm_value()); 319 GetParam().hklm_value());
320 provider_->loader()->Reload();
321 loop_.RunAllPending();
310 provider_->Provide(store_.get()); 322 provider_->Provide(store_.get());
311 const Value* value = store_->Get(GetParam().type()); 323 const Value* value = store_->Get(GetParam().type());
312 ASSERT_TRUE(value); 324 ASSERT_TRUE(value);
313 EXPECT_TRUE(value->Equals(GetParam().hklm_value())); 325 EXPECT_TRUE(value->Equals(GetParam().hklm_value()));
314 } 326 }
315 327
316 TEST_P(ConfigurationPolicyProviderWinTest, HKCU) { 328 TEST_P(ConfigurationPolicyProviderWinTest, HKCU) {
317 WriteValue(HKEY_CURRENT_USER, 329 WriteValue(HKEY_CURRENT_USER,
318 GetParam().policy_name(), 330 GetParam().policy_name(),
319 GetParam().hkcu_value()); 331 GetParam().hkcu_value());
332 provider_->loader()->Reload();
333 loop_.RunAllPending();
320 provider_->Provide(store_.get()); 334 provider_->Provide(store_.get());
321 const Value* value = store_->Get(GetParam().type()); 335 const Value* value = store_->Get(GetParam().type());
322 ASSERT_TRUE(value); 336 ASSERT_TRUE(value);
323 EXPECT_TRUE(value->Equals(GetParam().hkcu_value())); 337 EXPECT_TRUE(value->Equals(GetParam().hkcu_value()));
324 } 338 }
325 339
326 TEST_P(ConfigurationPolicyProviderWinTest, HKLMOverHKCU) { 340 TEST_P(ConfigurationPolicyProviderWinTest, HKLMOverHKCU) {
327 WriteValue(HKEY_LOCAL_MACHINE, 341 WriteValue(HKEY_LOCAL_MACHINE,
328 GetParam().policy_name(), 342 GetParam().policy_name(),
329 GetParam().hklm_value()); 343 GetParam().hklm_value());
330 WriteValue(HKEY_CURRENT_USER, 344 WriteValue(HKEY_CURRENT_USER,
331 GetParam().policy_name(), 345 GetParam().policy_name(),
332 GetParam().hkcu_value()); 346 GetParam().hkcu_value());
347 provider_->loader()->Reload();
348 loop_.RunAllPending();
333 provider_->Provide(store_.get()); 349 provider_->Provide(store_.get());
334 const Value* value = store_->Get(GetParam().type()); 350 const Value* value = store_->Get(GetParam().type());
335 ASSERT_TRUE(value); 351 ASSERT_TRUE(value);
336 EXPECT_TRUE(value->Equals(GetParam().hklm_value())); 352 EXPECT_TRUE(value->Equals(GetParam().hklm_value()));
337 } 353 }
338 354
339 // Instantiate the test case for all supported policies. 355 // Instantiate the test case for all supported policies.
340 INSTANTIATE_TEST_CASE_P( 356 INSTANTIATE_TEST_CASE_P(
341 ConfigurationPolicyProviderWinTestInstance, 357 ConfigurationPolicyProviderWinTestInstance,
342 ConfigurationPolicyProviderWinTest, 358 ConfigurationPolicyProviderWinTest,
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 kPolicyExtensionInstallDenyList, 439 kPolicyExtensionInstallDenyList,
424 key::kExtensionInstallDenyList), 440 key::kExtensionInstallDenyList),
425 PolicyTestParams::ForBooleanPolicy( 441 PolicyTestParams::ForBooleanPolicy(
426 kPolicyShowHomeButton, 442 kPolicyShowHomeButton,
427 key::kShowHomeButton), 443 key::kShowHomeButton),
428 PolicyTestParams::ForBooleanPolicy( 444 PolicyTestParams::ForBooleanPolicy(
429 kPolicyPrintingEnabled, 445 kPolicyPrintingEnabled,
430 key::kPrintingEnabled))); 446 key::kPrintingEnabled)));
431 447
432 } // namespace policy 448 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/configuration_policy_provider_win.cc ('k') | chrome/browser/policy/file_based_policy_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698