OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/policy/user_policy_cache.h" | 5 #include "chrome/browser/policy/user_policy_cache.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
200 string_list.add_entries("ponies"); | 200 string_list.add_entries("ponies"); |
201 string_list.add_entries("more ponies"); | 201 string_list.add_entries("more ponies"); |
202 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); | 202 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); |
203 ListValue expected; | 203 ListValue expected; |
204 expected.Append(Value::CreateStringValue("ponies")); | 204 expected.Append(Value::CreateStringValue("ponies")); |
205 expected.Append(Value::CreateStringValue("more ponies")); | 205 expected.Append(Value::CreateStringValue("more ponies")); |
206 EXPECT_TRUE(decoded->Equals(&expected)); | 206 EXPECT_TRUE(decoded->Equals(&expected)); |
207 } | 207 } |
208 | 208 |
209 TEST_F(UserPolicyCacheTest, Empty) { | 209 TEST_F(UserPolicyCacheTest, Empty) { |
210 UserPolicyCache cache(test_file()); | 210 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
211 PolicyMap empty; | 211 PolicyMap empty; |
212 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); | 212 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); |
213 EXPECT_TRUE(empty.Equals(recommended_policy(cache))); | 213 EXPECT_TRUE(empty.Equals(recommended_policy(cache))); |
214 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 214 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
215 } | 215 } |
216 | 216 |
217 TEST_F(UserPolicyCacheTest, LoadNoFile) { | 217 TEST_F(UserPolicyCacheTest, LoadNoFile) { |
218 UserPolicyCache cache(test_file()); | 218 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
219 cache.Load(); | 219 cache.Load(); |
220 loop_.RunAllPending(); | 220 loop_.RunAllPending(); |
221 PolicyMap empty; | 221 PolicyMap empty; |
222 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); | 222 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); |
223 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 223 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
224 } | 224 } |
225 | 225 |
226 TEST_F(UserPolicyCacheTest, RejectFuture) { | 226 TEST_F(UserPolicyCacheTest, RejectFuture) { |
227 scoped_ptr<em::PolicyFetchResponse> policy_response( | 227 scoped_ptr<em::PolicyFetchResponse> policy_response( |
228 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + | 228 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + |
229 base::TimeDelta::FromMinutes(5), | 229 base::TimeDelta::FromMinutes(5), |
230 em::PolicyOptions::MANDATORY)); | 230 em::PolicyOptions::MANDATORY)); |
231 WritePolicy(*policy_response); | 231 WritePolicy(*policy_response); |
232 UserPolicyCache cache(test_file()); | 232 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
233 cache.Load(); | 233 cache.Load(); |
234 loop_.RunAllPending(); | 234 loop_.RunAllPending(); |
235 PolicyMap empty; | 235 PolicyMap empty; |
236 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); | 236 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); |
237 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 237 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
238 } | 238 } |
239 | 239 |
240 TEST_F(UserPolicyCacheTest, LoadWithFile) { | 240 TEST_F(UserPolicyCacheTest, LoadWithFile) { |
241 scoped_ptr<em::PolicyFetchResponse> policy_response( | 241 scoped_ptr<em::PolicyFetchResponse> policy_response( |
242 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), | 242 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), |
243 em::PolicyOptions::MANDATORY)); | 243 em::PolicyOptions::MANDATORY)); |
244 WritePolicy(*policy_response); | 244 WritePolicy(*policy_response); |
245 UserPolicyCache cache(test_file()); | 245 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
246 cache.Load(); | 246 cache.Load(); |
247 loop_.RunAllPending(); | 247 loop_.RunAllPending(); |
248 PolicyMap empty; | 248 PolicyMap empty; |
249 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); | 249 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); |
250 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); | 250 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); |
251 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); | 251 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); |
252 } | 252 } |
253 | 253 |
254 TEST_F(UserPolicyCacheTest, LoadWithData) { | 254 TEST_F(UserPolicyCacheTest, LoadWithData) { |
255 scoped_ptr<em::PolicyFetchResponse> policy( | 255 scoped_ptr<em::PolicyFetchResponse> policy( |
256 CreateHomepagePolicy("http://www.example.com", | 256 CreateHomepagePolicy("http://www.example.com", |
257 base::Time::NowFromSystemTime(), | 257 base::Time::NowFromSystemTime(), |
258 em::PolicyOptions::MANDATORY)); | 258 em::PolicyOptions::MANDATORY)); |
259 WritePolicy(*policy); | 259 WritePolicy(*policy); |
260 UserPolicyCache cache(test_file()); | 260 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
261 cache.Load(); | 261 cache.Load(); |
262 loop_.RunAllPending(); | 262 loop_.RunAllPending(); |
263 PolicyMap expected; | 263 PolicyMap expected; |
264 expected.Set(kPolicyHomepageLocation, | 264 expected.Set(kPolicyHomepageLocation, |
265 Value::CreateStringValue("http://www.example.com")); | 265 Value::CreateStringValue("http://www.example.com")); |
266 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); | 266 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); |
267 } | 267 } |
268 | 268 |
269 TEST_F(UserPolicyCacheTest, SetPolicy) { | 269 TEST_F(UserPolicyCacheTest, SetPolicy) { |
270 UserPolicyCache cache(test_file()); | 270 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
271 em::PolicyFetchResponse* policy = | 271 em::PolicyFetchResponse* policy = |
272 CreateHomepagePolicy("http://www.example.com", | 272 CreateHomepagePolicy("http://www.example.com", |
273 base::Time::NowFromSystemTime(), | 273 base::Time::NowFromSystemTime(), |
274 em::PolicyOptions::MANDATORY); | 274 em::PolicyOptions::MANDATORY); |
275 SetPolicy(&cache, policy); | 275 SetPolicy(&cache, policy); |
276 em::PolicyFetchResponse* policy2 = | 276 em::PolicyFetchResponse* policy2 = |
277 CreateHomepagePolicy("http://www.example.com", | 277 CreateHomepagePolicy("http://www.example.com", |
278 base::Time::NowFromSystemTime(), | 278 base::Time::NowFromSystemTime(), |
279 em::PolicyOptions::MANDATORY); | 279 em::PolicyOptions::MANDATORY); |
280 SetPolicy(&cache, policy2); | 280 SetPolicy(&cache, policy2); |
281 PolicyMap expected; | 281 PolicyMap expected; |
282 expected.Set(kPolicyHomepageLocation, | 282 expected.Set(kPolicyHomepageLocation, |
283 Value::CreateStringValue("http://www.example.com")); | 283 Value::CreateStringValue("http://www.example.com")); |
284 PolicyMap empty; | 284 PolicyMap empty; |
285 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); | 285 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); |
286 EXPECT_TRUE(empty.Equals(recommended_policy(cache))); | 286 EXPECT_TRUE(empty.Equals(recommended_policy(cache))); |
287 policy = CreateHomepagePolicy("http://www.example.com", | 287 policy = CreateHomepagePolicy("http://www.example.com", |
288 base::Time::NowFromSystemTime(), | 288 base::Time::NowFromSystemTime(), |
289 em::PolicyOptions::RECOMMENDED); | 289 em::PolicyOptions::RECOMMENDED); |
290 SetPolicy(&cache, policy); | 290 SetPolicy(&cache, policy); |
291 EXPECT_TRUE(expected.Equals(recommended_policy(cache))); | 291 EXPECT_TRUE(expected.Equals(recommended_policy(cache))); |
292 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); | 292 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); |
293 } | 293 } |
294 | 294 |
295 TEST_F(UserPolicyCacheTest, ResetPolicy) { | 295 TEST_F(UserPolicyCacheTest, ResetPolicy) { |
296 UserPolicyCache cache(test_file()); | 296 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
297 | 297 |
298 em::PolicyFetchResponse* policy = | 298 em::PolicyFetchResponse* policy = |
299 CreateHomepagePolicy("http://www.example.com", | 299 CreateHomepagePolicy("http://www.example.com", |
300 base::Time::NowFromSystemTime(), | 300 base::Time::NowFromSystemTime(), |
301 em::PolicyOptions::MANDATORY); | 301 em::PolicyOptions::MANDATORY); |
302 SetPolicy(&cache, policy); | 302 SetPolicy(&cache, policy); |
303 PolicyMap expected; | 303 PolicyMap expected; |
304 expected.Set(kPolicyHomepageLocation, | 304 expected.Set(kPolicyHomepageLocation, |
305 Value::CreateStringValue("http://www.example.com")); | 305 Value::CreateStringValue("http://www.example.com")); |
306 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); | 306 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); |
307 | 307 |
308 em::PolicyFetchResponse* empty_policy = | 308 em::PolicyFetchResponse* empty_policy = |
309 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), | 309 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), |
310 em::PolicyOptions::MANDATORY); | 310 em::PolicyOptions::MANDATORY); |
311 SetPolicy(&cache, empty_policy); | 311 SetPolicy(&cache, empty_policy); |
312 PolicyMap empty; | 312 PolicyMap empty; |
313 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); | 313 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); |
314 } | 314 } |
315 | 315 |
316 TEST_F(UserPolicyCacheTest, PersistPolicy) { | 316 TEST_F(UserPolicyCacheTest, PersistPolicy) { |
317 { | 317 { |
318 UserPolicyCache cache(test_file()); | 318 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
319 scoped_ptr<em::PolicyFetchResponse> policy( | 319 scoped_ptr<em::PolicyFetchResponse> policy( |
320 CreateHomepagePolicy("http://www.example.com", | 320 CreateHomepagePolicy("http://www.example.com", |
321 base::Time::NowFromSystemTime(), | 321 base::Time::NowFromSystemTime(), |
322 em::PolicyOptions::MANDATORY)); | 322 em::PolicyOptions::MANDATORY)); |
323 cache.SetPolicy(*policy); | 323 cache.SetPolicy(*policy); |
324 } | 324 } |
325 | 325 |
326 loop_.RunAllPending(); | 326 loop_.RunAllPending(); |
327 | 327 |
328 EXPECT_TRUE(file_util::PathExists(test_file())); | 328 EXPECT_TRUE(file_util::PathExists(test_file())); |
329 UserPolicyCache cache(test_file()); | 329 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
330 cache.Load(); | 330 cache.Load(); |
331 loop_.RunAllPending(); | 331 loop_.RunAllPending(); |
332 PolicyMap expected; | 332 PolicyMap expected; |
333 expected.Set(kPolicyHomepageLocation, | 333 expected.Set(kPolicyHomepageLocation, |
334 Value::CreateStringValue("http://www.example.com")); | 334 Value::CreateStringValue("http://www.example.com")); |
335 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); | 335 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); |
336 } | 336 } |
337 | 337 |
338 TEST_F(UserPolicyCacheTest, FreshPolicyOverride) { | 338 TEST_F(UserPolicyCacheTest, FreshPolicyOverride) { |
339 scoped_ptr<em::PolicyFetchResponse> policy( | 339 scoped_ptr<em::PolicyFetchResponse> policy( |
340 CreateHomepagePolicy("http://www.example.com", | 340 CreateHomepagePolicy("http://www.example.com", |
341 base::Time::NowFromSystemTime(), | 341 base::Time::NowFromSystemTime(), |
342 em::PolicyOptions::MANDATORY)); | 342 em::PolicyOptions::MANDATORY)); |
343 WritePolicy(*policy); | 343 WritePolicy(*policy); |
344 | 344 |
345 UserPolicyCache cache(test_file()); | 345 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
346 em::PolicyFetchResponse* updated_policy = | 346 em::PolicyFetchResponse* updated_policy = |
347 CreateHomepagePolicy("http://www.chromium.org", | 347 CreateHomepagePolicy("http://www.chromium.org", |
348 base::Time::NowFromSystemTime(), | 348 base::Time::NowFromSystemTime(), |
349 em::PolicyOptions::MANDATORY); | 349 em::PolicyOptions::MANDATORY); |
350 SetPolicy(&cache, updated_policy); | 350 SetPolicy(&cache, updated_policy); |
351 | 351 |
352 cache.Load(); | 352 cache.Load(); |
353 loop_.RunAllPending(); | 353 loop_.RunAllPending(); |
354 PolicyMap expected; | 354 PolicyMap expected; |
355 expected.Set(kPolicyHomepageLocation, | 355 expected.Set(kPolicyHomepageLocation, |
356 Value::CreateStringValue("http://www.chromium.org")); | 356 Value::CreateStringValue("http://www.chromium.org")); |
357 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); | 357 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); |
358 } | 358 } |
359 | 359 |
360 TEST_F(UserPolicyCacheTest, SetReady) { | 360 TEST_F(UserPolicyCacheTest, SetReady) { |
361 UserPolicyCache cache(test_file()); | 361 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
362 cache.AddObserver(&observer); | 362 cache.AddObserver(&observer); |
363 scoped_ptr<em::PolicyFetchResponse> policy( | 363 scoped_ptr<em::PolicyFetchResponse> policy( |
364 CreateHomepagePolicy("http://www.example.com", | 364 CreateHomepagePolicy("http://www.example.com", |
365 base::Time::NowFromSystemTime(), | 365 base::Time::NowFromSystemTime(), |
366 em::PolicyOptions::MANDATORY)); | 366 em::PolicyOptions::MANDATORY)); |
367 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(0); | 367 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(0); |
368 cache.SetPolicy(*policy); | 368 cache.SetPolicy(*policy); |
369 testing::Mock::VerifyAndClearExpectations(&observer); | 369 testing::Mock::VerifyAndClearExpectations(&observer); |
370 | 370 |
371 // Switching the cache to ready should send a notification. | 371 // Switching the cache to ready should send a notification. |
372 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(1); | 372 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(1); |
373 SetReady(&cache); | 373 SetReady(&cache); |
374 cache.RemoveObserver(&observer); | 374 cache.RemoveObserver(&observer); |
375 } | 375 } |
376 | 376 |
377 // Test case for the temporary support for GenericNamedValues in the | 377 // Test case for the temporary support for GenericNamedValues in the |
378 // CloudPolicySettings protobuf. Can be removed when this support is no longer | 378 // CloudPolicySettings protobuf. Can be removed when this support is no longer |
379 // required. | 379 // required. |
380 TEST_F(UserPolicyCacheTest, OldStylePolicy) { | 380 TEST_F(UserPolicyCacheTest, OldStylePolicy) { |
381 UserPolicyCache cache(test_file()); | 381 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
Mattias Nissler (ping if slow)
2011/11/11 11:41:23
It might be good to also have a test that passes t
Joao da Silva
2011/11/11 12:55:14
Done.
| |
382 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse(); | 382 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse(); |
383 em::PolicyData signed_response; | 383 em::PolicyData signed_response; |
384 em::LegacyChromeSettingsProto settings; | 384 em::LegacyChromeSettingsProto settings; |
385 em::GenericNamedValue* named_value = settings.add_named_value(); | 385 em::GenericNamedValue* named_value = settings.add_named_value(); |
386 named_value->set_name("HomepageLocation"); | 386 named_value->set_name("HomepageLocation"); |
387 em::GenericValue* value_container = named_value->mutable_value(); | 387 em::GenericValue* value_container = named_value->mutable_value(); |
388 value_container->set_value_type(em::GenericValue::VALUE_TYPE_STRING); | 388 value_container->set_value_type(em::GenericValue::VALUE_TYPE_STRING); |
389 value_container->set_string_value("http://www.example.com"); | 389 value_container->set_string_value("http://www.example.com"); |
390 EXPECT_TRUE( | 390 EXPECT_TRUE( |
391 settings.SerializeToString(signed_response.mutable_policy_value())); | 391 settings.SerializeToString(signed_response.mutable_policy_value())); |
(...skipping 13 matching lines...) Expand all Loading... | |
405 // If new-style policy comes in, it should override old-style policy. | 405 // If new-style policy comes in, it should override old-style policy. |
406 policy = CreateHomepagePolicy("http://www.example.com", | 406 policy = CreateHomepagePolicy("http://www.example.com", |
407 base::Time::NowFromSystemTime(), | 407 base::Time::NowFromSystemTime(), |
408 em::PolicyOptions::RECOMMENDED); | 408 em::PolicyOptions::RECOMMENDED); |
409 SetPolicy(&cache, policy); | 409 SetPolicy(&cache, policy); |
410 EXPECT_TRUE(expected.Equals(recommended_policy(cache))); | 410 EXPECT_TRUE(expected.Equals(recommended_policy(cache))); |
411 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); | 411 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); |
412 } | 412 } |
413 | 413 |
414 } // namespace policy | 414 } // namespace policy |
OLD | NEW |