Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
|
Mattias Nissler (ping if slow)
2011/02/15 10:15:16
seems like this file should have been removed?
Jakob Kummerow
2011/02/21 12:12:15
Done in the other CL (that this one is based on).
| |
| 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" | |
| 6 | |
| 7 #include <limits> | 5 #include <limits> |
| 8 #include <string> | 6 #include <string> |
| 9 | 7 |
| 10 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 11 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 12 #include "base/scoped_temp_dir.h" | 10 #include "base/scoped_temp_dir.h" |
| 13 #include "base/values.h" | 11 #include "base/values.h" |
| 14 #include "chrome/browser/browser_thread.h" | 12 #include "chrome/browser/browser_thread.h" |
| 13 #include "chrome/browser/policy/cloud_policy_cache.h" | |
| 15 #include "chrome/browser/policy/proto/device_management_constants.h" | 14 #include "chrome/browser/policy/proto/device_management_constants.h" |
| 16 #include "chrome/browser/policy/proto/device_management_local.pb.h" | 15 #include "chrome/browser/policy/proto/device_management_local.pb.h" |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 18 | 17 |
| 19 // This test used to test DeviceManagementPolicyCache. The new CloudPolicyCache | 18 // This test used to test DeviceManagementPolicyCache. The new CloudPolicyCache |
| 20 // supports the old DMPC's interface for now (until it is phased out), so for | 19 // supports the old DMPC's interface for now (until it is phased out), so for |
| 21 // this transitional period, we keep these old test cases but apply them to the | 20 // this transitional period, we keep these old test cases but apply them to the |
| 22 // new implementation (CPC). | 21 // new implementation (CPC). |
| 23 // This file can be removed when support for the old policy protocol is removed | 22 // This file can be removed when support for the old policy protocol is removed |
| 24 // from CPC. The new interface is tested in cloud_policy_cache_unittest.cc. | 23 // from CPC. The new interface is tested in cloud_policy_cache_unittest.cc. |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 68 cached_policy.set_timestamp(timestamp.ToTimeT()); | 67 cached_policy.set_timestamp(timestamp.ToTimeT()); |
| 69 EXPECT_TRUE(cached_policy.SerializeToString(&data)); | 68 EXPECT_TRUE(cached_policy.SerializeToString(&data)); |
| 70 int size = static_cast<int>(data.size()); | 69 int size = static_cast<int>(data.size()); |
| 71 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); | 70 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); |
| 72 } | 71 } |
| 73 | 72 |
| 74 FilePath test_file() { | 73 FilePath test_file() { |
| 75 return temp_dir_.path().AppendASCII("DeviceManagementPolicyCacheTest"); | 74 return temp_dir_.path().AppendASCII("DeviceManagementPolicyCacheTest"); |
| 76 } | 75 } |
| 77 | 76 |
| 78 protected: | 77 const DictionaryValue* device_policy(const CloudPolicyCache& cache) { |
| 78 return cache.device_policy_.get(); | |
| 79 } | |
| 80 | |
| 79 MessageLoop loop_; | 81 MessageLoop loop_; |
| 80 | 82 |
| 81 private: | 83 private: |
| 82 ScopedTempDir temp_dir_; | 84 ScopedTempDir temp_dir_; |
| 83 BrowserThread ui_thread_; | 85 BrowserThread ui_thread_; |
| 84 BrowserThread file_thread_; | 86 BrowserThread file_thread_; |
| 85 }; | 87 }; |
| 86 | 88 |
| 87 TEST_F(DeviceManagementPolicyCacheTest, Empty) { | 89 TEST_F(DeviceManagementPolicyCacheTest, Empty) { |
| 88 CloudPolicyCache cache(test_file()); | 90 CloudPolicyCache cache(test_file()); |
| 89 DictionaryValue empty; | 91 DictionaryValue empty; |
| 90 scoped_ptr<Value> policy(cache.GetDevicePolicy()); | 92 EXPECT_TRUE(empty.Equals(device_policy(cache))); |
| 91 EXPECT_TRUE(empty.Equals(policy.get())); | |
| 92 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 93 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
| 93 } | 94 } |
| 94 | 95 |
| 95 TEST_F(DeviceManagementPolicyCacheTest, LoadNoFile) { | 96 TEST_F(DeviceManagementPolicyCacheTest, LoadNoFile) { |
| 96 CloudPolicyCache cache(test_file()); | 97 CloudPolicyCache cache(test_file()); |
| 97 cache.LoadPolicyFromFile(); | 98 cache.LoadFromFile(); |
| 98 DictionaryValue empty; | 99 DictionaryValue empty; |
| 99 scoped_ptr<Value> policy(cache.GetDevicePolicy()); | 100 EXPECT_TRUE(empty.Equals(device_policy(cache))); |
| 100 EXPECT_TRUE(empty.Equals(policy.get())); | |
| 101 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 101 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
| 102 } | 102 } |
| 103 | 103 |
| 104 TEST_F(DeviceManagementPolicyCacheTest, RejectFuture) { | 104 TEST_F(DeviceManagementPolicyCacheTest, RejectFuture) { |
| 105 em::DevicePolicyResponse policy_response; | 105 em::DevicePolicyResponse policy_response; |
| 106 WritePolicy(policy_response, base::Time::NowFromSystemTime() + | 106 WritePolicy(policy_response, base::Time::NowFromSystemTime() + |
| 107 base::TimeDelta::FromMinutes(5)); | 107 base::TimeDelta::FromMinutes(5)); |
| 108 CloudPolicyCache cache(test_file()); | 108 CloudPolicyCache cache(test_file()); |
| 109 cache.LoadPolicyFromFile(); | 109 cache.LoadFromFile(); |
| 110 DictionaryValue empty; | 110 DictionaryValue empty; |
| 111 scoped_ptr<Value> policy(cache.GetDevicePolicy()); | 111 EXPECT_TRUE(empty.Equals(device_policy(cache))); |
| 112 EXPECT_TRUE(empty.Equals(policy.get())); | |
| 113 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 112 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
| 114 } | 113 } |
| 115 | 114 |
| 116 TEST_F(DeviceManagementPolicyCacheTest, LoadWithFile) { | 115 TEST_F(DeviceManagementPolicyCacheTest, LoadWithFile) { |
| 117 em::DevicePolicyResponse policy_response; | 116 em::DevicePolicyResponse policy_response; |
| 118 WritePolicy(policy_response, base::Time::NowFromSystemTime()); | 117 WritePolicy(policy_response, base::Time::NowFromSystemTime()); |
| 119 CloudPolicyCache cache(test_file()); | 118 CloudPolicyCache cache(test_file()); |
| 120 cache.LoadPolicyFromFile(); | 119 cache.LoadFromFile(); |
| 121 DictionaryValue empty; | 120 DictionaryValue empty; |
| 122 scoped_ptr<Value> policy(cache.GetDevicePolicy()); | 121 EXPECT_TRUE(empty.Equals(device_policy(cache))); |
| 123 EXPECT_TRUE(empty.Equals(policy.get())); | |
| 124 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); | 122 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); |
| 125 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); | 123 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); |
| 126 } | 124 } |
| 127 | 125 |
| 128 TEST_F(DeviceManagementPolicyCacheTest, LoadWithData) { | 126 TEST_F(DeviceManagementPolicyCacheTest, LoadWithData) { |
| 129 em::DevicePolicyResponse policy; | 127 em::DevicePolicyResponse policy; |
| 130 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 128 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
| 131 WritePolicy(policy, base::Time::NowFromSystemTime()); | 129 WritePolicy(policy, base::Time::NowFromSystemTime()); |
| 132 CloudPolicyCache cache(test_file()); | 130 CloudPolicyCache cache(test_file()); |
| 133 cache.LoadPolicyFromFile(); | 131 cache.LoadFromFile(); |
| 134 DictionaryValue expected; | 132 DictionaryValue expected; |
| 135 expected.Set("HomepageLocation", | 133 expected.Set("HomepageLocation", |
| 136 Value::CreateStringValue("http://www.example.com")); | 134 Value::CreateStringValue("http://www.example.com")); |
| 137 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); | 135 EXPECT_TRUE(expected.Equals(device_policy(cache))); |
| 138 EXPECT_TRUE(expected.Equals(policy_value.get())); | |
| 139 } | 136 } |
| 140 | 137 |
| 141 TEST_F(DeviceManagementPolicyCacheTest, SetDevicePolicy) { | 138 TEST_F(DeviceManagementPolicyCacheTest, SetDevicePolicy) { |
| 142 CloudPolicyCache cache(test_file()); | 139 CloudPolicyCache cache(test_file()); |
| 143 em::DevicePolicyResponse policy; | 140 em::DevicePolicyResponse policy; |
| 144 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 141 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
| 145 EXPECT_TRUE(cache.SetDevicePolicy(policy)); | 142 EXPECT_TRUE(cache.SetDevicePolicy(policy)); |
| 146 em::DevicePolicyResponse policy2; | 143 em::DevicePolicyResponse policy2; |
| 147 AddStringPolicy(&policy2, "HomepageLocation", "http://www.example.com"); | 144 AddStringPolicy(&policy2, "HomepageLocation", "http://www.example.com"); |
| 148 EXPECT_FALSE(cache.SetDevicePolicy(policy2)); | 145 EXPECT_FALSE(cache.SetDevicePolicy(policy2)); |
| 149 DictionaryValue expected; | 146 DictionaryValue expected; |
| 150 expected.Set("HomepageLocation", | 147 expected.Set("HomepageLocation", |
| 151 Value::CreateStringValue("http://www.example.com")); | 148 Value::CreateStringValue("http://www.example.com")); |
| 152 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); | 149 EXPECT_TRUE(expected.Equals(device_policy(cache))); |
| 153 EXPECT_TRUE(expected.Equals(policy_value.get())); | |
| 154 } | 150 } |
| 155 | 151 |
| 156 TEST_F(DeviceManagementPolicyCacheTest, ResetPolicy) { | 152 TEST_F(DeviceManagementPolicyCacheTest, ResetPolicy) { |
| 157 CloudPolicyCache cache(test_file()); | 153 CloudPolicyCache cache(test_file()); |
| 158 | 154 |
| 159 em::DevicePolicyResponse policy; | 155 em::DevicePolicyResponse policy; |
| 160 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 156 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
| 161 EXPECT_TRUE(cache.SetDevicePolicy(policy)); | 157 EXPECT_TRUE(cache.SetDevicePolicy(policy)); |
| 162 DictionaryValue expected; | 158 DictionaryValue expected; |
| 163 expected.Set("HomepageLocation", | 159 expected.Set("HomepageLocation", |
| 164 Value::CreateStringValue("http://www.example.com")); | 160 Value::CreateStringValue("http://www.example.com")); |
| 165 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); | 161 EXPECT_TRUE(expected.Equals(device_policy(cache))); |
| 166 EXPECT_TRUE(expected.Equals(policy_value.get())); | |
| 167 | 162 |
| 168 EXPECT_TRUE(cache.SetDevicePolicy(em::DevicePolicyResponse())); | 163 EXPECT_TRUE(cache.SetDevicePolicy(em::DevicePolicyResponse())); |
| 169 policy_value.reset(cache.GetDevicePolicy()); | |
| 170 DictionaryValue empty; | 164 DictionaryValue empty; |
| 171 EXPECT_TRUE(empty.Equals(policy_value.get())); | 165 EXPECT_TRUE(empty.Equals(device_policy(cache))); |
| 172 } | 166 } |
| 173 | 167 |
| 174 TEST_F(DeviceManagementPolicyCacheTest, PersistPolicy) { | 168 TEST_F(DeviceManagementPolicyCacheTest, PersistPolicy) { |
| 175 { | 169 { |
| 176 CloudPolicyCache cache(test_file()); | 170 CloudPolicyCache cache(test_file()); |
| 177 em::DevicePolicyResponse policy; | 171 em::DevicePolicyResponse policy; |
| 178 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 172 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
| 179 cache.SetDevicePolicy(policy); | 173 cache.SetDevicePolicy(policy); |
| 180 } | 174 } |
| 181 | 175 |
| 182 loop_.RunAllPending(); | 176 loop_.RunAllPending(); |
| 183 | 177 |
| 184 EXPECT_TRUE(file_util::PathExists(test_file())); | 178 EXPECT_TRUE(file_util::PathExists(test_file())); |
| 185 CloudPolicyCache cache(test_file()); | 179 CloudPolicyCache cache(test_file()); |
| 186 cache.LoadPolicyFromFile(); | 180 cache.LoadFromFile(); |
| 187 DictionaryValue expected; | 181 DictionaryValue expected; |
| 188 expected.Set("HomepageLocation", | 182 expected.Set("HomepageLocation", |
| 189 Value::CreateStringValue("http://www.example.com")); | 183 Value::CreateStringValue("http://www.example.com")); |
| 190 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); | 184 EXPECT_TRUE(expected.Equals(device_policy(cache))); |
| 191 EXPECT_TRUE(expected.Equals(policy_value.get())); | |
| 192 } | 185 } |
| 193 | 186 |
| 194 TEST_F(DeviceManagementPolicyCacheTest, FreshPolicyOverride) { | 187 TEST_F(DeviceManagementPolicyCacheTest, FreshPolicyOverride) { |
| 195 em::DevicePolicyResponse policy; | 188 em::DevicePolicyResponse policy; |
| 196 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 189 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
| 197 WritePolicy(policy, base::Time::NowFromSystemTime()); | 190 WritePolicy(policy, base::Time::NowFromSystemTime()); |
| 198 | 191 |
| 199 CloudPolicyCache cache(test_file()); | 192 CloudPolicyCache cache(test_file()); |
| 200 em::DevicePolicyResponse updated_policy; | 193 em::DevicePolicyResponse updated_policy; |
| 201 AddStringPolicy(&updated_policy, "HomepageLocation", | 194 AddStringPolicy(&updated_policy, "HomepageLocation", |
| 202 "http://www.chromium.org"); | 195 "http://www.chromium.org"); |
| 203 EXPECT_TRUE(cache.SetDevicePolicy(updated_policy)); | 196 EXPECT_TRUE(cache.SetDevicePolicy(updated_policy)); |
| 204 | 197 |
| 205 cache.LoadPolicyFromFile(); | 198 cache.LoadFromFile(); |
| 206 DictionaryValue expected; | 199 DictionaryValue expected; |
| 207 expected.Set("HomepageLocation", | 200 expected.Set("HomepageLocation", |
| 208 Value::CreateStringValue("http://www.chromium.org")); | 201 Value::CreateStringValue("http://www.chromium.org")); |
| 209 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); | 202 EXPECT_TRUE(expected.Equals(device_policy(cache))); |
| 210 EXPECT_TRUE(expected.Equals(policy_value.get())); | |
| 211 } | 203 } |
| 212 | 204 |
| 213 // Tests proper decoding of policy values. | 205 // Tests proper decoding of policy values. |
| 214 class DeviceManagementPolicyCacheDecodeTest | 206 class DeviceManagementPolicyCacheDecodeTest |
| 215 : public DeviceManagementPolicyCacheTestBase { | 207 : public DeviceManagementPolicyCacheTestBase { |
| 216 protected: | 208 protected: |
| 217 void DecodeAndCheck(Value* expected_value_ptr) { | 209 void DecodeAndCheck(Value* expected_value_ptr) { |
| 218 scoped_ptr<Value> expected_value(expected_value_ptr); | 210 scoped_ptr<Value> expected_value(expected_value_ptr); |
| 219 scoped_ptr<Value> decoded_value( | 211 scoped_ptr<Value> decoded_value( |
| 220 CloudPolicyCache::DecodeValue(value_)); | 212 CloudPolicyCache::DecodeValue(value_)); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 323 em::DevicePolicyResponse policy; | 315 em::DevicePolicyResponse policy; |
| 324 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 316 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
| 325 scoped_ptr<Value> decoded(DecodeDevicePolicy(policy)); | 317 scoped_ptr<Value> decoded(DecodeDevicePolicy(policy)); |
| 326 DictionaryValue expected; | 318 DictionaryValue expected; |
| 327 expected.Set("HomepageLocation", | 319 expected.Set("HomepageLocation", |
| 328 Value::CreateStringValue("http://www.example.com")); | 320 Value::CreateStringValue("http://www.example.com")); |
| 329 EXPECT_TRUE(expected.Equals(decoded.get())); | 321 EXPECT_TRUE(expected.Equals(decoded.get())); |
| 330 } | 322 } |
| 331 | 323 |
| 332 } // namespace policy | 324 } // namespace policy |
| OLD | NEW |