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 |