Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_map.h" | 5 #include "components/policy/core/common/policy_map.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/memory/weak_ptr.h" | 8 #include "base/memory/weak_ptr.h" |
| 9 #include "components/policy/core/common/external_data_manager.h" | 9 #include "components/policy/core/common/external_data_manager.h" |
| 10 #include "components/policy/core/common/policy_types.h" | |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 11 | 12 |
| 12 namespace policy { | 13 namespace policy { |
| 13 | 14 |
| 14 namespace { | 15 namespace { |
| 15 | 16 |
| 16 // Dummy policy names. | 17 // Dummy policy names. |
| 17 const char kTestPolicyName1[] = "policy.test.1"; | 18 const char kTestPolicyName1[] = "policy.test.1"; |
| 18 const char kTestPolicyName2[] = "policy.test.2"; | 19 const char kTestPolicyName2[] = "policy.test.2"; |
| 19 const char kTestPolicyName3[] = "policy.test.3"; | 20 const char kTestPolicyName3[] = "policy.test.3"; |
| 20 const char kTestPolicyName4[] = "policy.test.4"; | 21 const char kTestPolicyName4[] = "policy.test.4"; |
| 21 const char kTestPolicyName5[] = "policy.test.5"; | 22 const char kTestPolicyName5[] = "policy.test.5"; |
| 22 const char kTestPolicyName6[] = "policy.test.6"; | 23 const char kTestPolicyName6[] = "policy.test.6"; |
| 23 const char kTestPolicyName7[] = "policy.test.7"; | 24 const char kTestPolicyName7[] = "policy.test.7"; |
| 24 const char kTestPolicyName8[] = "policy.test.8"; | 25 const char kTestPolicyName8[] = "policy.test.8"; |
| 25 | 26 |
| 26 // Utility functions for the tests. | 27 // Utility functions for the tests. |
| 27 void SetPolicy(PolicyMap* map, const char* name, base::Value* value) { | 28 void SetPolicy(PolicyMap* map, const char* name, base::Value* value) { |
| 28 map->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, value, NULL); | 29 map->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
| 30 value, nullptr); | |
| 29 } | 31 } |
| 30 | 32 |
| 31 void SetPolicy(PolicyMap* map, | 33 void SetPolicy(PolicyMap* map, |
| 32 const char* name, | 34 const char* name, |
| 33 ExternalDataFetcher* external_data_fetcher) { | 35 ExternalDataFetcher* external_data_fetcher) { |
| 34 map->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 36 map->Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, |
| 35 NULL, external_data_fetcher); | 37 NULL, external_data_fetcher); |
| 36 } | 38 } |
| 37 | 39 |
| 38 } // namespace | 40 } // namespace |
| 39 | 41 |
| 40 class PolicyMapTest : public testing::Test { | 42 class PolicyMapTest : public testing::Test { |
| 41 protected: | 43 protected: |
| 42 scoped_ptr<ExternalDataFetcher> CreateExternalDataFetcher( | 44 scoped_ptr<ExternalDataFetcher> CreateExternalDataFetcher( |
| 43 const std::string& policy) const; | 45 const std::string& policy) const; |
| 44 }; | 46 }; |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 59 EXPECT_TRUE(expected_b.Equals(map.GetValue(kTestPolicyName1))); | 61 EXPECT_TRUE(expected_b.Equals(map.GetValue(kTestPolicyName1))); |
| 60 SetPolicy(&map, kTestPolicyName1, | 62 SetPolicy(&map, kTestPolicyName1, |
| 61 CreateExternalDataFetcher("dummy").release()); | 63 CreateExternalDataFetcher("dummy").release()); |
| 62 EXPECT_FALSE(map.GetValue(kTestPolicyName1)); | 64 EXPECT_FALSE(map.GetValue(kTestPolicyName1)); |
| 63 const PolicyMap::Entry* entry = map.Get(kTestPolicyName1); | 65 const PolicyMap::Entry* entry = map.Get(kTestPolicyName1); |
| 64 ASSERT_TRUE(entry != NULL); | 66 ASSERT_TRUE(entry != NULL); |
| 65 EXPECT_EQ(POLICY_LEVEL_MANDATORY, entry->level); | 67 EXPECT_EQ(POLICY_LEVEL_MANDATORY, entry->level); |
| 66 EXPECT_EQ(POLICY_SCOPE_USER, entry->scope); | 68 EXPECT_EQ(POLICY_SCOPE_USER, entry->scope); |
| 67 EXPECT_TRUE(ExternalDataFetcher::Equals( | 69 EXPECT_TRUE(ExternalDataFetcher::Equals( |
| 68 entry->external_data_fetcher, CreateExternalDataFetcher("dummy").get())); | 70 entry->external_data_fetcher, CreateExternalDataFetcher("dummy").get())); |
| 69 map.Set(kTestPolicyName1, POLICY_LEVEL_RECOMMENDED, | 71 map.Set(kTestPolicyName1, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_MACHINE, |
| 70 POLICY_SCOPE_MACHINE, NULL, NULL); | 72 POLICY_SOURCE_CLOUD, nullptr, nullptr); |
| 71 EXPECT_FALSE(map.GetValue(kTestPolicyName1)); | 73 EXPECT_FALSE(map.GetValue(kTestPolicyName1)); |
| 72 entry = map.Get(kTestPolicyName1); | 74 entry = map.Get(kTestPolicyName1); |
| 73 ASSERT_TRUE(entry != NULL); | 75 ASSERT_TRUE(entry != NULL); |
| 74 EXPECT_EQ(POLICY_LEVEL_RECOMMENDED, entry->level); | 76 EXPECT_EQ(POLICY_LEVEL_RECOMMENDED, entry->level); |
| 75 EXPECT_EQ(POLICY_SCOPE_MACHINE, entry->scope); | 77 EXPECT_EQ(POLICY_SCOPE_MACHINE, entry->scope); |
| 76 EXPECT_FALSE(entry->external_data_fetcher); | 78 EXPECT_FALSE(entry->external_data_fetcher); |
| 77 } | 79 } |
| 78 | 80 |
|
bartfab (slow)
2015/09/16 15:58:41
Nit: Please include one or more of the other sourc
fhorschig
2015/09/17 11:20:42
Done.
| |
| 79 TEST_F(PolicyMapTest, Equals) { | 81 TEST_F(PolicyMapTest, Equals) { |
| 80 PolicyMap a; | 82 PolicyMap a; |
| 81 SetPolicy(&a, kTestPolicyName1, new base::StringValue("aaa")); | 83 SetPolicy(&a, kTestPolicyName1, new base::StringValue("aaa")); |
| 82 PolicyMap a2; | 84 PolicyMap a2; |
| 83 SetPolicy(&a2, kTestPolicyName1, new base::StringValue("aaa")); | 85 SetPolicy(&a2, kTestPolicyName1, new base::StringValue("aaa")); |
| 84 PolicyMap b; | 86 PolicyMap b; |
| 85 SetPolicy(&b, kTestPolicyName1, new base::StringValue("bbb")); | 87 SetPolicy(&b, kTestPolicyName1, new base::StringValue("bbb")); |
| 86 PolicyMap c; | 88 PolicyMap c; |
| 87 SetPolicy(&c, kTestPolicyName1, new base::StringValue("aaa")); | 89 SetPolicy(&c, kTestPolicyName1, new base::StringValue("aaa")); |
| 88 SetPolicy(&c, kTestPolicyName2, new base::FundamentalValue(true)); | 90 SetPolicy(&c, kTestPolicyName2, new base::FundamentalValue(true)); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 157 PolicyMap empty; | 159 PolicyMap empty; |
| 158 EXPECT_TRUE(a.Equals(empty)); | 160 EXPECT_TRUE(a.Equals(empty)); |
| 159 EXPECT_FALSE(b.Equals(empty)); | 161 EXPECT_FALSE(b.Equals(empty)); |
| 160 } | 162 } |
| 161 | 163 |
| 162 TEST_F(PolicyMapTest, MergeFrom) { | 164 TEST_F(PolicyMapTest, MergeFrom) { |
| 163 PolicyMap a; | 165 PolicyMap a; |
| 164 a.Set(kTestPolicyName1, | 166 a.Set(kTestPolicyName1, |
| 165 POLICY_LEVEL_MANDATORY, | 167 POLICY_LEVEL_MANDATORY, |
| 166 POLICY_SCOPE_USER, | 168 POLICY_SCOPE_USER, |
| 169 POLICY_SOURCE_CLOUD, | |
| 167 new base::StringValue("google.com"), | 170 new base::StringValue("google.com"), |
| 168 NULL); | 171 NULL); |
| 169 a.Set(kTestPolicyName2, | 172 a.Set(kTestPolicyName2, |
| 170 POLICY_LEVEL_MANDATORY, | 173 POLICY_LEVEL_MANDATORY, |
| 171 POLICY_SCOPE_MACHINE, | 174 POLICY_SCOPE_MACHINE, |
| 175 POLICY_SOURCE_CLOUD, | |
| 172 new base::FundamentalValue(true), | 176 new base::FundamentalValue(true), |
| 173 NULL); | 177 NULL); |
| 174 a.Set(kTestPolicyName3, | 178 a.Set(kTestPolicyName3, |
| 175 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 179 POLICY_LEVEL_MANDATORY, |
| 180 POLICY_SCOPE_MACHINE, | |
| 181 POLICY_SOURCE_CLOUD, | |
| 176 NULL, CreateExternalDataFetcher("a").release()); | 182 NULL, CreateExternalDataFetcher("a").release()); |
| 177 a.Set(kTestPolicyName4, | 183 a.Set(kTestPolicyName4, |
| 178 POLICY_LEVEL_RECOMMENDED, | 184 POLICY_LEVEL_RECOMMENDED, |
| 179 POLICY_SCOPE_USER, | 185 POLICY_SCOPE_USER, |
| 186 POLICY_SOURCE_CLOUD, | |
| 180 new base::FundamentalValue(false), | 187 new base::FundamentalValue(false), |
| 181 NULL); | 188 NULL); |
| 182 a.Set(kTestPolicyName5, | 189 a.Set(kTestPolicyName5, |
| 183 POLICY_LEVEL_RECOMMENDED, | 190 POLICY_LEVEL_RECOMMENDED, |
| 184 POLICY_SCOPE_MACHINE, | 191 POLICY_SCOPE_MACHINE, |
| 192 POLICY_SOURCE_CLOUD, | |
| 185 new base::StringValue("google.com/q={x}"), | 193 new base::StringValue("google.com/q={x}"), |
| 186 NULL); | 194 NULL); |
| 187 | 195 |
| 188 PolicyMap b; | 196 PolicyMap b; |
| 189 b.Set(kTestPolicyName1, | 197 b.Set(kTestPolicyName1, |
| 190 POLICY_LEVEL_MANDATORY, | 198 POLICY_LEVEL_MANDATORY, |
| 191 POLICY_SCOPE_MACHINE, | 199 POLICY_SCOPE_MACHINE, |
| 200 POLICY_SOURCE_CLOUD, | |
| 192 new base::StringValue("chromium.org"), | 201 new base::StringValue("chromium.org"), |
| 193 NULL); | 202 NULL); |
| 194 b.Set(kTestPolicyName2, | 203 b.Set(kTestPolicyName2, |
| 195 POLICY_LEVEL_MANDATORY, | 204 POLICY_LEVEL_MANDATORY, |
| 196 POLICY_SCOPE_MACHINE, | 205 POLICY_SCOPE_MACHINE, |
| 206 POLICY_SOURCE_CLOUD, | |
| 197 new base::FundamentalValue(false), | 207 new base::FundamentalValue(false), |
| 198 NULL); | 208 NULL); |
| 199 b.Set(kTestPolicyName3, | 209 b.Set(kTestPolicyName3, |
| 200 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 210 POLICY_LEVEL_MANDATORY, |
| 211 POLICY_SCOPE_MACHINE, | |
| 212 POLICY_SOURCE_CLOUD, | |
| 201 NULL, CreateExternalDataFetcher("b").release()); | 213 NULL, CreateExternalDataFetcher("b").release()); |
| 202 b.Set(kTestPolicyName4, | 214 b.Set(kTestPolicyName4, |
| 203 POLICY_LEVEL_RECOMMENDED, | 215 POLICY_LEVEL_RECOMMENDED, |
| 204 POLICY_SCOPE_MACHINE, | 216 POLICY_SCOPE_MACHINE, |
| 217 POLICY_SOURCE_CLOUD, | |
| 205 new base::FundamentalValue(true), | 218 new base::FundamentalValue(true), |
| 206 NULL); | 219 NULL); |
| 207 b.Set(kTestPolicyName5, | 220 b.Set(kTestPolicyName5, |
| 208 POLICY_LEVEL_MANDATORY, | 221 POLICY_LEVEL_MANDATORY, |
| 209 POLICY_SCOPE_MACHINE, | 222 POLICY_SCOPE_MACHINE, |
| 223 POLICY_SOURCE_CLOUD, | |
| 210 new base::StringValue(std::string()), | 224 new base::StringValue(std::string()), |
| 211 NULL); | 225 NULL); |
| 212 b.Set(kTestPolicyName6, | 226 b.Set(kTestPolicyName6, |
| 213 POLICY_LEVEL_RECOMMENDED, | 227 POLICY_LEVEL_RECOMMENDED, |
| 214 POLICY_SCOPE_USER, | 228 POLICY_SCOPE_USER, |
| 229 POLICY_SOURCE_CLOUD, | |
| 215 new base::FundamentalValue(true), | 230 new base::FundamentalValue(true), |
| 216 NULL); | 231 NULL); |
| 217 | 232 |
| 218 a.MergeFrom(b); | 233 a.MergeFrom(b); |
| 219 | 234 |
| 220 PolicyMap c; | 235 PolicyMap c; |
| 221 // POLICY_SCOPE_MACHINE over POLICY_SCOPE_USER. | 236 // POLICY_SCOPE_MACHINE over POLICY_SCOPE_USER. |
| 222 c.Set(kTestPolicyName1, | 237 c.Set(kTestPolicyName1, |
| 223 POLICY_LEVEL_MANDATORY, | 238 POLICY_LEVEL_MANDATORY, |
| 224 POLICY_SCOPE_MACHINE, | 239 POLICY_SCOPE_MACHINE, |
| 240 POLICY_SOURCE_CLOUD, | |
| 225 new base::StringValue("chromium.org"), | 241 new base::StringValue("chromium.org"), |
| 226 NULL); | 242 NULL); |
| 227 // |a| has precedence over |b|. | 243 // |a| has precedence over |b|. |
| 228 c.Set(kTestPolicyName2, | 244 c.Set(kTestPolicyName2, |
| 229 POLICY_LEVEL_MANDATORY, | 245 POLICY_LEVEL_MANDATORY, |
| 230 POLICY_SCOPE_MACHINE, | 246 POLICY_SCOPE_MACHINE, |
| 247 POLICY_SOURCE_CLOUD, | |
| 231 new base::FundamentalValue(true), | 248 new base::FundamentalValue(true), |
| 232 NULL); | 249 NULL); |
| 233 c.Set(kTestPolicyName3, | 250 c.Set(kTestPolicyName3, |
| 234 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 251 POLICY_LEVEL_MANDATORY, |
| 252 POLICY_SCOPE_MACHINE, | |
| 253 POLICY_SOURCE_CLOUD, | |
| 235 NULL, CreateExternalDataFetcher("a").release()); | 254 NULL, CreateExternalDataFetcher("a").release()); |
| 236 // POLICY_SCOPE_MACHINE over POLICY_SCOPE_USER for POLICY_LEVEL_RECOMMENDED. | 255 // POLICY_SCOPE_MACHINE over POLICY_SCOPE_USER for POLICY_LEVEL_RECOMMENDED. |
| 237 c.Set(kTestPolicyName4, | 256 c.Set(kTestPolicyName4, |
| 238 POLICY_LEVEL_RECOMMENDED, | 257 POLICY_LEVEL_RECOMMENDED, |
| 239 POLICY_SCOPE_MACHINE, | 258 POLICY_SCOPE_MACHINE, |
| 259 POLICY_SOURCE_CLOUD, | |
| 240 new base::FundamentalValue(true), | 260 new base::FundamentalValue(true), |
| 241 NULL); | 261 NULL); |
| 242 // POLICY_LEVEL_MANDATORY over POLICY_LEVEL_RECOMMENDED. | 262 // POLICY_LEVEL_MANDATORY over POLICY_LEVEL_RECOMMENDED. |
| 243 c.Set(kTestPolicyName5, | 263 c.Set(kTestPolicyName5, |
| 244 POLICY_LEVEL_MANDATORY, | 264 POLICY_LEVEL_MANDATORY, |
| 245 POLICY_SCOPE_MACHINE, | 265 POLICY_SCOPE_MACHINE, |
| 266 POLICY_SOURCE_CLOUD, | |
| 246 new base::StringValue(std::string()), | 267 new base::StringValue(std::string()), |
| 247 NULL); | 268 NULL); |
| 248 // Merge new ones. | 269 // Merge new ones. |
| 249 c.Set(kTestPolicyName6, | 270 c.Set(kTestPolicyName6, |
| 250 POLICY_LEVEL_RECOMMENDED, | 271 POLICY_LEVEL_RECOMMENDED, |
| 251 POLICY_SCOPE_USER, | 272 POLICY_SCOPE_USER, |
| 273 POLICY_SOURCE_CLOUD, | |
| 252 new base::FundamentalValue(true), | 274 new base::FundamentalValue(true), |
| 253 NULL); | 275 NULL); |
| 254 | 276 |
| 255 EXPECT_TRUE(a.Equals(c)); | 277 EXPECT_TRUE(a.Equals(c)); |
| 256 } | 278 } |
| 257 | 279 |
| 258 TEST_F(PolicyMapTest, GetDifferingKeys) { | 280 TEST_F(PolicyMapTest, GetDifferingKeys) { |
| 259 PolicyMap a; | 281 PolicyMap a; |
| 260 a.Set(kTestPolicyName1, | 282 a.Set(kTestPolicyName1, |
| 261 POLICY_LEVEL_MANDATORY, | 283 POLICY_LEVEL_MANDATORY, |
| 262 POLICY_SCOPE_USER, | 284 POLICY_SCOPE_USER, |
| 285 POLICY_SOURCE_CLOUD, | |
| 263 new base::StringValue("google.com"), | 286 new base::StringValue("google.com"), |
| 264 NULL); | 287 NULL); |
| 265 a.Set(kTestPolicyName2, | 288 a.Set(kTestPolicyName2, |
| 266 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 289 POLICY_LEVEL_MANDATORY, |
| 290 POLICY_SCOPE_MACHINE, | |
| 291 POLICY_SOURCE_CLOUD, | |
| 267 NULL, CreateExternalDataFetcher("dummy").release()); | 292 NULL, CreateExternalDataFetcher("dummy").release()); |
| 268 a.Set(kTestPolicyName3, | 293 a.Set(kTestPolicyName3, |
| 269 POLICY_LEVEL_MANDATORY, | 294 POLICY_LEVEL_MANDATORY, |
| 270 POLICY_SCOPE_MACHINE, | 295 POLICY_SCOPE_MACHINE, |
| 296 POLICY_SOURCE_CLOUD, | |
| 271 new base::FundamentalValue(true), | 297 new base::FundamentalValue(true), |
| 272 NULL); | 298 NULL); |
| 273 a.Set(kTestPolicyName4, | 299 a.Set(kTestPolicyName4, |
| 274 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 300 POLICY_LEVEL_MANDATORY, |
| 301 POLICY_SCOPE_MACHINE, | |
| 302 POLICY_SOURCE_CLOUD, | |
| 275 NULL, CreateExternalDataFetcher("a").release()); | 303 NULL, CreateExternalDataFetcher("a").release()); |
| 276 a.Set(kTestPolicyName5, | 304 a.Set(kTestPolicyName5, |
| 277 POLICY_LEVEL_RECOMMENDED, | 305 POLICY_LEVEL_RECOMMENDED, |
| 278 POLICY_SCOPE_USER, | 306 POLICY_SCOPE_USER, |
| 307 POLICY_SOURCE_CLOUD, | |
| 279 new base::FundamentalValue(false), | 308 new base::FundamentalValue(false), |
| 280 NULL); | 309 NULL); |
| 281 a.Set(kTestPolicyName6, | 310 a.Set(kTestPolicyName6, |
| 282 POLICY_LEVEL_RECOMMENDED, | 311 POLICY_LEVEL_RECOMMENDED, |
| 283 POLICY_SCOPE_MACHINE, | 312 POLICY_SCOPE_MACHINE, |
| 313 POLICY_SOURCE_CLOUD, | |
| 284 new base::StringValue("google.com/q={x}"), | 314 new base::StringValue("google.com/q={x}"), |
| 285 NULL); | 315 NULL); |
| 286 a.Set(kTestPolicyName7, | 316 a.Set(kTestPolicyName7, |
| 287 POLICY_LEVEL_MANDATORY, | 317 POLICY_LEVEL_MANDATORY, |
| 288 POLICY_SCOPE_USER, | 318 POLICY_SCOPE_USER, |
| 319 POLICY_SOURCE_CLOUD, | |
| 289 new base::FundamentalValue(true), | 320 new base::FundamentalValue(true), |
| 290 NULL); | 321 NULL); |
| 291 | 322 |
| 292 PolicyMap b; | 323 PolicyMap b; |
| 293 b.Set(kTestPolicyName1, | 324 b.Set(kTestPolicyName1, |
| 294 POLICY_LEVEL_MANDATORY, | 325 POLICY_LEVEL_MANDATORY, |
| 295 POLICY_SCOPE_USER, | 326 POLICY_SCOPE_USER, |
| 327 POLICY_SOURCE_CLOUD, | |
| 296 new base::StringValue("google.com"), | 328 new base::StringValue("google.com"), |
| 297 NULL); | 329 NULL); |
| 298 b.Set(kTestPolicyName2, | 330 b.Set(kTestPolicyName2, |
| 299 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 331 POLICY_LEVEL_MANDATORY, |
| 332 POLICY_SCOPE_MACHINE, | |
| 333 POLICY_SOURCE_CLOUD, | |
| 300 NULL, CreateExternalDataFetcher("dummy").release()); | 334 NULL, CreateExternalDataFetcher("dummy").release()); |
| 301 b.Set(kTestPolicyName3, | 335 b.Set(kTestPolicyName3, |
| 302 POLICY_LEVEL_MANDATORY, | 336 POLICY_LEVEL_MANDATORY, |
| 303 POLICY_SCOPE_MACHINE, | 337 POLICY_SCOPE_MACHINE, |
| 338 POLICY_SOURCE_CLOUD, | |
| 304 new base::FundamentalValue(false), | 339 new base::FundamentalValue(false), |
| 305 NULL); | 340 NULL); |
| 306 b.Set(kTestPolicyName4, | 341 b.Set(kTestPolicyName4, |
| 307 POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 342 POLICY_LEVEL_MANDATORY, |
| 343 POLICY_SCOPE_MACHINE, | |
| 344 POLICY_SOURCE_CLOUD, | |
| 308 NULL, CreateExternalDataFetcher("b").release()); | 345 NULL, CreateExternalDataFetcher("b").release()); |
| 309 b.Set(kTestPolicyName5, | 346 b.Set(kTestPolicyName5, |
| 310 POLICY_LEVEL_MANDATORY, | 347 POLICY_LEVEL_MANDATORY, |
| 311 POLICY_SCOPE_USER, | 348 POLICY_SCOPE_USER, |
| 349 POLICY_SOURCE_CLOUD, | |
| 312 new base::FundamentalValue(false), | 350 new base::FundamentalValue(false), |
| 313 NULL); | 351 NULL); |
| 314 b.Set(kTestPolicyName6, | 352 b.Set(kTestPolicyName6, |
| 315 POLICY_LEVEL_RECOMMENDED, | 353 POLICY_LEVEL_RECOMMENDED, |
| 316 POLICY_SCOPE_USER, | 354 POLICY_SCOPE_USER, |
| 355 POLICY_SOURCE_CLOUD, | |
| 317 new base::StringValue("google.com/q={x}"), | 356 new base::StringValue("google.com/q={x}"), |
| 318 NULL); | 357 NULL); |
| 319 b.Set(kTestPolicyName8, | 358 b.Set(kTestPolicyName8, |
| 320 POLICY_LEVEL_RECOMMENDED, | 359 POLICY_LEVEL_RECOMMENDED, |
| 321 POLICY_SCOPE_USER, | 360 POLICY_SCOPE_USER, |
| 361 POLICY_SOURCE_CLOUD, | |
| 322 new base::FundamentalValue(true), | 362 new base::FundamentalValue(true), |
| 323 NULL); | 363 NULL); |
| 324 | 364 |
| 325 std::set<std::string> diff; | 365 std::set<std::string> diff; |
| 326 std::set<std::string> diff2; | 366 std::set<std::string> diff2; |
| 327 a.GetDifferingKeys(b, &diff); | 367 a.GetDifferingKeys(b, &diff); |
| 328 b.GetDifferingKeys(a, &diff2); | 368 b.GetDifferingKeys(a, &diff2); |
| 329 // Order shouldn't matter. | 369 // Order shouldn't matter. |
| 330 EXPECT_EQ(diff, diff2); | 370 EXPECT_EQ(diff, diff2); |
| 331 // No change. | 371 // No change. |
| 332 EXPECT_TRUE(diff.find(kTestPolicyName1) == diff.end()); | 372 EXPECT_TRUE(diff.find(kTestPolicyName1) == diff.end()); |
| 333 EXPECT_TRUE(diff.find(kTestPolicyName2) == diff.end()); | 373 EXPECT_TRUE(diff.find(kTestPolicyName2) == diff.end()); |
| 334 // Different values. | 374 // Different values. |
| 335 EXPECT_TRUE(diff.find(kTestPolicyName3) != diff.end()); | 375 EXPECT_TRUE(diff.find(kTestPolicyName3) != diff.end()); |
| 336 // Different external data references. | 376 // Different external data references. |
| 337 EXPECT_TRUE(diff.find(kTestPolicyName4) != diff.end()); | 377 EXPECT_TRUE(diff.find(kTestPolicyName4) != diff.end()); |
| 338 // Different levels. | 378 // Different levels. |
| 339 EXPECT_TRUE(diff.find(kTestPolicyName5) != diff.end()); | 379 EXPECT_TRUE(diff.find(kTestPolicyName5) != diff.end()); |
| 340 // Different scopes. | 380 // Different scopes. |
| 341 EXPECT_TRUE(diff.find(kTestPolicyName6) != diff.end()); | 381 EXPECT_TRUE(diff.find(kTestPolicyName6) != diff.end()); |
| 342 // Not in |a|. | 382 // Not in |a|. |
| 343 EXPECT_TRUE(diff.find(kTestPolicyName8) != diff.end()); | 383 EXPECT_TRUE(diff.find(kTestPolicyName8) != diff.end()); |
| 344 // Not in |b|. | 384 // Not in |b|. |
| 345 EXPECT_TRUE(diff.find(kTestPolicyName7) != diff.end()); | 385 EXPECT_TRUE(diff.find(kTestPolicyName7) != diff.end()); |
| 346 // No surprises. | 386 // No surprises. |
| 347 EXPECT_EQ(6u, diff.size()); | 387 EXPECT_EQ(6u, diff.size()); |
| 348 } | 388 } |
| 349 | 389 |
| 350 } // namespace policy | 390 } // namespace policy |
| OLD | NEW |