Index: components/policy/core/common/policy_map_unittest.cc |
diff --git a/components/policy/core/common/policy_map_unittest.cc b/components/policy/core/common/policy_map_unittest.cc |
index 356cabce7c812389103cf9263e34cc5ebb08eeb4..58dfcac054b4653347e778e2862de257e5dde029 100644 |
--- a/components/policy/core/common/policy_map_unittest.cc |
+++ b/components/policy/core/common/policy_map_unittest.cc |
@@ -7,6 +7,7 @@ |
#include "base/callback.h" |
#include "base/memory/weak_ptr.h" |
#include "components/policy/core/common/external_data_manager.h" |
+#include "components/policy/core/common/policy_types.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace policy { |
@@ -25,13 +26,14 @@ const char kTestPolicyName8[] = "policy.test.8"; |
// Utility functions for the tests. |
void SetPolicy(PolicyMap* map, const char* name, base::Value* value) { |
- map->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, value, NULL); |
+ map->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
+ value, nullptr); |
} |
void SetPolicy(PolicyMap* map, |
const char* name, |
ExternalDataFetcher* external_data_fetcher) { |
- map->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
+ map->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
NULL, external_data_fetcher); |
} |
@@ -64,15 +66,17 @@ TEST_F(PolicyMapTest, SetAndGet) { |
ASSERT_TRUE(entry != NULL); |
EXPECT_EQ(POLICY_LEVEL_MANDATORY, entry->level); |
EXPECT_EQ(POLICY_SCOPE_USER, entry->scope); |
+ EXPECT_EQ(POLICY_SOURCE_CLOUD, entry->source); |
EXPECT_TRUE(ExternalDataFetcher::Equals( |
entry->external_data_fetcher, CreateExternalDataFetcher("dummy").get())); |
- map.Set(kTestPolicyName1, POLICY_LEVEL_RECOMMENDED, |
- POLICY_SCOPE_MACHINE, NULL, NULL); |
+ map.Set(kTestPolicyName1, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_ENTERPRISE_DEFAULT, nullptr, nullptr); |
EXPECT_FALSE(map.GetValue(kTestPolicyName1)); |
entry = map.Get(kTestPolicyName1); |
ASSERT_TRUE(entry != NULL); |
EXPECT_EQ(POLICY_LEVEL_RECOMMENDED, entry->level); |
EXPECT_EQ(POLICY_SCOPE_MACHINE, entry->scope); |
+ EXPECT_EQ(POLICY_SOURCE_ENTERPRISE_DEFAULT, entry->source); |
EXPECT_FALSE(entry->external_data_fetcher); |
} |
@@ -164,24 +168,30 @@ TEST_F(PolicyMapTest, MergeFrom) { |
a.Set(kTestPolicyName1, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::StringValue("google.com"), |
NULL); |
a.Set(kTestPolicyName2, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(true), |
NULL); |
a.Set(kTestPolicyName3, |
- POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_ENTERPRISE_DEFAULT, |
NULL, CreateExternalDataFetcher("a").release()); |
a.Set(kTestPolicyName4, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(false), |
NULL); |
a.Set(kTestPolicyName5, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
new base::StringValue("google.com/q={x}"), |
NULL); |
@@ -189,29 +199,36 @@ TEST_F(PolicyMapTest, MergeFrom) { |
b.Set(kTestPolicyName1, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
new base::StringValue("chromium.org"), |
NULL); |
b.Set(kTestPolicyName2, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(false), |
NULL); |
b.Set(kTestPolicyName3, |
- POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
NULL, CreateExternalDataFetcher("b").release()); |
b.Set(kTestPolicyName4, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_ENTERPRISE_OVERRIDE, |
new base::FundamentalValue(true), |
NULL); |
b.Set(kTestPolicyName5, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_PLATFORM, |
new base::StringValue(std::string()), |
NULL); |
b.Set(kTestPolicyName6, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(true), |
NULL); |
@@ -222,33 +239,40 @@ TEST_F(PolicyMapTest, MergeFrom) { |
c.Set(kTestPolicyName1, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
new base::StringValue("chromium.org"), |
NULL); |
// |a| has precedence over |b|. |
c.Set(kTestPolicyName2, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(true), |
NULL); |
c.Set(kTestPolicyName3, |
- POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_ENTERPRISE_DEFAULT, |
NULL, CreateExternalDataFetcher("a").release()); |
// POLICY_SCOPE_MACHINE over POLICY_SCOPE_USER for POLICY_LEVEL_RECOMMENDED. |
c.Set(kTestPolicyName4, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_ENTERPRISE_OVERRIDE, |
new base::FundamentalValue(true), |
NULL); |
// POLICY_LEVEL_MANDATORY over POLICY_LEVEL_RECOMMENDED. |
c.Set(kTestPolicyName5, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_PLATFORM, |
new base::StringValue(std::string()), |
NULL); |
// Merge new ones. |
c.Set(kTestPolicyName6, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(true), |
NULL); |
@@ -260,32 +284,41 @@ TEST_F(PolicyMapTest, GetDifferingKeys) { |
a.Set(kTestPolicyName1, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::StringValue("google.com"), |
NULL); |
a.Set(kTestPolicyName2, |
- POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
NULL, CreateExternalDataFetcher("dummy").release()); |
a.Set(kTestPolicyName3, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(true), |
NULL); |
a.Set(kTestPolicyName4, |
- POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
NULL, CreateExternalDataFetcher("a").release()); |
a.Set(kTestPolicyName5, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(false), |
NULL); |
a.Set(kTestPolicyName6, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
new base::StringValue("google.com/q={x}"), |
NULL); |
a.Set(kTestPolicyName7, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(true), |
NULL); |
@@ -293,32 +326,41 @@ TEST_F(PolicyMapTest, GetDifferingKeys) { |
b.Set(kTestPolicyName1, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::StringValue("google.com"), |
NULL); |
b.Set(kTestPolicyName2, |
- POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
NULL, CreateExternalDataFetcher("dummy").release()); |
b.Set(kTestPolicyName3, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(false), |
NULL); |
b.Set(kTestPolicyName4, |
- POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_MACHINE, |
+ POLICY_SOURCE_CLOUD, |
NULL, CreateExternalDataFetcher("b").release()); |
b.Set(kTestPolicyName5, |
POLICY_LEVEL_MANDATORY, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(false), |
NULL); |
b.Set(kTestPolicyName6, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::StringValue("google.com/q={x}"), |
NULL); |
b.Set(kTestPolicyName8, |
POLICY_LEVEL_RECOMMENDED, |
POLICY_SCOPE_USER, |
+ POLICY_SOURCE_CLOUD, |
new base::FundamentalValue(true), |
NULL); |
@@ -347,4 +389,38 @@ TEST_F(PolicyMapTest, GetDifferingKeys) { |
EXPECT_EQ(6u, diff.size()); |
} |
+TEST_F(PolicyMapTest, LoadFromSetsLevelScopeAndSource) { |
+ base::DictionaryValue policies; |
+ policies.SetString("TestPolicy1", "google.com"); |
+ policies.SetBoolean("TestPolicy2", true); |
+ policies.SetInteger("TestPolicy3", -12321); |
+ |
+ PolicyMap loaded; |
+ loaded.LoadFrom(&policies, |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_USER, |
+ POLICY_SOURCE_PLATFORM); |
+ |
+ PolicyMap expected; |
+ expected.Set("TestPolicy1", |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_USER, |
+ POLICY_SOURCE_PLATFORM, |
+ new base::StringValue("google.com"), |
+ nullptr); |
+ expected.Set("TestPolicy2", |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_USER, |
+ POLICY_SOURCE_PLATFORM, |
+ new base::FundamentalValue(true), |
+ nullptr); |
+ expected.Set("TestPolicy3", |
+ POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_USER, |
+ POLICY_SOURCE_PLATFORM, |
+ new base::FundamentalValue(-12321), |
+ nullptr); |
+ EXPECT_TRUE(loaded.Equals(expected)); |
+} |
+ |
} // namespace policy |