Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(562)

Side by Side Diff: chrome/browser/policy/device_management_policy_cache_unittest.cc

Issue 6520008: Device policy infrastructure (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698