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

Side by Side Diff: chrome/browser/chromeos/login/signed_settings_unittest.cc

Issue 8727037: Signed settings refactoring: Proper caching and more tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments. Fixed small bugs. Rebased to ToT. Created 9 years 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) 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/chromeos/login/signed_settings.h" 5 #include "chrome/browser/chromeos/login/signed_settings.h"
6 6
7 #include "base/file_util.h"
8 #include "base/logging.h" 7 #include "base/logging.h"
9 #include "base/message_loop.h" 8 #include "base/message_loop.h"
10 #include "base/scoped_temp_dir.h"
11 #include "base/stringprintf.h"
12 #include "chrome/browser/chromeos/cros/cros_library.h" 9 #include "chrome/browser/chromeos/cros/cros_library.h"
13 #include "chrome/browser/chromeos/cros/mock_library_loader.h" 10 #include "chrome/browser/chromeos/cros/mock_library_loader.h"
14 #include "chrome/browser/chromeos/cros_settings_names.h" 11 #include "chrome/browser/chromeos/cros_settings_names.h"
15 #include "chrome/browser/chromeos/dbus/mock_dbus_thread_manager.h" 12 #include "chrome/browser/chromeos/dbus/mock_dbus_thread_manager.h"
16 #include "chrome/browser/chromeos/dbus/mock_session_manager_client.h" 13 #include "chrome/browser/chromeos/dbus/mock_session_manager_client.h"
17 #include "chrome/browser/chromeos/login/mock_owner_key_utils.h" 14 #include "chrome/browser/chromeos/login/mock_owner_key_utils.h"
18 #include "chrome/browser/chromeos/login/mock_ownership_service.h" 15 #include "chrome/browser/chromeos/login/mock_ownership_service.h"
19 #include "chrome/browser/chromeos/login/owner_manager_unittest.h" 16 #include "chrome/browser/chromeos/login/owner_manager_unittest.h"
20 #include "chrome/browser/policy/proto/chrome_device_policy.pb.h" 17 #include "chrome/browser/policy/proto/chrome_device_policy.pb.h"
21 #include "chrome/browser/policy/proto/device_management_backend.pb.h" 18 #include "chrome/browser/policy/proto/device_management_backend.pb.h"
22 #include "content/test/test_browser_thread.h" 19 #include "content/test/test_browser_thread.h"
23 #include "crypto/rsa_private_key.h"
24 #include "testing/gmock/include/gmock/gmock.h" 20 #include "testing/gmock/include/gmock/gmock.h"
25 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
26 22
27 using ::testing::A; 23 using ::testing::A;
28 using ::testing::AnyNumber; 24 using ::testing::AnyNumber;
29 using ::testing::Return; 25 using ::testing::Return;
30 using ::testing::ReturnRef; 26 using ::testing::ReturnRef;
31 using ::testing::SaveArg; 27 using ::testing::SaveArg;
32 using ::testing::StrEq; 28 using ::testing::StrEq;
33 using ::testing::WithArg; 29 using ::testing::WithArg;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 public: 73 public:
78 explicit NormalDelegate(T to_expect) : DummyDelegate<T>(to_expect) {} 74 explicit NormalDelegate(T to_expect) : DummyDelegate<T>(to_expect) {}
79 virtual ~NormalDelegate() {} 75 virtual ~NormalDelegate() {}
80 protected: 76 protected:
81 virtual void compare_expected(T to_compare) { 77 virtual void compare_expected(T to_compare) {
82 // without this-> this won't build. 78 // without this-> this won't build.
83 EXPECT_EQ(this->expected_, to_compare); 79 EXPECT_EQ(this->expected_, to_compare);
84 } 80 }
85 }; 81 };
86 82
87 // Specialized version for Value objects because these compare differently.
88 class PolicyDelegate : public DummyDelegate<const base::Value*> {
89 public:
90 explicit PolicyDelegate(const base::Value* to_expect)
91 : DummyDelegate<const base::Value*>(to_expect) {}
92 virtual ~PolicyDelegate() {}
93 protected:
94 virtual void compare_expected(const base::Value* to_compare) {
95 // without this-> this won't build.
96 EXPECT_TRUE(this->expected_->Equals(to_compare));
97 }
98 };
99
100 class ProtoDelegate : public DummyDelegate<const em::PolicyFetchResponse&> { 83 class ProtoDelegate : public DummyDelegate<const em::PolicyFetchResponse&> {
101 public: 84 public:
102 explicit ProtoDelegate(const em::PolicyFetchResponse& e) 85 explicit ProtoDelegate(const em::PolicyFetchResponse& e)
103 : DummyDelegate<const em::PolicyFetchResponse&>(e) { 86 : DummyDelegate<const em::PolicyFetchResponse&>(e) {
104 } 87 }
105 virtual ~ProtoDelegate() {} 88 virtual ~ProtoDelegate() {}
106 protected: 89 protected:
107 virtual void compare_expected(const em::PolicyFetchResponse& to_compare) { 90 virtual void compare_expected(const em::PolicyFetchResponse& to_compare) {
108 std::string ex_string, comp_string; 91 std::string ex_string, comp_string;
109 EXPECT_TRUE(expected_.SerializeToString(&ex_string)); 92 EXPECT_TRUE(expected_.SerializeToString(&ex_string));
110 EXPECT_TRUE(to_compare.SerializeToString(&comp_string)); 93 EXPECT_TRUE(to_compare.SerializeToString(&comp_string));
111 EXPECT_EQ(ex_string, comp_string); 94 EXPECT_EQ(ex_string, comp_string);
112 } 95 }
113 }; 96 };
114 97
115 } // anonymous namespace 98 } // anonymous namespace
116 99
117 class SignedSettingsTest : public testing::Test { 100 class SignedSettingsTest : public testing::Test {
118 public: 101 public:
119 SignedSettingsTest() 102 SignedSettingsTest()
120 : fake_email_("fakey@example.com"), 103 : fake_prop_(kAccountsPrefAllowGuest),
121 fake_domain_("*@example.com"),
122 fake_prop_(kAccountsPrefAllowGuest),
123 fake_signature_("false"), 104 fake_signature_("false"),
124 fake_value_(false), 105 fake_value_(false),
125 fake_value_signature_( 106 fake_value_signature_(
126 fake_signature_.c_str(), 107 fake_signature_.c_str(),
127 fake_signature_.c_str() + fake_signature_.length()), 108 fake_signature_.c_str() + fake_signature_.length()),
128 message_loop_(MessageLoop::TYPE_UI), 109 message_loop_(MessageLoop::TYPE_UI),
129 ui_thread_(BrowserThread::UI, &message_loop_), 110 ui_thread_(BrowserThread::UI, &message_loop_),
130 file_thread_(BrowserThread::FILE), 111 file_thread_(BrowserThread::FILE),
131 mock_(new MockKeyUtils), 112 mock_(new MockKeyUtils),
132 injector_(mock_) /* injector_ takes ownership of mock_ */, 113 injector_(mock_) /* injector_ takes ownership of mock_ */,
133 mock_dbus_thread_manager_(new MockDBusThreadManager) { 114 mock_dbus_thread_manager_(new MockDBusThreadManager) {
134 } 115 }
135 116
136 virtual ~SignedSettingsTest() {} 117 virtual ~SignedSettingsTest() {}
137 118
138 virtual void SetUp() { 119 virtual void SetUp() {
139 file_thread_.Start(); 120 file_thread_.Start();
140 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager_); 121 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager_);
141 } 122 }
142 123
143 virtual void TearDown() { 124 virtual void TearDown() {
144 OwnerKeyUtils::set_factory(NULL); 125 OwnerKeyUtils::set_factory(NULL);
145 DBusThreadManager::Shutdown(); 126 DBusThreadManager::Shutdown();
146 } 127 }
147 128
148 void mock_service(SignedSettings* s, MockOwnershipService* m) { 129 void mock_service(SignedSettings* s, MockOwnershipService* m) {
149 s->set_service(m); 130 s->set_service(m);
150 } 131 }
151 132
152 em::PolicyData BuildPolicyData(std::vector<std::string> whitelist) {
153 em::PolicyData to_return;
154 em::ChromeDeviceSettingsProto pol;
155 em::GuestModeEnabledProto* allow = pol.mutable_guest_mode_enabled();
156 allow->set_guest_mode_enabled(false);
157 pol.mutable_device_proxy_settings()->set_proxy_mode("direct");
158
159 if (!whitelist.empty()) {
160 em::UserWhitelistProto* whitelist_proto = pol.mutable_user_whitelist();
161 for (std::vector<std::string>::const_iterator it = whitelist.begin();
162 it != whitelist.end();
163 ++it) {
164 whitelist_proto->add_user_whitelist(*it);
165 }
166 }
167
168 to_return.set_policy_type(SignedSettings::kDevicePolicyType);
169 to_return.set_policy_value(pol.SerializeAsString());
170 return to_return;
171 }
172
173 void SetAllowNewUsers(bool desired, em::PolicyData* poldata) {
174 em::ChromeDeviceSettingsProto pol;
175 pol.ParseFromString(poldata->policy_value());
176 em::AllowNewUsersProto* allow = pol.mutable_allow_new_users();
177 allow->set_allow_new_users(desired);
178 poldata->set_policy_value(pol.SerializeAsString());
179 }
180
181 void FailingStorePropertyOp(const OwnerManager::KeyOpCode return_code) {
182 NormalDelegate<bool> d(false);
183 scoped_refptr<SignedSettings> s(
184 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d));
185 d.expect_failure(SignedSettings::MapKeyOpCode(return_code));
186
187 mock_service(s.get(), &m_);
188 EXPECT_CALL(m_, StartSigningAttempt(_, _))
189 .Times(1);
190 EXPECT_CALL(m_, GetStatus(_))
191 .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN));
192 EXPECT_CALL(m_, has_cached_policy())
193 .WillOnce(Return(true));
194 em::PolicyData fake_pol;
195 EXPECT_CALL(m_, cached_policy())
196 .WillOnce(ReturnRef(fake_pol));
197
198 s->Execute();
199 s->OnKeyOpComplete(return_code, std::vector<uint8>());
200 message_loop_.RunAllPending();
201 }
202
203 void FailingStorePolicyOp(const OwnerManager::KeyOpCode return_code) { 133 void FailingStorePolicyOp(const OwnerManager::KeyOpCode return_code) {
204 NormalDelegate<bool> d(false); 134 NormalDelegate<bool> d(false);
205 d.expect_failure(SignedSettings::MapKeyOpCode(return_code)); 135 d.expect_failure(SignedSettings::MapKeyOpCode(return_code));
206 136
207 em::PolicyFetchResponse fake_policy; 137 em::PolicyFetchResponse fake_policy;
208 fake_policy.set_policy_data(fake_prop_); 138 fake_policy.set_policy_data(fake_prop_);
209 std::string serialized; 139 std::string serialized;
210 ASSERT_TRUE(fake_policy.SerializeToString(&serialized)); 140 ASSERT_TRUE(fake_policy.SerializeToString(&serialized));
211 141
212 scoped_refptr<SignedSettings> s( 142 scoped_refptr<SignedSettings> s(
213 SignedSettings::CreateStorePolicyOp(&fake_policy, &d)); 143 SignedSettings::CreateStorePolicyOp(&fake_policy, &d));
214 144
215 mock_service(s.get(), &m_); 145 mock_service(s.get(), &m_);
216 EXPECT_CALL(m_, StartSigningAttempt(StrEq(fake_prop_), _)) 146 EXPECT_CALL(m_, StartSigningAttempt(StrEq(fake_prop_), _))
217 .Times(1); 147 .Times(1);
218 148
219 s->Execute(); 149 s->Execute();
220 s->OnKeyOpComplete(return_code, std::vector<uint8>()); 150 s->OnKeyOpComplete(return_code, std::vector<uint8>());
221 message_loop_.RunAllPending(); 151 message_loop_.RunAllPending();
222 } 152 }
223 153
154 em::PolicyData BuildPolicyData(std::vector<std::string> whitelist) {
155 em::PolicyData to_return;
156 em::ChromeDeviceSettingsProto pol;
157 em::GuestModeEnabledProto* allow = pol.mutable_guest_mode_enabled();
158 allow->set_guest_mode_enabled(false);
159 pol.mutable_device_proxy_settings()->set_proxy_mode("direct");
160
161 if (!whitelist.empty()) {
162 em::UserWhitelistProto* whitelist_proto = pol.mutable_user_whitelist();
163 for (std::vector<std::string>::const_iterator it = whitelist.begin();
164 it != whitelist.end();
165 ++it) {
166 whitelist_proto->add_user_whitelist(*it);
167 }
168 }
169
170 to_return.set_policy_type(chromeos::kDevicePolicyType);
171 to_return.set_policy_value(pol.SerializeAsString());
172 return to_return;
173 }
174
224 em::PolicyFetchResponse BuildProto(const std::string& data, 175 em::PolicyFetchResponse BuildProto(const std::string& data,
225 const std::string& sig, 176 const std::string& sig,
226 std::string* out_serialized) { 177 std::string* out_serialized) {
227 em::PolicyFetchResponse fake_policy; 178 em::PolicyFetchResponse fake_policy;
228 if (!data.empty()) 179 if (!data.empty())
229 fake_policy.set_policy_data(data); 180 fake_policy.set_policy_data(data);
230 if (!sig.empty()) 181 if (!sig.empty())
231 fake_policy.set_policy_data_signature(sig); 182 fake_policy.set_policy_data_signature(sig);
232 EXPECT_TRUE(fake_policy.SerializeToString(out_serialized)); 183 EXPECT_TRUE(fake_policy.SerializeToString(out_serialized));
233 return fake_policy; 184 return fake_policy;
234 } 185 }
235 186
236 void DoRetrieveProperty(const std::string& name,
237 const base::Value* value,
238 em::PolicyData* fake_pol) {
239 PolicyDelegate d(value);
240 d.expect_success();
241 scoped_refptr<SignedSettings> s(
242 SignedSettings::CreateRetrievePropertyOp(name, &d));
243 mock_service(s.get(), &m_);
244 EXPECT_CALL(m_, GetStatus(_))
245 .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN));
246 EXPECT_CALL(m_, has_cached_policy())
247 .WillOnce(Return(true));
248
249 EXPECT_CALL(m_, cached_policy())
250 .WillOnce(ReturnRef(*fake_pol));
251
252 s->Execute();
253 message_loop_.RunAllPending();
254 }
255
256 const std::string fake_email_;
257 const std::string fake_domain_;
258 const std::string fake_prop_; 187 const std::string fake_prop_;
259 const std::string fake_signature_; 188 const std::string fake_signature_;
260 const base::FundamentalValue fake_value_; 189 const base::FundamentalValue fake_value_;
261 const std::vector<uint8> fake_value_signature_; 190 const std::vector<uint8> fake_value_signature_;
262 MockOwnershipService m_; 191 MockOwnershipService m_;
263 192
264 ScopedTempDir tmpdir_;
265 FilePath tmpfile_;
266
267 MessageLoop message_loop_; 193 MessageLoop message_loop_;
268 content::TestBrowserThread ui_thread_; 194 content::TestBrowserThread ui_thread_;
269 content::TestBrowserThread file_thread_; 195 content::TestBrowserThread file_thread_;
270 196
271 std::vector<uint8> fake_public_key_;
272 scoped_ptr<crypto::RSAPrivateKey> fake_private_key_;
273
274 MockKeyUtils* mock_; 197 MockKeyUtils* mock_;
275 MockInjector injector_; 198 MockInjector injector_;
276 MockDBusThreadManager* mock_dbus_thread_manager_; 199 MockDBusThreadManager* mock_dbus_thread_manager_;
277 200
278 ScopedStubCrosEnabler stub_cros_enabler_; 201 ScopedStubCrosEnabler stub_cros_enabler_;
279 }; 202 };
280 203
281 ACTION_P(Retrieve, policy_blob) { arg0.Run(policy_blob); } 204 ACTION_P(Retrieve, policy_blob) { arg0.Run(policy_blob); }
282 ACTION_P(Store, success) { arg1.Run(success); } 205 ACTION_P(Store, success) { arg1.Run(success); }
283 ACTION_P(FinishKeyOp, s) { arg2->OnKeyOpComplete(OwnerManager::SUCCESS, s); }
284
285 TEST_F(SignedSettingsTest, StoreProperty) {
286 NormalDelegate<bool> d(true);
287 d.expect_success();
288 scoped_refptr<SignedSettings> s(
289 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d));
290
291 mock_service(s.get(), &m_);
292 EXPECT_CALL(m_, StartSigningAttempt(_, _))
293 .Times(1);
294 EXPECT_CALL(m_, GetStatus(_))
295 .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN));
296 EXPECT_CALL(m_, has_cached_policy())
297 .WillOnce(Return(true));
298 em::PolicyData in_pol =
299 BuildPolicyData(std::vector<std::string>(1, fake_email_));
300 EXPECT_CALL(m_, cached_policy())
301 .WillOnce(ReturnRef(in_pol));
302 em::PolicyData out_pol;
303 EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>()))
304 .WillOnce(SaveArg<0>(&out_pol));
305
306 MockSessionManagerClient* client =
307 mock_dbus_thread_manager_->mock_session_manager_client();
308 EXPECT_CALL(*client, StorePolicy(_, _))
309 .WillOnce(Store(true))
310 .RetiresOnSaturation();
311
312 s->Execute();
313 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
314 message_loop_.RunAllPending();
315
316 ASSERT_TRUE(out_pol.has_policy_value());
317 em::ChromeDeviceSettingsProto pol;
318 pol.ParseFromString(out_pol.policy_value());
319 ASSERT_TRUE(pol.has_guest_mode_enabled());
320 ASSERT_TRUE(pol.guest_mode_enabled().has_guest_mode_enabled());
321 ASSERT_FALSE(pol.guest_mode_enabled().guest_mode_enabled());
322 }
323
324 TEST_F(SignedSettingsTest, StorePropertyNoKey) {
325 FailingStorePropertyOp(OwnerManager::KEY_UNAVAILABLE);
326 }
327
328 TEST_F(SignedSettingsTest, StorePropertyFailed) {
329 FailingStorePropertyOp(OwnerManager::OPERATION_FAILED);
330 }
331
332 TEST_F(SignedSettingsTest, RetrieveProperty) {
333 em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>());
334 base::FundamentalValue fake_value(false);
335 DoRetrieveProperty(fake_prop_, &fake_value, &fake_pol);
336 }
337
338 TEST_F(SignedSettingsTest, RetrieveOwnerProperty) {
339 em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>());
340 fake_pol.set_username(fake_email_);
341 base::StringValue fake_value(fake_email_);
342 DoRetrieveProperty(kDeviceOwner, &fake_value, &fake_pol);
343 }
344
345 TEST_F(SignedSettingsTest, ExplicitlyAllowNewUsers) {
346 em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>());
347 SetAllowNewUsers(true, &fake_pol);
348 base::FundamentalValue fake_value(true);
349 DoRetrieveProperty(kAccountsPrefAllowNewUser, &fake_value, &fake_pol);
350 }
351
352 TEST_F(SignedSettingsTest, ExplicitlyDisallowNewUsers) {
353 std::vector<std::string> whitelist(1, fake_email_ + "m");
354 em::PolicyData fake_pol = BuildPolicyData(whitelist);
355 SetAllowNewUsers(false, &fake_pol);
356 base::FundamentalValue fake_value(false);
357 DoRetrieveProperty(kAccountsPrefAllowNewUser, &fake_value, &fake_pol);
358 }
359
360 TEST_F(SignedSettingsTest, ImplicitlyDisallowNewUsers) {
361 std::vector<std::string> whitelist(1, fake_email_ + "m");
362 em::PolicyData fake_pol = BuildPolicyData(whitelist);
363 base::FundamentalValue fake_value(false);
364 DoRetrieveProperty(kAccountsPrefAllowNewUser, &fake_value, &fake_pol);
365 }
366
367 TEST_F(SignedSettingsTest, AccidentallyDisallowNewUsers) {
368 em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>());
369 SetAllowNewUsers(false, &fake_pol);
370 base::FundamentalValue fake_value(true);
371 DoRetrieveProperty(kAccountsPrefAllowNewUser, &fake_value, &fake_pol);
372 }
373
374 TEST_F(SignedSettingsTest, RetrievePropertyNotFound) {
375 PolicyDelegate d(&fake_value_);
376 d.expect_failure(SignedSettings::NOT_FOUND);
377 scoped_refptr<SignedSettings> s(
378 SignedSettings::CreateRetrievePropertyOp("unknown_prop", &d));
379 mock_service(s.get(), &m_);
380 EXPECT_CALL(m_, GetStatus(_))
381 .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN));
382 EXPECT_CALL(m_, has_cached_policy())
383 .WillOnce(Return(true));
384
385 em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>());
386 EXPECT_CALL(m_, cached_policy())
387 .WillOnce(ReturnRef(fake_pol));
388
389 s->Execute();
390 message_loop_.RunAllPending();
391 }
392
393 TEST_F(SignedSettingsTest, RetrievePolicyToRetrieveProperty) {
394 base::FundamentalValue fake_value(false);
395 PolicyDelegate d(&fake_value);
396 d.expect_success();
397 scoped_refptr<SignedSettings> s(
398 SignedSettings::CreateRetrievePropertyOp(fake_prop_, &d));
399
400 em::PolicyData fake_pol = BuildPolicyData(std::vector<std::string>());
401 std::string data = fake_pol.SerializeAsString();
402 std::string signed_serialized;
403 em::PolicyFetchResponse signed_policy = BuildProto(data,
404 fake_signature_,
405 &signed_serialized);
406 MockSessionManagerClient* client =
407 mock_dbus_thread_manager_->mock_session_manager_client();
408 EXPECT_CALL(*client, RetrievePolicy(_))
409 .WillOnce(Retrieve(signed_serialized))
410 .RetiresOnSaturation();
411
412 mock_service(s.get(), &m_);
413
414 EXPECT_CALL(m_, GetStatus(_))
415 .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN))
416 .WillOnce(Return(OwnershipService::OWNERSHIP_TAKEN));
417 EXPECT_CALL(m_, has_cached_policy())
418 .WillOnce(Return(false))
419 .WillOnce(Return(true));
420 em::PolicyData out_pol;
421 EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>()))
422 .WillOnce(SaveArg<0>(&out_pol));
423 EXPECT_CALL(m_, cached_policy())
424 .WillOnce(ReturnRef(out_pol));
425
426 EXPECT_CALL(m_, StartVerifyAttempt(data, fake_value_signature_, _))
427 .WillOnce(FinishKeyOp(fake_value_signature_))
428 .RetiresOnSaturation();
429
430 s->Execute();
431 message_loop_.RunAllPending();
432 }
433 206
434 TEST_F(SignedSettingsTest, SignAndStorePolicy) { 207 TEST_F(SignedSettingsTest, SignAndStorePolicy) {
435 NormalDelegate<bool> d(true); 208 NormalDelegate<bool> d(true);
436 d.expect_success(); 209 d.expect_success();
437 210
438 em::PolicyData in_pol = BuildPolicyData(std::vector<std::string>()); 211 em::PolicyData in_pol = BuildPolicyData(std::vector<std::string>());
439 std::string data_serialized = in_pol.SerializeAsString(); 212 std::string data_serialized = in_pol.SerializeAsString();
440 std::string serialized; 213 std::string serialized;
441 em::PolicyFetchResponse fake_policy = BuildProto(data_serialized, 214 em::PolicyFetchResponse fake_policy = BuildProto(data_serialized,
442 std::string(), 215 std::string(),
443 &serialized); 216 &serialized);
444 scoped_refptr<SignedSettings> s( 217 scoped_refptr<SignedSettings> s(
445 SignedSettings::CreateStorePolicyOp(&fake_policy, &d)); 218 SignedSettings::CreateStorePolicyOp(&fake_policy, &d));
446 219
447 mock_service(s.get(), &m_); 220 mock_service(s.get(), &m_);
448 EXPECT_CALL(m_, StartSigningAttempt(StrEq(data_serialized), _)) 221 EXPECT_CALL(m_, StartSigningAttempt(StrEq(data_serialized), _))
449 .Times(1); 222 .Times(1);
450 em::PolicyData out_pol; 223 em::PolicyData out_pol;
451 EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>()))
452 .WillOnce(SaveArg<0>(&out_pol));
453 224
454 // Ask for signature over unsigned policy. 225 // Ask for signature over unsigned policy.
455 s->Execute(); 226 s->Execute();
456 message_loop_.RunAllPending(); 227 message_loop_.RunAllPending();
457 228
458 // Fake out a successful signing. 229 // Fake out a successful signing.
459 std::string signed_serialized; 230 std::string signed_serialized;
460 em::PolicyFetchResponse signed_policy = BuildProto(data_serialized, 231 em::PolicyFetchResponse signed_policy = BuildProto(data_serialized,
461 fake_signature_, 232 fake_signature_,
462 &signed_serialized); 233 &signed_serialized);
(...skipping 19 matching lines...) Expand all
482 scoped_refptr<SignedSettings> s( 253 scoped_refptr<SignedSettings> s(
483 SignedSettings::CreateStorePolicyOp(&signed_policy, &d)); 254 SignedSettings::CreateStorePolicyOp(&signed_policy, &d));
484 MockSessionManagerClient* client = 255 MockSessionManagerClient* client =
485 mock_dbus_thread_manager_->mock_session_manager_client(); 256 mock_dbus_thread_manager_->mock_session_manager_client();
486 EXPECT_CALL(*client, StorePolicy(signed_serialized, _)) 257 EXPECT_CALL(*client, StorePolicy(signed_serialized, _))
487 .WillOnce(Store(true)) 258 .WillOnce(Store(true))
488 .RetiresOnSaturation(); 259 .RetiresOnSaturation();
489 260
490 mock_service(s.get(), &m_); 261 mock_service(s.get(), &m_);
491 em::PolicyData out_pol; 262 em::PolicyData out_pol;
492 EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>()))
493 .WillOnce(SaveArg<0>(&out_pol));
494 263
495 s->Execute(); 264 s->Execute();
496 message_loop_.RunAllPending(); 265 message_loop_.RunAllPending();
497 } 266 }
498 267
499 TEST_F(SignedSettingsTest, StorePolicyNoKey) { 268 TEST_F(SignedSettingsTest, StorePolicyNoKey) {
500 FailingStorePolicyOp(OwnerManager::KEY_UNAVAILABLE); 269 FailingStorePolicyOp(OwnerManager::KEY_UNAVAILABLE);
501 } 270 }
502 271
503 TEST_F(SignedSettingsTest, StorePolicyFailed) { 272 TEST_F(SignedSettingsTest, StorePolicyFailed) {
(...skipping 29 matching lines...) Expand all
533 MockSessionManagerClient* client = 302 MockSessionManagerClient* client =
534 mock_dbus_thread_manager_->mock_session_manager_client(); 303 mock_dbus_thread_manager_->mock_session_manager_client();
535 EXPECT_CALL(*client, RetrievePolicy(_)) 304 EXPECT_CALL(*client, RetrievePolicy(_))
536 .WillOnce(Retrieve(signed_serialized)) 305 .WillOnce(Retrieve(signed_serialized))
537 .RetiresOnSaturation(); 306 .RetiresOnSaturation();
538 307
539 mock_service(s.get(), &m_); 308 mock_service(s.get(), &m_);
540 EXPECT_CALL(m_, StartVerifyAttempt(serialized, fake_value_signature_, _)) 309 EXPECT_CALL(m_, StartVerifyAttempt(serialized, fake_value_signature_, _))
541 .Times(1); 310 .Times(1);
542 em::PolicyData out_pol; 311 em::PolicyData out_pol;
543 EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>()))
544 .WillOnce(SaveArg<0>(&out_pol));
545 312
546 s->Execute(); 313 s->Execute();
547 message_loop_.RunAllPending(); 314 message_loop_.RunAllPending();
548 315
549 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>()); 316 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
550 message_loop_.RunAllPending(); 317 message_loop_.RunAllPending();
551 } 318 }
552 319
553 TEST_F(SignedSettingsTest, RetrieveNullPolicy) { 320 TEST_F(SignedSettingsTest, RetrieveNullPolicy) {
554 em::PolicyFetchResponse policy; 321 em::PolicyFetchResponse policy;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 .Times(1); 389 .Times(1);
623 390
624 s->Execute(); 391 s->Execute();
625 message_loop_.RunAllPending(); 392 message_loop_.RunAllPending();
626 393
627 s->OnKeyOpComplete(OwnerManager::OPERATION_FAILED, std::vector<uint8>()); 394 s->OnKeyOpComplete(OwnerManager::OPERATION_FAILED, std::vector<uint8>());
628 message_loop_.RunAllPending(); 395 message_loop_.RunAllPending();
629 } 396 }
630 397
631 } // namespace chromeos 398 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/signed_settings_temp_storage_unittest.cc ('k') | chrome/browser/chromeos/login/user_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698