| 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 "components/policy/core/common/policy_loader_win.h" | 5 #include "components/policy/core/common/policy_loader_win.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <userenv.h> | 8 #include <userenv.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 #include "base/strings/stringprintf.h" | 27 #include "base/strings/stringprintf.h" |
| 28 #include "base/strings/utf_string_conversions.h" | 28 #include "base/strings/utf_string_conversions.h" |
| 29 #include "base/sys_byteorder.h" | 29 #include "base/sys_byteorder.h" |
| 30 #include "base/win/registry.h" | 30 #include "base/win/registry.h" |
| 31 #include "base/win/win_util.h" | 31 #include "base/win/win_util.h" |
| 32 #include "components/policy/core/common/async_policy_provider.h" | 32 #include "components/policy/core/common/async_policy_provider.h" |
| 33 #include "components/policy/core/common/configuration_policy_provider_test.h" | 33 #include "components/policy/core/common/configuration_policy_provider_test.h" |
| 34 #include "components/policy/core/common/external_data_fetcher.h" | 34 #include "components/policy/core/common/external_data_fetcher.h" |
| 35 #include "components/policy/core/common/policy_bundle.h" | 35 #include "components/policy/core/common/policy_bundle.h" |
| 36 #include "components/policy/core/common/policy_map.h" | 36 #include "components/policy/core/common/policy_map.h" |
| 37 #include "components/policy/core/common/policy_types.h" |
| 37 #include "components/policy/core/common/preg_parser_win.h" | 38 #include "components/policy/core/common/preg_parser_win.h" |
| 38 #include "components/policy/core/common/schema_map.h" | 39 #include "components/policy/core/common/schema_map.h" |
| 39 #include "testing/gtest/include/gtest/gtest.h" | 40 #include "testing/gtest/include/gtest/gtest.h" |
| 40 | 41 |
| 41 using base::UTF8ToUTF16; | 42 using base::UTF8ToUTF16; |
| 42 using base::UTF16ToUTF8; | 43 using base::UTF16ToUTF8; |
| 43 using base::win::RegKey; | 44 using base::win::RegKey; |
| 44 | 45 |
| 45 namespace policy { | 46 namespace policy { |
| 46 | 47 |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 ASSERT_HRESULT_SUCCEEDED(RegOverridePredefKey(HKEY_CURRENT_USER, 0)); | 327 ASSERT_HRESULT_SUCCEEDED(RegOverridePredefKey(HKEY_CURRENT_USER, 0)); |
| 327 } | 328 } |
| 328 | 329 |
| 329 void ScopedGroupPolicyRegistrySandbox::DeleteKeys() { | 330 void ScopedGroupPolicyRegistrySandbox::DeleteKeys() { |
| 330 RegKey key(HKEY_CURRENT_USER, key_name_.c_str(), KEY_ALL_ACCESS); | 331 RegKey key(HKEY_CURRENT_USER, key_name_.c_str(), KEY_ALL_ACCESS); |
| 331 ASSERT_TRUE(key.Valid()); | 332 ASSERT_TRUE(key.Valid()); |
| 332 key.DeleteKey(L""); | 333 key.DeleteKey(L""); |
| 333 } | 334 } |
| 334 | 335 |
| 335 RegistryTestHarness::RegistryTestHarness(HKEY hive, PolicyScope scope) | 336 RegistryTestHarness::RegistryTestHarness(HKEY hive, PolicyScope scope) |
| 336 : PolicyProviderTestHarness(POLICY_LEVEL_MANDATORY, scope), hive_(hive) {} | 337 : PolicyProviderTestHarness(POLICY_LEVEL_MANDATORY, scope, |
| 338 POLICY_SOURCE_PLATFORM), |
| 339 hive_(hive) { |
| 340 } |
| 337 | 341 |
| 338 RegistryTestHarness::~RegistryTestHarness() {} | 342 RegistryTestHarness::~RegistryTestHarness() {} |
| 339 | 343 |
| 340 void RegistryTestHarness::SetUp() {} | 344 void RegistryTestHarness::SetUp() {} |
| 341 | 345 |
| 342 ConfigurationPolicyProvider* RegistryTestHarness::CreateProvider( | 346 ConfigurationPolicyProvider* RegistryTestHarness::CreateProvider( |
| 343 SchemaRegistry* registry, | 347 SchemaRegistry* registry, |
| 344 scoped_refptr<base::SequencedTaskRunner> task_runner) { | 348 scoped_refptr<base::SequencedTaskRunner> task_runner) { |
| 345 base::win::SetDomainStateForTesting(true); | 349 base::win::SetDomainStateForTesting(true); |
| 346 scoped_ptr<AsyncPolicyLoader> loader( | 350 scoped_ptr<AsyncPolicyLoader> loader( |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 PolicyProviderTestHarness* RegistryTestHarness::CreateHKCU() { | 452 PolicyProviderTestHarness* RegistryTestHarness::CreateHKCU() { |
| 449 return new RegistryTestHarness(HKEY_CURRENT_USER, POLICY_SCOPE_USER); | 453 return new RegistryTestHarness(HKEY_CURRENT_USER, POLICY_SCOPE_USER); |
| 450 } | 454 } |
| 451 | 455 |
| 452 // static | 456 // static |
| 453 PolicyProviderTestHarness* RegistryTestHarness::CreateHKLM() { | 457 PolicyProviderTestHarness* RegistryTestHarness::CreateHKLM() { |
| 454 return new RegistryTestHarness(HKEY_LOCAL_MACHINE, POLICY_SCOPE_MACHINE); | 458 return new RegistryTestHarness(HKEY_LOCAL_MACHINE, POLICY_SCOPE_MACHINE); |
| 455 } | 459 } |
| 456 | 460 |
| 457 PRegTestHarness::PRegTestHarness() | 461 PRegTestHarness::PRegTestHarness() |
| 458 : PolicyProviderTestHarness(POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE) {} | 462 : PolicyProviderTestHarness(POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
| 463 POLICY_SOURCE_PLATFORM) { |
| 464 } |
| 459 | 465 |
| 460 PRegTestHarness::~PRegTestHarness() {} | 466 PRegTestHarness::~PRegTestHarness() {} |
| 461 | 467 |
| 462 void PRegTestHarness::SetUp() { | 468 void PRegTestHarness::SetUp() { |
| 463 base::win::SetDomainStateForTesting(false); | 469 base::win::SetDomainStateForTesting(false); |
| 464 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 470 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 465 preg_file_path_ = temp_dir_.path().Append(PolicyLoaderWin::kPRegFileName); | 471 preg_file_path_ = temp_dir_.path().Append(PolicyLoaderWin::kPRegFileName); |
| 466 ASSERT_TRUE(base::WriteFile(preg_file_path_, | 472 ASSERT_TRUE(base::WriteFile(preg_file_path_, |
| 467 preg_parser::kPRegFileHeader, | 473 preg_parser::kPRegFileHeader, |
| 468 arraysize(preg_parser::kPRegFileHeader))); | 474 arraysize(preg_parser::kPRegFileHeader))); |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 hklm_key.WriteValue( | 757 hklm_key.WriteValue( |
| 752 UTF8ToUTF16(test_keys::kKeyString).c_str(), | 758 UTF8ToUTF16(test_keys::kKeyString).c_str(), |
| 753 UTF8ToUTF16("registry").c_str()); | 759 UTF8ToUTF16("registry").c_str()); |
| 754 } | 760 } |
| 755 | 761 |
| 756 bool MatchesRegistrySentinel() { | 762 bool MatchesRegistrySentinel() { |
| 757 base::DictionaryValue expected_policy; | 763 base::DictionaryValue expected_policy; |
| 758 expected_policy.SetString(test_keys::kKeyString, "registry"); | 764 expected_policy.SetString(test_keys::kKeyString, "registry"); |
| 759 PolicyBundle expected; | 765 PolicyBundle expected; |
| 760 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 766 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 761 .LoadFrom(&expected_policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 767 .LoadFrom(&expected_policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 768 POLICY_SOURCE_PLATFORM); |
| 762 return Matches(expected); | 769 return Matches(expected); |
| 763 } | 770 } |
| 764 | 771 |
| 765 bool MatchesTestBundle() { | 772 bool MatchesTestBundle() { |
| 766 base::DictionaryValue expected_policy; | 773 base::DictionaryValue expected_policy; |
| 767 expected_policy.SetBoolean(test_keys::kKeyBoolean, true); | 774 expected_policy.SetBoolean(test_keys::kKeyBoolean, true); |
| 768 expected_policy.SetString(test_keys::kKeyString, "GPO"); | 775 expected_policy.SetString(test_keys::kKeyString, "GPO"); |
| 769 expected_policy.SetInteger(test_keys::kKeyInteger, 42); | 776 expected_policy.SetInteger(test_keys::kKeyInteger, 42); |
| 770 scoped_ptr<base::ListValue> list(new base::ListValue()); | 777 scoped_ptr<base::ListValue> list(new base::ListValue()); |
| 771 list->AppendString("GPO 1"); | 778 list->AppendString("GPO 1"); |
| 772 list->AppendString("GPO 2"); | 779 list->AppendString("GPO 2"); |
| 773 expected_policy.Set(test_keys::kKeyStringList, list.release()); | 780 expected_policy.Set(test_keys::kKeyStringList, list.release()); |
| 774 PolicyBundle expected; | 781 PolicyBundle expected; |
| 775 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 782 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 776 .LoadFrom(&expected_policy, POLICY_LEVEL_MANDATORY, | 783 .LoadFrom(&expected_policy, POLICY_LEVEL_MANDATORY, |
| 777 POLICY_SCOPE_MACHINE); | 784 POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM); |
| 778 return Matches(expected); | 785 return Matches(expected); |
| 779 } | 786 } |
| 780 | 787 |
| 781 ScopedGroupPolicyRegistrySandbox registry_sandbox_; | 788 ScopedGroupPolicyRegistrySandbox registry_sandbox_; |
| 782 PGROUP_POLICY_OBJECT gpo_list_; | 789 PGROUP_POLICY_OBJECT gpo_list_; |
| 783 DWORD gpo_list_status_; | 790 DWORD gpo_list_status_; |
| 784 base::FilePath test_data_dir_; | 791 base::FilePath test_data_dir_; |
| 785 AppliedGPOListProvider* gpo_list_provider_; | 792 AppliedGPOListProvider* gpo_list_provider_; |
| 786 }; | 793 }; |
| 787 | 794 |
| 788 const base::char16 PolicyLoaderWinTest::kTestPolicyKey[] = | 795 const base::char16 PolicyLoaderWinTest::kTestPolicyKey[] = |
| 789 L"SOFTWARE\\Policies\\Chromium"; | 796 L"SOFTWARE\\Policies\\Chromium"; |
| 790 | 797 |
| 791 TEST_F(PolicyLoaderWinTest, HKLMOverHKCU) { | 798 TEST_F(PolicyLoaderWinTest, HKLMOverHKCU) { |
| 792 RegKey hklm_key(HKEY_LOCAL_MACHINE, kTestPolicyKey, KEY_ALL_ACCESS); | 799 RegKey hklm_key(HKEY_LOCAL_MACHINE, kTestPolicyKey, KEY_ALL_ACCESS); |
| 793 ASSERT_TRUE(hklm_key.Valid()); | 800 ASSERT_TRUE(hklm_key.Valid()); |
| 794 hklm_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), | 801 hklm_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), |
| 795 UTF8ToUTF16("hklm").c_str()); | 802 UTF8ToUTF16("hklm").c_str()); |
| 796 RegKey hkcu_key(HKEY_CURRENT_USER, kTestPolicyKey, KEY_ALL_ACCESS); | 803 RegKey hkcu_key(HKEY_CURRENT_USER, kTestPolicyKey, KEY_ALL_ACCESS); |
| 797 ASSERT_TRUE(hkcu_key.Valid()); | 804 ASSERT_TRUE(hkcu_key.Valid()); |
| 798 hkcu_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), | 805 hkcu_key.WriteValue(UTF8ToUTF16(test_keys::kKeyString).c_str(), |
| 799 UTF8ToUTF16("hkcu").c_str()); | 806 UTF8ToUTF16("hkcu").c_str()); |
| 800 | 807 |
| 801 PolicyBundle expected; | 808 PolicyBundle expected; |
| 802 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 809 expected.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 803 .Set(test_keys::kKeyString, | 810 .Set(test_keys::kKeyString, |
| 804 POLICY_LEVEL_MANDATORY, | 811 POLICY_LEVEL_MANDATORY, |
| 805 POLICY_SCOPE_MACHINE, | 812 POLICY_SCOPE_MACHINE, |
| 813 POLICY_SOURCE_PLATFORM, |
| 806 new base::StringValue("hklm"), | 814 new base::StringValue("hklm"), |
| 807 NULL); | 815 NULL); |
| 808 EXPECT_TRUE(Matches(expected)); | 816 EXPECT_TRUE(Matches(expected)); |
| 809 } | 817 } |
| 810 | 818 |
| 811 TEST_F(PolicyLoaderWinTest, Merge3rdPartyPolicies) { | 819 TEST_F(PolicyLoaderWinTest, Merge3rdPartyPolicies) { |
| 812 // Policy for the same extension will be provided at the 4 level/scope | 820 // Policy for the same extension will be provided at the 4 level/scope |
| 813 // combinations, to verify that they overlap as expected. | 821 // combinations, to verify that they overlap as expected. |
| 814 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "merge"); | 822 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "merge"); |
| 815 ASSERT_TRUE(RegisterSchema( | 823 ASSERT_TRUE(RegisterSchema( |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 850 policy.SetString("c", kUserRecommended); | 858 policy.SetString("c", kUserRecommended); |
| 851 policy.SetString("d", kUserRecommended); | 859 policy.SetString("d", kUserRecommended); |
| 852 EXPECT_TRUE(InstallValue(policy, HKEY_CURRENT_USER, | 860 EXPECT_TRUE(InstallValue(policy, HKEY_CURRENT_USER, |
| 853 kPathSuffix, kRecommended)); | 861 kPathSuffix, kRecommended)); |
| 854 | 862 |
| 855 PolicyBundle expected; | 863 PolicyBundle expected; |
| 856 PolicyMap& expected_policy = expected.Get(ns); | 864 PolicyMap& expected_policy = expected.Get(ns); |
| 857 expected_policy.Set("a", | 865 expected_policy.Set("a", |
| 858 POLICY_LEVEL_MANDATORY, | 866 POLICY_LEVEL_MANDATORY, |
| 859 POLICY_SCOPE_MACHINE, | 867 POLICY_SCOPE_MACHINE, |
| 868 POLICY_SOURCE_PLATFORM, |
| 860 new base::StringValue(kMachineMandatory), | 869 new base::StringValue(kMachineMandatory), |
| 861 NULL); | 870 NULL); |
| 862 expected_policy.Set("b", | 871 expected_policy.Set("b", |
| 863 POLICY_LEVEL_MANDATORY, | 872 POLICY_LEVEL_MANDATORY, |
| 864 POLICY_SCOPE_USER, | 873 POLICY_SCOPE_USER, |
| 874 POLICY_SOURCE_PLATFORM, |
| 865 new base::StringValue(kUserMandatory), | 875 new base::StringValue(kUserMandatory), |
| 866 NULL); | 876 NULL); |
| 867 expected_policy.Set("c", | 877 expected_policy.Set("c", |
| 868 POLICY_LEVEL_RECOMMENDED, | 878 POLICY_LEVEL_RECOMMENDED, |
| 869 POLICY_SCOPE_MACHINE, | 879 POLICY_SCOPE_MACHINE, |
| 880 POLICY_SOURCE_PLATFORM, |
| 870 new base::StringValue(kMachineRecommended), | 881 new base::StringValue(kMachineRecommended), |
| 871 NULL); | 882 NULL); |
| 872 expected_policy.Set("d", | 883 expected_policy.Set("d", |
| 873 POLICY_LEVEL_RECOMMENDED, | 884 POLICY_LEVEL_RECOMMENDED, |
| 874 POLICY_SCOPE_USER, | 885 POLICY_SCOPE_USER, |
| 886 POLICY_SOURCE_PLATFORM, |
| 875 new base::StringValue(kUserRecommended), | 887 new base::StringValue(kUserRecommended), |
| 876 NULL); | 888 NULL); |
| 877 EXPECT_TRUE(Matches(expected)); | 889 EXPECT_TRUE(Matches(expected)); |
| 878 } | 890 } |
| 879 | 891 |
| 880 TEST_F(PolicyLoaderWinTest, LoadStringEncodedValues) { | 892 TEST_F(PolicyLoaderWinTest, LoadStringEncodedValues) { |
| 881 // Create a dictionary with all the types that can be stored encoded in a | 893 // Create a dictionary with all the types that can be stored encoded in a |
| 882 // string. | 894 // string. |
| 883 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "string"); | 895 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "string"); |
| 884 ASSERT_TRUE(RegisterSchema( | 896 ASSERT_TRUE(RegisterSchema( |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 923 encoded_policy.SetString("double", "456.78e9"); | 935 encoded_policy.SetString("double", "456.78e9"); |
| 924 encoded_policy.SetString("list", encoded_list); | 936 encoded_policy.SetString("list", encoded_list); |
| 925 encoded_policy.SetString("dict", encoded_dict); | 937 encoded_policy.SetString("dict", encoded_dict); |
| 926 | 938 |
| 927 const base::string16 kPathSuffix = | 939 const base::string16 kPathSuffix = |
| 928 kTestPolicyKey + base::ASCIIToUTF16("\\3rdparty\\extensions\\string"); | 940 kTestPolicyKey + base::ASCIIToUTF16("\\3rdparty\\extensions\\string"); |
| 929 EXPECT_TRUE( | 941 EXPECT_TRUE( |
| 930 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); | 942 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); |
| 931 | 943 |
| 932 PolicyBundle expected; | 944 PolicyBundle expected; |
| 933 expected.Get(ns).LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 945 expected.Get(ns).LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 946 POLICY_SOURCE_PLATFORM); |
| 934 EXPECT_TRUE(Matches(expected)); | 947 EXPECT_TRUE(Matches(expected)); |
| 935 } | 948 } |
| 936 | 949 |
| 937 TEST_F(PolicyLoaderWinTest, LoadIntegerEncodedValues) { | 950 TEST_F(PolicyLoaderWinTest, LoadIntegerEncodedValues) { |
| 938 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "int"); | 951 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "int"); |
| 939 ASSERT_TRUE(RegisterSchema( | 952 ASSERT_TRUE(RegisterSchema( |
| 940 ns, | 953 ns, |
| 941 "{" | 954 "{" |
| 942 " \"type\": \"object\"," | 955 " \"type\": \"object\"," |
| 943 " \"properties\": {" | 956 " \"properties\": {" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 955 const base::string16 kPathSuffix = | 968 const base::string16 kPathSuffix = |
| 956 kTestPolicyKey + base::ASCIIToUTF16("\\3rdparty\\extensions\\int"); | 969 kTestPolicyKey + base::ASCIIToUTF16("\\3rdparty\\extensions\\int"); |
| 957 EXPECT_TRUE( | 970 EXPECT_TRUE( |
| 958 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); | 971 InstallValue(encoded_policy, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); |
| 959 | 972 |
| 960 base::DictionaryValue policy; | 973 base::DictionaryValue policy; |
| 961 policy.SetBoolean("bool", true); | 974 policy.SetBoolean("bool", true); |
| 962 policy.SetInteger("int", 123); | 975 policy.SetInteger("int", 123); |
| 963 policy.SetDouble("double", 456.0); | 976 policy.SetDouble("double", 456.0); |
| 964 PolicyBundle expected; | 977 PolicyBundle expected; |
| 965 expected.Get(ns).LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 978 expected.Get(ns).LoadFrom(&policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 979 POLICY_SOURCE_PLATFORM); |
| 966 EXPECT_TRUE(Matches(expected)); | 980 EXPECT_TRUE(Matches(expected)); |
| 967 } | 981 } |
| 968 | 982 |
| 969 TEST_F(PolicyLoaderWinTest, DefaultPropertySchemaType) { | 983 TEST_F(PolicyLoaderWinTest, DefaultPropertySchemaType) { |
| 970 // Build a schema for an "object" with a default schema for its properties. | 984 // Build a schema for an "object" with a default schema for its properties. |
| 971 // Note that the top-level object can't have "additionalProperties", so | 985 // Note that the top-level object can't have "additionalProperties", so |
| 972 // a "policy" property is used instead. | 986 // a "policy" property is used instead. |
| 973 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "test"); | 987 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "test"); |
| 974 ASSERT_TRUE(RegisterSchema( | 988 ASSERT_TRUE(RegisterSchema( |
| 975 ns, | 989 ns, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1005 InstallValue(all_policies, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); | 1019 InstallValue(all_policies, HKEY_CURRENT_USER, kPathSuffix, kMandatory)); |
| 1006 | 1020 |
| 1007 base::DictionaryValue expected_policy; | 1021 base::DictionaryValue expected_policy; |
| 1008 expected_policy.SetInteger("special-int1", 123); | 1022 expected_policy.SetInteger("special-int1", 123); |
| 1009 expected_policy.SetInteger("special-int2", -456); | 1023 expected_policy.SetInteger("special-int2", -456); |
| 1010 expected_policy.SetDouble("double1", 789.0); | 1024 expected_policy.SetDouble("double1", 789.0); |
| 1011 expected_policy.SetDouble("double2", 123.456e7); | 1025 expected_policy.SetDouble("double2", 123.456e7); |
| 1012 base::DictionaryValue expected_policies; | 1026 base::DictionaryValue expected_policies; |
| 1013 expected_policies.Set("policy", expected_policy.DeepCopy()); | 1027 expected_policies.Set("policy", expected_policy.DeepCopy()); |
| 1014 PolicyBundle expected; | 1028 PolicyBundle expected; |
| 1015 expected.Get(ns).LoadFrom( | 1029 expected.Get(ns).LoadFrom(&expected_policies, POLICY_LEVEL_MANDATORY, |
| 1016 &expected_policies, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER); | 1030 POLICY_SCOPE_USER, POLICY_SOURCE_PLATFORM); |
| 1017 EXPECT_TRUE(Matches(expected)); | 1031 EXPECT_TRUE(Matches(expected)); |
| 1018 } | 1032 } |
| 1019 | 1033 |
| 1020 TEST_F(PolicyLoaderWinTest, AppliedPolicyNotPresent) { | 1034 TEST_F(PolicyLoaderWinTest, AppliedPolicyNotPresent) { |
| 1021 InstallRegistrySentinel(); | 1035 InstallRegistrySentinel(); |
| 1022 gpo_list_ = NULL; | 1036 gpo_list_ = NULL; |
| 1023 gpo_list_status_ = ERROR_SUCCESS; | 1037 gpo_list_status_ = ERROR_SUCCESS; |
| 1024 | 1038 |
| 1025 PolicyBundle empty; | 1039 PolicyBundle empty; |
| 1026 EXPECT_TRUE(Matches(empty)); | 1040 EXPECT_TRUE(Matches(empty)); |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1171 POLICY_DOMAIN_EXTENSIONS, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); | 1185 POLICY_DOMAIN_EXTENSIONS, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); |
| 1172 const PolicyNamespace ns_b( | 1186 const PolicyNamespace ns_b( |
| 1173 POLICY_DOMAIN_EXTENSIONS, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); | 1187 POLICY_DOMAIN_EXTENSIONS, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); |
| 1174 ASSERT_TRUE(RegisterSchema(ns_a, kTestSchema)); | 1188 ASSERT_TRUE(RegisterSchema(ns_a, kTestSchema)); |
| 1175 ASSERT_TRUE(RegisterSchema(ns_b, kTestSchema)); | 1189 ASSERT_TRUE(RegisterSchema(ns_b, kTestSchema)); |
| 1176 | 1190 |
| 1177 PolicyBundle expected; | 1191 PolicyBundle expected; |
| 1178 base::DictionaryValue expected_a; | 1192 base::DictionaryValue expected_a; |
| 1179 expected_a.SetInteger("policy 1", 3); | 1193 expected_a.SetInteger("policy 1", 3); |
| 1180 expected_a.SetInteger("policy 2", 3); | 1194 expected_a.SetInteger("policy 2", 3); |
| 1181 expected.Get(ns_a).LoadFrom( | 1195 expected.Get(ns_a).LoadFrom(&expected_a, POLICY_LEVEL_MANDATORY, |
| 1182 &expected_a, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); | 1196 POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM); |
| 1183 base::DictionaryValue expected_b; | 1197 base::DictionaryValue expected_b; |
| 1184 expected_b.SetInteger("policy 1", 2); | 1198 expected_b.SetInteger("policy 1", 2); |
| 1185 expected.Get(ns_b).LoadFrom( | 1199 expected.Get(ns_b).LoadFrom(&expected_b, POLICY_LEVEL_MANDATORY, |
| 1186 &expected_b, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE); | 1200 POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM); |
| 1187 EXPECT_TRUE(Matches(expected)); | 1201 EXPECT_TRUE(Matches(expected)); |
| 1188 } | 1202 } |
| 1189 | 1203 |
| 1190 TEST_F(PolicyLoaderWinTest, LBSSupport) { | 1204 TEST_F(PolicyLoaderWinTest, LBSSupport) { |
| 1191 const PolicyNamespace ns( | 1205 const PolicyNamespace ns( |
| 1192 POLICY_DOMAIN_EXTENSIONS, "heildphpnddilhkemkielfhnkaagiabh"); | 1206 POLICY_DOMAIN_EXTENSIONS, "heildphpnddilhkemkielfhnkaagiabh"); |
| 1193 schema_registry_.RegisterComponent(ns, Schema()); | 1207 schema_registry_.RegisterComponent(ns, Schema()); |
| 1194 | 1208 |
| 1195 const char kIncompleteSchema[] = | 1209 const char kIncompleteSchema[] = |
| 1196 "{" | 1210 "{" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1212 base::DictionaryValue root; | 1226 base::DictionaryValue root; |
| 1213 root.Set(base::UTF16ToUTF8(kMandatory), policy.DeepCopy()); | 1227 root.Set(base::UTF16ToUTF8(kMandatory), policy.DeepCopy()); |
| 1214 root.SetString(kSchema, kIncompleteSchema); | 1228 root.SetString(kSchema, kIncompleteSchema); |
| 1215 EXPECT_TRUE(InstallValue(root, HKEY_LOCAL_MACHINE, | 1229 EXPECT_TRUE(InstallValue(root, HKEY_LOCAL_MACHINE, |
| 1216 kPathSuffix, base::ASCIIToUTF16(ns.component_id))); | 1230 kPathSuffix, base::ASCIIToUTF16(ns.component_id))); |
| 1217 | 1231 |
| 1218 PolicyBundle expected; | 1232 PolicyBundle expected; |
| 1219 PolicyMap& expected_policy = expected.Get(ns); | 1233 PolicyMap& expected_policy = expected.Get(ns); |
| 1220 expected_policy.Set("alternative_browser_path", | 1234 expected_policy.Set("alternative_browser_path", |
| 1221 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 1235 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
| 1236 POLICY_SOURCE_PLATFORM, |
| 1222 new base::StringValue("c:\\legacy\\browser.exe"), NULL); | 1237 new base::StringValue("c:\\legacy\\browser.exe"), NULL); |
| 1223 expected_policy.Set("url_list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 1238 expected_policy.Set("url_list", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
| 1224 list.DeepCopy(), NULL); | 1239 POLICY_SOURCE_PLATFORM, list.DeepCopy(), nullptr); |
| 1225 EXPECT_TRUE(Matches(expected)); | 1240 EXPECT_TRUE(Matches(expected)); |
| 1226 } | 1241 } |
| 1227 | 1242 |
| 1228 } // namespace policy | 1243 } // namespace policy |
| OLD | NEW |