OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/device_management_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" |
11 #include "base/message_loop.h" | 11 #include "base/message_loop.h" |
12 #include "base/scoped_temp_dir.h" | 12 #include "base/scoped_temp_dir.h" |
13 #include "base/values.h" | 13 #include "base/values.h" |
14 #include "chrome/browser/browser_thread.h" | 14 #include "chrome/browser/browser_thread.h" |
15 #include "chrome/browser/policy/proto/device_management_constants.h" | 15 #include "chrome/browser/policy/proto/device_management_constants.h" |
16 #include "chrome/browser/policy/proto/device_management_local.pb.h" | 16 #include "chrome/browser/policy/proto/device_management_local.pb.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
18 | 18 |
19 // 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 | |
21 // this transitional period, we keep these old test cases but apply them to the | |
22 // new implementation (CPC). | |
23 // 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. | |
Mattias Nissler (ping if slow)
2011/02/15 10:46:39
Ah, the tests are here. Can we just move this code
Jakob Kummerow
2011/02/15 14:22:00
Well, it was only supposed to be a temporary solut
| |
25 | |
19 namespace policy { | 26 namespace policy { |
20 | 27 |
21 // Wraps base functionaly for the test cases. | 28 // Wraps base functionaly for the test cases. |
22 class DeviceManagementPolicyCacheTestBase : public testing::Test { | 29 class DeviceManagementPolicyCacheTestBase : public testing::Test { |
23 protected: | 30 protected: |
24 // Add a string policy setting to a policy response message. | 31 // Add a string policy setting to a policy response message. |
25 void AddStringPolicy(em::DevicePolicyResponse* policy, | 32 void AddStringPolicy(em::DevicePolicyResponse* policy, |
26 const std::string& name, | 33 const std::string& name, |
27 const std::string& value) { | 34 const std::string& value) { |
28 em::DevicePolicySetting* setting = policy->add_setting(); | 35 em::DevicePolicySetting* setting = policy->add_setting(); |
(...skipping 20 matching lines...) Expand all Loading... | |
49 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 56 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
50 } | 57 } |
51 | 58 |
52 void TearDown() { | 59 void TearDown() { |
53 loop_.RunAllPending(); | 60 loop_.RunAllPending(); |
54 } | 61 } |
55 | 62 |
56 void WritePolicy(const em::DevicePolicyResponse& policy, | 63 void WritePolicy(const em::DevicePolicyResponse& policy, |
57 const base::Time& timestamp) { | 64 const base::Time& timestamp) { |
58 std::string data; | 65 std::string data; |
59 em::CachedDevicePolicyResponse cached_policy; | 66 em::CachedCloudPolicyResponse cached_policy; |
60 cached_policy.mutable_policy()->CopyFrom(policy); | 67 cached_policy.mutable_device_policy()->CopyFrom(policy); |
61 cached_policy.set_timestamp(timestamp.ToInternalValue()); | 68 cached_policy.set_timestamp(timestamp.ToTimeT()); |
62 EXPECT_TRUE(cached_policy.SerializeToString(&data)); | 69 EXPECT_TRUE(cached_policy.SerializeToString(&data)); |
63 int size = static_cast<int>(data.size()); | 70 int size = static_cast<int>(data.size()); |
64 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); | 71 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); |
65 } | 72 } |
66 | 73 |
67 FilePath test_file() { | 74 FilePath test_file() { |
68 return temp_dir_.path().AppendASCII("DeviceManagementPolicyCacheTest"); | 75 return temp_dir_.path().AppendASCII("DeviceManagementPolicyCacheTest"); |
69 } | 76 } |
70 | 77 |
71 protected: | 78 protected: |
72 MessageLoop loop_; | 79 MessageLoop loop_; |
73 | 80 |
74 private: | 81 private: |
75 ScopedTempDir temp_dir_; | 82 ScopedTempDir temp_dir_; |
76 BrowserThread ui_thread_; | 83 BrowserThread ui_thread_; |
77 BrowserThread file_thread_; | 84 BrowserThread file_thread_; |
78 }; | 85 }; |
79 | 86 |
80 TEST_F(DeviceManagementPolicyCacheTest, Empty) { | 87 TEST_F(DeviceManagementPolicyCacheTest, Empty) { |
81 DeviceManagementPolicyCache cache(test_file()); | 88 CloudPolicyCache cache(test_file()); |
82 DictionaryValue empty; | 89 DictionaryValue empty; |
83 scoped_ptr<Value> policy(cache.GetPolicy()); | 90 scoped_ptr<Value> policy(cache.GetDevicePolicy()); |
84 EXPECT_TRUE(empty.Equals(policy.get())); | 91 EXPECT_TRUE(empty.Equals(policy.get())); |
85 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 92 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
86 } | 93 } |
87 | 94 |
88 TEST_F(DeviceManagementPolicyCacheTest, LoadNoFile) { | 95 TEST_F(DeviceManagementPolicyCacheTest, LoadNoFile) { |
89 DeviceManagementPolicyCache cache(test_file()); | 96 CloudPolicyCache cache(test_file()); |
90 cache.LoadPolicyFromFile(); | 97 cache.LoadPolicyFromFile(); |
91 DictionaryValue empty; | 98 DictionaryValue empty; |
92 scoped_ptr<Value> policy(cache.GetPolicy()); | 99 scoped_ptr<Value> policy(cache.GetDevicePolicy()); |
93 EXPECT_TRUE(empty.Equals(policy.get())); | 100 EXPECT_TRUE(empty.Equals(policy.get())); |
94 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 101 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
95 } | 102 } |
96 | 103 |
97 TEST_F(DeviceManagementPolicyCacheTest, RejectFuture) { | 104 TEST_F(DeviceManagementPolicyCacheTest, RejectFuture) { |
98 em::DevicePolicyResponse policy_response; | 105 em::DevicePolicyResponse policy_response; |
99 WritePolicy(policy_response, base::Time::NowFromSystemTime() + | 106 WritePolicy(policy_response, base::Time::NowFromSystemTime() + |
100 base::TimeDelta::FromMinutes(5)); | 107 base::TimeDelta::FromMinutes(5)); |
101 DeviceManagementPolicyCache cache(test_file()); | 108 CloudPolicyCache cache(test_file()); |
102 cache.LoadPolicyFromFile(); | 109 cache.LoadPolicyFromFile(); |
103 DictionaryValue empty; | 110 DictionaryValue empty; |
104 scoped_ptr<Value> policy(cache.GetPolicy()); | 111 scoped_ptr<Value> policy(cache.GetDevicePolicy()); |
105 EXPECT_TRUE(empty.Equals(policy.get())); | 112 EXPECT_TRUE(empty.Equals(policy.get())); |
106 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 113 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
107 } | 114 } |
108 | 115 |
109 TEST_F(DeviceManagementPolicyCacheTest, LoadWithFile) { | 116 TEST_F(DeviceManagementPolicyCacheTest, LoadWithFile) { |
110 em::DevicePolicyResponse policy_response; | 117 em::DevicePolicyResponse policy_response; |
111 WritePolicy(policy_response, base::Time::NowFromSystemTime()); | 118 WritePolicy(policy_response, base::Time::NowFromSystemTime()); |
112 DeviceManagementPolicyCache cache(test_file()); | 119 CloudPolicyCache cache(test_file()); |
113 cache.LoadPolicyFromFile(); | 120 cache.LoadPolicyFromFile(); |
114 DictionaryValue empty; | 121 DictionaryValue empty; |
115 scoped_ptr<Value> policy(cache.GetPolicy()); | 122 scoped_ptr<Value> policy(cache.GetDevicePolicy()); |
116 EXPECT_TRUE(empty.Equals(policy.get())); | 123 EXPECT_TRUE(empty.Equals(policy.get())); |
117 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); | 124 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); |
118 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); | 125 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); |
119 } | 126 } |
120 | 127 |
121 TEST_F(DeviceManagementPolicyCacheTest, LoadWithData) { | 128 TEST_F(DeviceManagementPolicyCacheTest, LoadWithData) { |
122 em::DevicePolicyResponse policy; | 129 em::DevicePolicyResponse policy; |
123 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 130 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
124 WritePolicy(policy, base::Time::NowFromSystemTime()); | 131 WritePolicy(policy, base::Time::NowFromSystemTime()); |
125 DeviceManagementPolicyCache cache(test_file()); | 132 CloudPolicyCache cache(test_file()); |
126 cache.LoadPolicyFromFile(); | 133 cache.LoadPolicyFromFile(); |
127 DictionaryValue expected; | 134 DictionaryValue expected; |
128 expected.Set("HomepageLocation", | 135 expected.Set("HomepageLocation", |
129 Value::CreateStringValue("http://www.example.com")); | 136 Value::CreateStringValue("http://www.example.com")); |
130 scoped_ptr<Value> policy_value(cache.GetPolicy()); | 137 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); |
131 EXPECT_TRUE(expected.Equals(policy_value.get())); | 138 EXPECT_TRUE(expected.Equals(policy_value.get())); |
132 } | 139 } |
133 | 140 |
134 TEST_F(DeviceManagementPolicyCacheTest, SetPolicy) { | 141 TEST_F(DeviceManagementPolicyCacheTest, SetDevicePolicy) { |
135 DeviceManagementPolicyCache cache(test_file()); | 142 CloudPolicyCache cache(test_file()); |
136 em::DevicePolicyResponse policy; | 143 em::DevicePolicyResponse policy; |
137 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 144 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
138 EXPECT_TRUE(cache.SetPolicy(policy)); | 145 EXPECT_TRUE(cache.SetDevicePolicy(policy)); |
139 em::DevicePolicyResponse policy2; | 146 em::DevicePolicyResponse policy2; |
140 AddStringPolicy(&policy2, "HomepageLocation", "http://www.example.com"); | 147 AddStringPolicy(&policy2, "HomepageLocation", "http://www.example.com"); |
141 EXPECT_FALSE(cache.SetPolicy(policy2)); | 148 EXPECT_FALSE(cache.SetDevicePolicy(policy2)); |
142 DictionaryValue expected; | 149 DictionaryValue expected; |
143 expected.Set("HomepageLocation", | 150 expected.Set("HomepageLocation", |
144 Value::CreateStringValue("http://www.example.com")); | 151 Value::CreateStringValue("http://www.example.com")); |
145 scoped_ptr<Value> policy_value(cache.GetPolicy()); | 152 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); |
146 EXPECT_TRUE(expected.Equals(policy_value.get())); | 153 EXPECT_TRUE(expected.Equals(policy_value.get())); |
147 } | 154 } |
148 | 155 |
149 TEST_F(DeviceManagementPolicyCacheTest, ResetPolicy) { | 156 TEST_F(DeviceManagementPolicyCacheTest, ResetPolicy) { |
150 DeviceManagementPolicyCache cache(test_file()); | 157 CloudPolicyCache cache(test_file()); |
151 | 158 |
152 em::DevicePolicyResponse policy; | 159 em::DevicePolicyResponse policy; |
153 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 160 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
154 EXPECT_TRUE(cache.SetPolicy(policy)); | 161 EXPECT_TRUE(cache.SetDevicePolicy(policy)); |
155 DictionaryValue expected; | 162 DictionaryValue expected; |
156 expected.Set("HomepageLocation", | 163 expected.Set("HomepageLocation", |
157 Value::CreateStringValue("http://www.example.com")); | 164 Value::CreateStringValue("http://www.example.com")); |
158 scoped_ptr<Value> policy_value(cache.GetPolicy()); | 165 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); |
159 EXPECT_TRUE(expected.Equals(policy_value.get())); | 166 EXPECT_TRUE(expected.Equals(policy_value.get())); |
160 | 167 |
161 EXPECT_TRUE(cache.SetPolicy(em::DevicePolicyResponse())); | 168 EXPECT_TRUE(cache.SetDevicePolicy(em::DevicePolicyResponse())); |
162 policy_value.reset(cache.GetPolicy()); | 169 policy_value.reset(cache.GetDevicePolicy()); |
163 DictionaryValue empty; | 170 DictionaryValue empty; |
164 EXPECT_TRUE(empty.Equals(policy_value.get())); | 171 EXPECT_TRUE(empty.Equals(policy_value.get())); |
165 } | 172 } |
166 | 173 |
167 TEST_F(DeviceManagementPolicyCacheTest, PersistPolicy) { | 174 TEST_F(DeviceManagementPolicyCacheTest, PersistPolicy) { |
168 { | 175 { |
169 DeviceManagementPolicyCache cache(test_file()); | 176 CloudPolicyCache cache(test_file()); |
170 em::DevicePolicyResponse policy; | 177 em::DevicePolicyResponse policy; |
171 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 178 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
172 cache.SetPolicy(policy); | 179 cache.SetDevicePolicy(policy); |
173 } | 180 } |
174 | 181 |
175 loop_.RunAllPending(); | 182 loop_.RunAllPending(); |
176 | 183 |
177 EXPECT_TRUE(file_util::PathExists(test_file())); | 184 EXPECT_TRUE(file_util::PathExists(test_file())); |
178 DeviceManagementPolicyCache cache(test_file()); | 185 CloudPolicyCache cache(test_file()); |
179 cache.LoadPolicyFromFile(); | 186 cache.LoadPolicyFromFile(); |
180 DictionaryValue expected; | 187 DictionaryValue expected; |
181 expected.Set("HomepageLocation", | 188 expected.Set("HomepageLocation", |
182 Value::CreateStringValue("http://www.example.com")); | 189 Value::CreateStringValue("http://www.example.com")); |
183 scoped_ptr<Value> policy_value(cache.GetPolicy()); | 190 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); |
184 EXPECT_TRUE(expected.Equals(policy_value.get())); | 191 EXPECT_TRUE(expected.Equals(policy_value.get())); |
185 } | 192 } |
186 | 193 |
187 TEST_F(DeviceManagementPolicyCacheTest, FreshPolicyOverride) { | 194 TEST_F(DeviceManagementPolicyCacheTest, FreshPolicyOverride) { |
188 em::DevicePolicyResponse policy; | 195 em::DevicePolicyResponse policy; |
189 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 196 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
190 WritePolicy(policy, base::Time::NowFromSystemTime()); | 197 WritePolicy(policy, base::Time::NowFromSystemTime()); |
191 | 198 |
192 DeviceManagementPolicyCache cache(test_file()); | 199 CloudPolicyCache cache(test_file()); |
193 em::DevicePolicyResponse updated_policy; | 200 em::DevicePolicyResponse updated_policy; |
194 AddStringPolicy(&updated_policy, "HomepageLocation", | 201 AddStringPolicy(&updated_policy, "HomepageLocation", |
195 "http://www.chromium.org"); | 202 "http://www.chromium.org"); |
196 EXPECT_TRUE(cache.SetPolicy(updated_policy)); | 203 EXPECT_TRUE(cache.SetDevicePolicy(updated_policy)); |
197 | 204 |
198 cache.LoadPolicyFromFile(); | 205 cache.LoadPolicyFromFile(); |
199 DictionaryValue expected; | 206 DictionaryValue expected; |
200 expected.Set("HomepageLocation", | 207 expected.Set("HomepageLocation", |
201 Value::CreateStringValue("http://www.chromium.org")); | 208 Value::CreateStringValue("http://www.chromium.org")); |
202 scoped_ptr<Value> policy_value(cache.GetPolicy()); | 209 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); |
203 EXPECT_TRUE(expected.Equals(policy_value.get())); | 210 EXPECT_TRUE(expected.Equals(policy_value.get())); |
204 } | 211 } |
205 | 212 |
206 // Tests proper decoding of policy values. | 213 // Tests proper decoding of policy values. |
207 class DeviceManagementPolicyCacheDecodeTest | 214 class DeviceManagementPolicyCacheDecodeTest |
208 : public DeviceManagementPolicyCacheTestBase { | 215 : public DeviceManagementPolicyCacheTestBase { |
209 protected: | 216 protected: |
210 void DecodeAndCheck(Value* expected_value_ptr) { | 217 void DecodeAndCheck(Value* expected_value_ptr) { |
211 scoped_ptr<Value> expected_value(expected_value_ptr); | 218 scoped_ptr<Value> expected_value(expected_value_ptr); |
212 scoped_ptr<Value> decoded_value( | 219 scoped_ptr<Value> decoded_value( |
213 DeviceManagementPolicyCache::DecodeValue(value_)); | 220 CloudPolicyCache::DecodeValue(value_)); |
214 if (expected_value_ptr) { | 221 if (expected_value_ptr) { |
215 ASSERT_TRUE(decoded_value.get()); | 222 ASSERT_TRUE(decoded_value.get()); |
216 EXPECT_TRUE(decoded_value->Equals(expected_value.get())); | 223 EXPECT_TRUE(decoded_value->Equals(expected_value.get())); |
217 } else { | 224 } else { |
218 ASSERT_FALSE(decoded_value.get()); | 225 ASSERT_FALSE(decoded_value.get()); |
219 } | 226 } |
220 } | 227 } |
221 | 228 |
229 DictionaryValue* DecodeDevicePolicy(const em::DevicePolicyResponse policy) { | |
230 return CloudPolicyCache::DecodeDevicePolicy(policy); | |
231 } | |
232 | |
222 em::GenericValue value_; | 233 em::GenericValue value_; |
223 }; | 234 }; |
224 | 235 |
225 TEST_F(DeviceManagementPolicyCacheDecodeTest, Bool) { | 236 TEST_F(DeviceManagementPolicyCacheDecodeTest, Bool) { |
226 value_.set_value_type(em::GenericValue::VALUE_TYPE_BOOL); | 237 value_.set_value_type(em::GenericValue::VALUE_TYPE_BOOL); |
227 value_.set_bool_value(true); | 238 value_.set_bool_value(true); |
228 DecodeAndCheck(Value::CreateBooleanValue(true)); | 239 DecodeAndCheck(Value::CreateBooleanValue(true)); |
229 } | 240 } |
230 | 241 |
231 TEST_F(DeviceManagementPolicyCacheDecodeTest, Int64) { | 242 TEST_F(DeviceManagementPolicyCacheDecodeTest, Int64) { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
304 value_.add_double_array(0.17L); | 315 value_.add_double_array(0.17L); |
305 ListValue* list = new ListValue; | 316 ListValue* list = new ListValue; |
306 list->Append(Value::CreateDoubleValue(0.42L)); | 317 list->Append(Value::CreateDoubleValue(0.42L)); |
307 list->Append(Value::CreateDoubleValue(0.17L)); | 318 list->Append(Value::CreateDoubleValue(0.17L)); |
308 DecodeAndCheck(list); | 319 DecodeAndCheck(list); |
309 } | 320 } |
310 | 321 |
311 TEST_F(DeviceManagementPolicyCacheDecodeTest, DecodePolicy) { | 322 TEST_F(DeviceManagementPolicyCacheDecodeTest, DecodePolicy) { |
312 em::DevicePolicyResponse policy; | 323 em::DevicePolicyResponse policy; |
313 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); | 324 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); |
314 scoped_ptr<Value> decoded(DeviceManagementPolicyCache::DecodePolicy(policy)); | 325 scoped_ptr<Value> decoded(DecodeDevicePolicy(policy)); |
315 DictionaryValue expected; | 326 DictionaryValue expected; |
316 expected.Set("HomepageLocation", | 327 expected.Set("HomepageLocation", |
317 Value::CreateStringValue("http://www.example.com")); | 328 Value::CreateStringValue("http://www.example.com")); |
318 EXPECT_TRUE(expected.Equals(decoded.get())); | 329 EXPECT_TRUE(expected.Equals(decoded.get())); |
319 } | 330 } |
320 | 331 |
321 } // namespace policy | 332 } // namespace policy |
OLD | NEW |