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