| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <CoreFoundation/CoreFoundation.h> | 5 #include <CoreFoundation/CoreFoundation.h> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/mac/scoped_cftyperef.h" | 10 #include "base/mac/scoped_cftyperef.h" |
| 11 #include "base/strings/sys_string_conversions.h" | 11 #include "base/strings/sys_string_conversions.h" |
| 12 #include "base/values.h" | 12 #include "base/values.h" |
| 13 #include "chrome/browser/policy/async_policy_provider.h" | 13 #include "chrome/browser/policy/async_policy_provider.h" |
| 14 #include "chrome/browser/policy/configuration_policy_provider_test.h" | 14 #include "chrome/browser/policy/configuration_policy_provider_test.h" |
| 15 #include "chrome/browser/policy/external_data_fetcher.h" | 15 #include "chrome/browser/policy/external_data_fetcher.h" |
| 16 #include "chrome/browser/policy/policy_bundle.h" | 16 #include "chrome/browser/policy/policy_bundle.h" |
| 17 #include "chrome/browser/policy/policy_loader_mac.h" | 17 #include "chrome/browser/policy/policy_loader_mac.h" |
| 18 #include "chrome/browser/policy/policy_map.h" | 18 #include "chrome/browser/policy/policy_map.h" |
| 19 #include "chrome/browser/policy/preferences_mock_mac.h" | 19 #include "chrome/browser/policy/preferences_mock_mac.h" |
| 20 #include "policy/policy_constants.h" | |
| 21 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 22 | 21 |
| 23 using base::ScopedCFTypeRef; | 22 using base::ScopedCFTypeRef; |
| 24 | 23 |
| 25 namespace policy { | 24 namespace policy { |
| 26 | 25 |
| 27 namespace { | 26 namespace { |
| 28 | 27 |
| 29 // Converts a base::Value to the equivalent CFPropertyListRef. | 28 // Converts a base::Value to the equivalent CFPropertyListRef. |
| 30 // The returned value is owned by the caller. | 29 // The returned value is owned by the caller. |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 | 120 |
| 122 class TestHarness : public PolicyProviderTestHarness { | 121 class TestHarness : public PolicyProviderTestHarness { |
| 123 public: | 122 public: |
| 124 TestHarness(); | 123 TestHarness(); |
| 125 virtual ~TestHarness(); | 124 virtual ~TestHarness(); |
| 126 | 125 |
| 127 virtual void SetUp() OVERRIDE; | 126 virtual void SetUp() OVERRIDE; |
| 128 | 127 |
| 129 virtual ConfigurationPolicyProvider* CreateProvider( | 128 virtual ConfigurationPolicyProvider* CreateProvider( |
| 130 SchemaRegistry* registry, | 129 SchemaRegistry* registry, |
| 131 scoped_refptr<base::SequencedTaskRunner> task_runner, | 130 scoped_refptr<base::SequencedTaskRunner> task_runner) OVERRIDE; |
| 132 const PolicyDefinitionList* policy_definition_list) OVERRIDE; | |
| 133 | 131 |
| 134 virtual void InstallEmptyPolicy() OVERRIDE; | 132 virtual void InstallEmptyPolicy() OVERRIDE; |
| 135 virtual void InstallStringPolicy(const std::string& policy_name, | 133 virtual void InstallStringPolicy(const std::string& policy_name, |
| 136 const std::string& policy_value) OVERRIDE; | 134 const std::string& policy_value) OVERRIDE; |
| 137 virtual void InstallIntegerPolicy(const std::string& policy_name, | 135 virtual void InstallIntegerPolicy(const std::string& policy_name, |
| 138 int policy_value) OVERRIDE; | 136 int policy_value) OVERRIDE; |
| 139 virtual void InstallBooleanPolicy(const std::string& policy_name, | 137 virtual void InstallBooleanPolicy(const std::string& policy_name, |
| 140 bool policy_value) OVERRIDE; | 138 bool policy_value) OVERRIDE; |
| 141 virtual void InstallStringListPolicy( | 139 virtual void InstallStringListPolicy( |
| 142 const std::string& policy_name, | 140 const std::string& policy_name, |
| (...skipping 12 matching lines...) Expand all Loading... |
| 155 | 153 |
| 156 TestHarness::TestHarness() | 154 TestHarness::TestHarness() |
| 157 : PolicyProviderTestHarness(POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER) {} | 155 : PolicyProviderTestHarness(POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER) {} |
| 158 | 156 |
| 159 TestHarness::~TestHarness() {} | 157 TestHarness::~TestHarness() {} |
| 160 | 158 |
| 161 void TestHarness::SetUp() {} | 159 void TestHarness::SetUp() {} |
| 162 | 160 |
| 163 ConfigurationPolicyProvider* TestHarness::CreateProvider( | 161 ConfigurationPolicyProvider* TestHarness::CreateProvider( |
| 164 SchemaRegistry* registry, | 162 SchemaRegistry* registry, |
| 165 scoped_refptr<base::SequencedTaskRunner> task_runner, | 163 scoped_refptr<base::SequencedTaskRunner> task_runner) { |
| 166 const PolicyDefinitionList* policy_definition_list) { | |
| 167 prefs_ = new MockPreferences(); | 164 prefs_ = new MockPreferences(); |
| 168 scoped_ptr<AsyncPolicyLoader> loader(new PolicyLoaderMac( | 165 scoped_ptr<AsyncPolicyLoader> loader( |
| 169 task_runner, policy_definition_list, base::FilePath(), prefs_)); | 166 new PolicyLoaderMac(task_runner, base::FilePath(), prefs_)); |
| 170 return new AsyncPolicyProvider(registry, loader.Pass()); | 167 return new AsyncPolicyProvider(registry, loader.Pass()); |
| 171 } | 168 } |
| 172 | 169 |
| 173 void TestHarness::InstallEmptyPolicy() {} | 170 void TestHarness::InstallEmptyPolicy() {} |
| 174 | 171 |
| 175 void TestHarness::InstallStringPolicy(const std::string& policy_name, | 172 void TestHarness::InstallStringPolicy(const std::string& policy_name, |
| 176 const std::string& policy_value) { | 173 const std::string& policy_value) { |
| 177 ScopedCFTypeRef<CFStringRef> name(base::SysUTF8ToCFStringRef(policy_name)); | 174 ScopedCFTypeRef<CFStringRef> name(base::SysUTF8ToCFStringRef(policy_name)); |
| 178 ScopedCFTypeRef<CFStringRef> value(base::SysUTF8ToCFStringRef(policy_value)); | 175 ScopedCFTypeRef<CFStringRef> value(base::SysUTF8ToCFStringRef(policy_value)); |
| 179 prefs_->AddTestItem(name, value, true); | 176 prefs_->AddTestItem(name, value, true); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 | 229 |
| 233 // Special test cases for some mac preferences details. | 230 // Special test cases for some mac preferences details. |
| 234 class PolicyLoaderMacTest : public PolicyTestBase { | 231 class PolicyLoaderMacTest : public PolicyTestBase { |
| 235 protected: | 232 protected: |
| 236 PolicyLoaderMacTest() | 233 PolicyLoaderMacTest() |
| 237 : prefs_(new MockPreferences()) {} | 234 : prefs_(new MockPreferences()) {} |
| 238 virtual ~PolicyLoaderMacTest() {} | 235 virtual ~PolicyLoaderMacTest() {} |
| 239 | 236 |
| 240 virtual void SetUp() OVERRIDE { | 237 virtual void SetUp() OVERRIDE { |
| 241 PolicyTestBase::SetUp(); | 238 PolicyTestBase::SetUp(); |
| 242 scoped_ptr<AsyncPolicyLoader> loader( | 239 scoped_ptr<AsyncPolicyLoader> loader(new PolicyLoaderMac( |
| 243 new PolicyLoaderMac(loop_.message_loop_proxy(), | 240 loop_.message_loop_proxy(), base::FilePath(), prefs_)); |
| 244 &test_policy_definitions::kList, | |
| 245 base::FilePath(), | |
| 246 prefs_)); | |
| 247 provider_.reset(new AsyncPolicyProvider(&schema_registry_, loader.Pass())); | 241 provider_.reset(new AsyncPolicyProvider(&schema_registry_, loader.Pass())); |
| 248 provider_->Init(&schema_registry_); | 242 provider_->Init(&schema_registry_); |
| 249 } | 243 } |
| 250 | 244 |
| 251 virtual void TearDown() OVERRIDE { | 245 virtual void TearDown() OVERRIDE { |
| 252 provider_->Shutdown(); | 246 provider_->Shutdown(); |
| 253 PolicyTestBase::TearDown(); | 247 PolicyTestBase::TearDown(); |
| 254 } | 248 } |
| 255 | 249 |
| 256 MockPreferences* prefs_; | 250 MockPreferences* prefs_; |
| 257 scoped_ptr<AsyncPolicyProvider> provider_; | 251 scoped_ptr<AsyncPolicyProvider> provider_; |
| 258 }; | 252 }; |
| 259 | 253 |
| 260 TEST_F(PolicyLoaderMacTest, Invalid) { | 254 TEST_F(PolicyLoaderMacTest, Invalid) { |
| 261 ScopedCFTypeRef<CFStringRef> name( | 255 ScopedCFTypeRef<CFStringRef> name( |
| 262 base::SysUTF8ToCFStringRef(test_policy_definitions::kKeyString)); | 256 base::SysUTF8ToCFStringRef(test_keys::kKeyString)); |
| 263 const char buffer[] = "binary \xde\xad\xbe\xef data"; | 257 const char buffer[] = "binary \xde\xad\xbe\xef data"; |
| 264 ScopedCFTypeRef<CFDataRef> invalid_data( | 258 ScopedCFTypeRef<CFDataRef> invalid_data( |
| 265 CFDataCreate(kCFAllocatorDefault, | 259 CFDataCreate(kCFAllocatorDefault, |
| 266 reinterpret_cast<const UInt8 *>(buffer), | 260 reinterpret_cast<const UInt8 *>(buffer), |
| 267 arraysize(buffer))); | 261 arraysize(buffer))); |
| 268 ASSERT_TRUE(invalid_data); | 262 ASSERT_TRUE(invalid_data); |
| 269 prefs_->AddTestItem(name, invalid_data.get(), true); | 263 prefs_->AddTestItem(name, invalid_data.get(), true); |
| 270 prefs_->AddTestItem(name, invalid_data.get(), false); | 264 prefs_->AddTestItem(name, invalid_data.get(), false); |
| 271 | 265 |
| 272 // Make the provider read the updated |prefs_|. | 266 // Make the provider read the updated |prefs_|. |
| 273 provider_->RefreshPolicies(); | 267 provider_->RefreshPolicies(); |
| 274 loop_.RunUntilIdle(); | 268 loop_.RunUntilIdle(); |
| 275 const PolicyBundle kEmptyBundle; | 269 const PolicyBundle kEmptyBundle; |
| 276 EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle)); | 270 EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle)); |
| 277 } | 271 } |
| 278 | 272 |
| 279 TEST_F(PolicyLoaderMacTest, TestNonForcedValue) { | 273 TEST_F(PolicyLoaderMacTest, TestNonForcedValue) { |
| 280 ScopedCFTypeRef<CFStringRef> name( | 274 ScopedCFTypeRef<CFStringRef> name( |
| 281 base::SysUTF8ToCFStringRef(test_policy_definitions::kKeyString)); | 275 base::SysUTF8ToCFStringRef(test_keys::kKeyString)); |
| 282 ScopedCFTypeRef<CFPropertyListRef> test_value( | 276 ScopedCFTypeRef<CFPropertyListRef> test_value( |
| 283 base::SysUTF8ToCFStringRef("string value")); | 277 base::SysUTF8ToCFStringRef("string value")); |
| 284 ASSERT_TRUE(test_value.get()); | 278 ASSERT_TRUE(test_value.get()); |
| 285 prefs_->AddTestItem(name, test_value.get(), false); | 279 prefs_->AddTestItem(name, test_value.get(), false); |
| 286 | 280 |
| 287 // Make the provider read the updated |prefs_|. | 281 // Make the provider read the updated |prefs_|. |
| 288 provider_->RefreshPolicies(); | 282 provider_->RefreshPolicies(); |
| 289 loop_.RunUntilIdle(); | 283 loop_.RunUntilIdle(); |
| 290 PolicyBundle expected_bundle; | 284 PolicyBundle expected_bundle; |
| 291 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 285 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 292 .Set(test_policy_definitions::kKeyString, | 286 .Set(test_keys::kKeyString, |
| 293 POLICY_LEVEL_RECOMMENDED, | 287 POLICY_LEVEL_RECOMMENDED, |
| 294 POLICY_SCOPE_USER, | 288 POLICY_SCOPE_USER, |
| 295 base::Value::CreateStringValue("string value"), | 289 base::Value::CreateStringValue("string value"), |
| 296 NULL); | 290 NULL); |
| 297 EXPECT_TRUE(provider_->policies().Equals(expected_bundle)); | 291 EXPECT_TRUE(provider_->policies().Equals(expected_bundle)); |
| 298 } | 292 } |
| 299 | 293 |
| 300 TEST_F(PolicyLoaderMacTest, TestConversions) { | 294 TEST_F(PolicyLoaderMacTest, TestConversions) { |
| 301 base::DictionaryValue root; | 295 base::DictionaryValue root; |
| 302 | 296 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 ScopedCFTypeRef<CFPropertyListRef> property(CreatePropertyFromValue(&root)); | 331 ScopedCFTypeRef<CFPropertyListRef> property(CreatePropertyFromValue(&root)); |
| 338 ASSERT_TRUE(property); | 332 ASSERT_TRUE(property); |
| 339 scoped_ptr<base::Value> value( | 333 scoped_ptr<base::Value> value( |
| 340 PolicyLoaderMac::CreateValueFromProperty(property)); | 334 PolicyLoaderMac::CreateValueFromProperty(property)); |
| 341 ASSERT_TRUE(value.get()); | 335 ASSERT_TRUE(value.get()); |
| 342 | 336 |
| 343 EXPECT_TRUE(root.Equals(value.get())); | 337 EXPECT_TRUE(root.Equals(value.get())); |
| 344 } | 338 } |
| 345 | 339 |
| 346 } // namespace policy | 340 } // namespace policy |
| OLD | NEW |