| 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/cloud_policy_cache.h" | 5 #include "chrome/browser/policy/cloud_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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 cached_policy.mutable_cloud_policy()->CopyFrom(policy); | 75 cached_policy.mutable_cloud_policy()->CopyFrom(policy); |
| 76 EXPECT_TRUE(cached_policy.SerializeToString(&data)); | 76 EXPECT_TRUE(cached_policy.SerializeToString(&data)); |
| 77 int size = static_cast<int>(data.size()); | 77 int size = static_cast<int>(data.size()); |
| 78 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); | 78 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); |
| 79 } | 79 } |
| 80 | 80 |
| 81 FilePath test_file() { | 81 FilePath test_file() { |
| 82 return temp_dir_.path().AppendASCII("CloudPolicyCacheTest"); | 82 return temp_dir_.path().AppendASCII("CloudPolicyCacheTest"); |
| 83 } | 83 } |
| 84 | 84 |
| 85 const PolicyMapType& mandatory_policy(const CloudPolicyCache& cache) { |
| 86 return cache.mandatory_policy_; |
| 87 } |
| 88 |
| 89 const PolicyMapType& recommended_policy(const CloudPolicyCache& cache) { |
| 90 return cache.recommended_policy_; |
| 91 } |
| 92 |
| 85 bool Equals(const PolicyMapType& a, const PolicyMapType& b) const { | 93 bool Equals(const PolicyMapType& a, const PolicyMapType& b) const { |
| 86 return CloudPolicyCache::Equals(a, b); | 94 return CloudPolicyCache::Equals(a, b); |
| 87 } | 95 } |
| 88 | 96 |
| 89 MessageLoop loop_; | 97 MessageLoop loop_; |
| 90 | 98 |
| 91 private: | 99 private: |
| 92 ScopedTempDir temp_dir_; | 100 ScopedTempDir temp_dir_; |
| 93 BrowserThread ui_thread_; | 101 BrowserThread ui_thread_; |
| 94 BrowserThread file_thread_; | 102 BrowserThread file_thread_; |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); | 183 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); |
| 176 ListValue expected; | 184 ListValue expected; |
| 177 expected.Append(Value::CreateStringValue("ponies")); | 185 expected.Append(Value::CreateStringValue("ponies")); |
| 178 expected.Append(Value::CreateStringValue("more ponies")); | 186 expected.Append(Value::CreateStringValue("more ponies")); |
| 179 EXPECT_TRUE(decoded->Equals(&expected)); | 187 EXPECT_TRUE(decoded->Equals(&expected)); |
| 180 } | 188 } |
| 181 | 189 |
| 182 TEST_F(CloudPolicyCacheTest, Empty) { | 190 TEST_F(CloudPolicyCacheTest, Empty) { |
| 183 CloudPolicyCache cache(test_file()); | 191 CloudPolicyCache cache(test_file()); |
| 184 PolicyMapType empty; | 192 PolicyMapType empty; |
| 185 EXPECT_TRUE(Equals(empty, *cache.GetMandatoryPolicy())); | 193 EXPECT_TRUE(Equals(empty, mandatory_policy(cache))); |
| 186 EXPECT_TRUE(Equals(empty, *cache.GetRecommendedPolicy())); | 194 EXPECT_TRUE(Equals(empty, recommended_policy(cache))); |
| 187 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 195 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
| 188 } | 196 } |
| 189 | 197 |
| 190 TEST_F(CloudPolicyCacheTest, LoadNoFile) { | 198 TEST_F(CloudPolicyCacheTest, LoadNoFile) { |
| 191 CloudPolicyCache cache(test_file()); | 199 CloudPolicyCache cache(test_file()); |
| 192 cache.LoadPolicyFromFile(); | 200 cache.LoadFromFile(); |
| 193 PolicyMapType empty; | 201 PolicyMapType empty; |
| 194 EXPECT_TRUE(Equals(empty, *cache.GetMandatoryPolicy())); | 202 EXPECT_TRUE(Equals(empty, mandatory_policy(cache))); |
| 195 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 203 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
| 196 } | 204 } |
| 197 | 205 |
| 198 TEST_F(CloudPolicyCacheTest, RejectFuture) { | 206 TEST_F(CloudPolicyCacheTest, RejectFuture) { |
| 199 scoped_ptr<em::CloudPolicyResponse> policy_response( | 207 scoped_ptr<em::CloudPolicyResponse> policy_response( |
| 200 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + | 208 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + |
| 201 base::TimeDelta::FromMinutes(5), | 209 base::TimeDelta::FromMinutes(5), |
| 202 em::PolicyOptions::MANDATORY)); | 210 em::PolicyOptions::MANDATORY)); |
| 203 WritePolicy(*policy_response); | 211 WritePolicy(*policy_response); |
| 204 CloudPolicyCache cache(test_file()); | 212 CloudPolicyCache cache(test_file()); |
| 205 cache.LoadPolicyFromFile(); | 213 cache.LoadFromFile(); |
| 206 PolicyMapType empty; | 214 PolicyMapType empty; |
| 207 EXPECT_TRUE(Equals(empty, *cache.GetMandatoryPolicy())); | 215 EXPECT_TRUE(Equals(empty, mandatory_policy(cache))); |
| 208 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 216 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
| 209 } | 217 } |
| 210 | 218 |
| 211 TEST_F(CloudPolicyCacheTest, LoadWithFile) { | 219 TEST_F(CloudPolicyCacheTest, LoadWithFile) { |
| 212 scoped_ptr<em::CloudPolicyResponse> policy_response( | 220 scoped_ptr<em::CloudPolicyResponse> policy_response( |
| 213 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), | 221 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), |
| 214 em::PolicyOptions::MANDATORY)); | 222 em::PolicyOptions::MANDATORY)); |
| 215 WritePolicy(*policy_response); | 223 WritePolicy(*policy_response); |
| 216 CloudPolicyCache cache(test_file()); | 224 CloudPolicyCache cache(test_file()); |
| 217 cache.LoadPolicyFromFile(); | 225 cache.LoadFromFile(); |
| 218 PolicyMapType empty; | 226 PolicyMapType empty; |
| 219 EXPECT_TRUE(Equals(empty, *cache.GetMandatoryPolicy())); | 227 EXPECT_TRUE(Equals(empty, mandatory_policy(cache))); |
| 220 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); | 228 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); |
| 221 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); | 229 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); |
| 222 } | 230 } |
| 223 | 231 |
| 224 TEST_F(CloudPolicyCacheTest, LoadWithData) { | 232 TEST_F(CloudPolicyCacheTest, LoadWithData) { |
| 225 scoped_ptr<em::CloudPolicyResponse> policy( | 233 scoped_ptr<em::CloudPolicyResponse> policy( |
| 226 CreateHomepagePolicy("http://www.example.com", | 234 CreateHomepagePolicy("http://www.example.com", |
| 227 base::Time::NowFromSystemTime(), | 235 base::Time::NowFromSystemTime(), |
| 228 em::PolicyOptions::MANDATORY)); | 236 em::PolicyOptions::MANDATORY)); |
| 229 WritePolicy(*policy); | 237 WritePolicy(*policy); |
| 230 CloudPolicyCache cache(test_file()); | 238 CloudPolicyCache cache(test_file()); |
| 231 cache.LoadPolicyFromFile(); | 239 cache.LoadFromFile(); |
| 232 PolicyMapType expected; | 240 PolicyMapType expected; |
| 233 expected.insert( | 241 expected.insert( |
| 234 std::make_pair(kPolicyHomepageLocation, | 242 std::make_pair(kPolicyHomepageLocation, |
| 235 Value::CreateStringValue("http://www.example.com"))); | 243 Value::CreateStringValue("http://www.example.com"))); |
| 236 EXPECT_TRUE(Equals(expected, *cache.GetMandatoryPolicy())); | 244 EXPECT_TRUE(Equals(expected, mandatory_policy(cache))); |
| 237 } | 245 } |
| 238 | 246 |
| 239 TEST_F(CloudPolicyCacheTest, SetPolicy) { | 247 TEST_F(CloudPolicyCacheTest, SetPolicy) { |
| 240 CloudPolicyCache cache(test_file()); | 248 CloudPolicyCache cache(test_file()); |
| 241 scoped_ptr<em::CloudPolicyResponse> policy( | 249 scoped_ptr<em::CloudPolicyResponse> policy( |
| 242 CreateHomepagePolicy("http://www.example.com", | 250 CreateHomepagePolicy("http://www.example.com", |
| 243 base::Time::NowFromSystemTime(), | 251 base::Time::NowFromSystemTime(), |
| 244 em::PolicyOptions::MANDATORY)); | 252 em::PolicyOptions::MANDATORY)); |
| 245 EXPECT_TRUE(cache.SetPolicy(*policy)); | 253 EXPECT_TRUE(cache.SetPolicy(*policy)); |
| 246 scoped_ptr<em::CloudPolicyResponse> policy2( | 254 scoped_ptr<em::CloudPolicyResponse> policy2( |
| 247 CreateHomepagePolicy("http://www.example.com", | 255 CreateHomepagePolicy("http://www.example.com", |
| 248 base::Time::NowFromSystemTime(), | 256 base::Time::NowFromSystemTime(), |
| 249 em::PolicyOptions::MANDATORY)); | 257 em::PolicyOptions::MANDATORY)); |
| 250 EXPECT_FALSE(cache.SetPolicy(*policy2)); | 258 EXPECT_FALSE(cache.SetPolicy(*policy2)); |
| 251 PolicyMapType expected; | 259 PolicyMapType expected; |
| 252 expected.insert( | 260 expected.insert( |
| 253 std::make_pair(kPolicyHomepageLocation, | 261 std::make_pair(kPolicyHomepageLocation, |
| 254 Value::CreateStringValue("http://www.example.com"))); | 262 Value::CreateStringValue("http://www.example.com"))); |
| 255 PolicyMapType empty; | 263 PolicyMapType empty; |
| 256 EXPECT_TRUE(Equals(expected, *cache.GetMandatoryPolicy())); | 264 EXPECT_TRUE(Equals(expected, mandatory_policy(cache))); |
| 257 EXPECT_TRUE(Equals(empty, *cache.GetRecommendedPolicy())); | 265 EXPECT_TRUE(Equals(empty, recommended_policy(cache))); |
| 258 policy.reset(CreateHomepagePolicy("http://www.example.com", | 266 policy.reset(CreateHomepagePolicy("http://www.example.com", |
| 259 base::Time::NowFromSystemTime(), | 267 base::Time::NowFromSystemTime(), |
| 260 em::PolicyOptions::RECOMMENDED)); | 268 em::PolicyOptions::RECOMMENDED)); |
| 261 EXPECT_TRUE(cache.SetPolicy(*policy)); | 269 EXPECT_TRUE(cache.SetPolicy(*policy)); |
| 262 EXPECT_TRUE(Equals(expected, *cache.GetRecommendedPolicy())); | 270 EXPECT_TRUE(Equals(expected, recommended_policy(cache))); |
| 263 EXPECT_TRUE(Equals(empty, *cache.GetMandatoryPolicy())); | 271 EXPECT_TRUE(Equals(empty, mandatory_policy(cache))); |
| 264 } | 272 } |
| 265 | 273 |
| 266 TEST_F(CloudPolicyCacheTest, ResetPolicy) { | 274 TEST_F(CloudPolicyCacheTest, ResetPolicy) { |
| 267 CloudPolicyCache cache(test_file()); | 275 CloudPolicyCache cache(test_file()); |
| 268 | 276 |
| 269 scoped_ptr<em::CloudPolicyResponse> policy( | 277 scoped_ptr<em::CloudPolicyResponse> policy( |
| 270 CreateHomepagePolicy("http://www.example.com", | 278 CreateHomepagePolicy("http://www.example.com", |
| 271 base::Time::NowFromSystemTime(), | 279 base::Time::NowFromSystemTime(), |
| 272 em::PolicyOptions::MANDATORY)); | 280 em::PolicyOptions::MANDATORY)); |
| 273 EXPECT_TRUE(cache.SetPolicy(*policy)); | 281 EXPECT_TRUE(cache.SetPolicy(*policy)); |
| 274 PolicyMapType expected; | 282 PolicyMapType expected; |
| 275 expected.insert( | 283 expected.insert( |
| 276 std::make_pair(kPolicyHomepageLocation, | 284 std::make_pair(kPolicyHomepageLocation, |
| 277 Value::CreateStringValue("http://www.example.com"))); | 285 Value::CreateStringValue("http://www.example.com"))); |
| 278 EXPECT_TRUE(Equals(expected, *cache.GetMandatoryPolicy())); | 286 EXPECT_TRUE(Equals(expected, mandatory_policy(cache))); |
| 279 | 287 |
| 280 scoped_ptr<em::CloudPolicyResponse> empty_policy( | 288 scoped_ptr<em::CloudPolicyResponse> empty_policy( |
| 281 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), | 289 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), |
| 282 em::PolicyOptions::MANDATORY)); | 290 em::PolicyOptions::MANDATORY)); |
| 283 EXPECT_TRUE(cache.SetPolicy(*empty_policy)); | 291 EXPECT_TRUE(cache.SetPolicy(*empty_policy)); |
| 284 PolicyMapType empty; | 292 PolicyMapType empty; |
| 285 EXPECT_TRUE(Equals(empty, *cache.GetMandatoryPolicy())); | 293 EXPECT_TRUE(Equals(empty, mandatory_policy(cache))); |
| 286 } | 294 } |
| 287 | 295 |
| 288 TEST_F(CloudPolicyCacheTest, PersistPolicy) { | 296 TEST_F(CloudPolicyCacheTest, PersistPolicy) { |
| 289 { | 297 { |
| 290 CloudPolicyCache cache(test_file()); | 298 CloudPolicyCache cache(test_file()); |
| 291 scoped_ptr<em::CloudPolicyResponse> policy( | 299 scoped_ptr<em::CloudPolicyResponse> policy( |
| 292 CreateHomepagePolicy("http://www.example.com", | 300 CreateHomepagePolicy("http://www.example.com", |
| 293 base::Time::NowFromSystemTime(), | 301 base::Time::NowFromSystemTime(), |
| 294 em::PolicyOptions::MANDATORY)); | 302 em::PolicyOptions::MANDATORY)); |
| 295 cache.SetPolicy(*policy); | 303 cache.SetPolicy(*policy); |
| 296 } | 304 } |
| 297 | 305 |
| 298 loop_.RunAllPending(); | 306 loop_.RunAllPending(); |
| 299 | 307 |
| 300 EXPECT_TRUE(file_util::PathExists(test_file())); | 308 EXPECT_TRUE(file_util::PathExists(test_file())); |
| 301 CloudPolicyCache cache(test_file()); | 309 CloudPolicyCache cache(test_file()); |
| 302 cache.LoadPolicyFromFile(); | 310 cache.LoadFromFile(); |
| 303 PolicyMapType expected; | 311 PolicyMapType expected; |
| 304 expected.insert( | 312 expected.insert( |
| 305 std::make_pair(kPolicyHomepageLocation, | 313 std::make_pair(kPolicyHomepageLocation, |
| 306 Value::CreateStringValue("http://www.example.com"))); | 314 Value::CreateStringValue("http://www.example.com"))); |
| 307 EXPECT_TRUE(Equals(expected, *cache.GetMandatoryPolicy())); | 315 EXPECT_TRUE(Equals(expected, mandatory_policy(cache))); |
| 308 } | 316 } |
| 309 | 317 |
| 310 TEST_F(CloudPolicyCacheTest, FreshPolicyOverride) { | 318 TEST_F(CloudPolicyCacheTest, FreshPolicyOverride) { |
| 311 scoped_ptr<em::CloudPolicyResponse> policy( | 319 scoped_ptr<em::CloudPolicyResponse> policy( |
| 312 CreateHomepagePolicy("http://www.example.com", | 320 CreateHomepagePolicy("http://www.example.com", |
| 313 base::Time::NowFromSystemTime(), | 321 base::Time::NowFromSystemTime(), |
| 314 em::PolicyOptions::MANDATORY)); | 322 em::PolicyOptions::MANDATORY)); |
| 315 WritePolicy(*policy); | 323 WritePolicy(*policy); |
| 316 | 324 |
| 317 CloudPolicyCache cache(test_file()); | 325 CloudPolicyCache cache(test_file()); |
| 318 scoped_ptr<em::CloudPolicyResponse> updated_policy( | 326 scoped_ptr<em::CloudPolicyResponse> updated_policy( |
| 319 CreateHomepagePolicy("http://www.chromium.org", | 327 CreateHomepagePolicy("http://www.chromium.org", |
| 320 base::Time::NowFromSystemTime(), | 328 base::Time::NowFromSystemTime(), |
| 321 em::PolicyOptions::MANDATORY)); | 329 em::PolicyOptions::MANDATORY)); |
| 322 EXPECT_TRUE(cache.SetPolicy(*updated_policy)); | 330 EXPECT_TRUE(cache.SetPolicy(*updated_policy)); |
| 323 | 331 |
| 324 cache.LoadPolicyFromFile(); | 332 cache.LoadFromFile(); |
| 325 PolicyMapType expected; | 333 PolicyMapType expected; |
| 326 expected.insert( | 334 expected.insert( |
| 327 std::make_pair(kPolicyHomepageLocation, | 335 std::make_pair(kPolicyHomepageLocation, |
| 328 Value::CreateStringValue("http://www.chromium.org"))); | 336 Value::CreateStringValue("http://www.chromium.org"))); |
| 329 EXPECT_TRUE(Equals(expected, *cache.GetMandatoryPolicy())); | 337 EXPECT_TRUE(Equals(expected, mandatory_policy(cache))); |
| 330 } | 338 } |
| 331 | 339 |
| 332 } // namespace policy | 340 } // namespace policy |
| OLD | NEW |