| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/chromeos/cros/cros_library.h" | 10 #include "chrome/browser/chromeos/cros/cros_library.h" |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 s->Execute(); | 227 s->Execute(); |
| 228 message_loop_.RunAllPending(); | 228 message_loop_.RunAllPending(); |
| 229 | 229 |
| 230 // Fake out a successful signing. | 230 // Fake out a successful signing. |
| 231 std::string signed_serialized; | 231 std::string signed_serialized; |
| 232 em::PolicyFetchResponse signed_policy = BuildProto(data_serialized, | 232 em::PolicyFetchResponse signed_policy = BuildProto(data_serialized, |
| 233 fake_signature_, | 233 fake_signature_, |
| 234 &signed_serialized); | 234 &signed_serialized); |
| 235 MockSessionManagerClient* client = | 235 MockSessionManagerClient* client = |
| 236 mock_dbus_thread_manager_->mock_session_manager_client(); | 236 mock_dbus_thread_manager_->mock_session_manager_client(); |
| 237 EXPECT_CALL(*client, StorePolicy(signed_serialized, _)) | 237 EXPECT_CALL(*client, StoreDevicePolicy(signed_serialized, _)) |
| 238 .WillOnce(Store(true)) | 238 .WillOnce(Store(true)) |
| 239 .RetiresOnSaturation(); | 239 .RetiresOnSaturation(); |
| 240 s->OnKeyOpComplete(OwnerManager::SUCCESS, fake_value_signature_); | 240 s->OnKeyOpComplete(OwnerManager::SUCCESS, fake_value_signature_); |
| 241 message_loop_.RunAllPending(); | 241 message_loop_.RunAllPending(); |
| 242 } | 242 } |
| 243 | 243 |
| 244 TEST_F(SignedSettingsTest, StoreSignedPolicy) { | 244 TEST_F(SignedSettingsTest, StoreSignedPolicy) { |
| 245 NormalDelegate<bool> d(true); | 245 NormalDelegate<bool> d(true); |
| 246 d.expect_success(); | 246 d.expect_success(); |
| 247 | 247 |
| 248 em::PolicyData in_pol = BuildPolicyData(std::vector<std::string>()); | 248 em::PolicyData in_pol = BuildPolicyData(std::vector<std::string>()); |
| 249 std::string serialized = in_pol.SerializeAsString(); | 249 std::string serialized = in_pol.SerializeAsString(); |
| 250 std::string signed_serialized; | 250 std::string signed_serialized; |
| 251 em::PolicyFetchResponse signed_policy = BuildProto(serialized, | 251 em::PolicyFetchResponse signed_policy = BuildProto(serialized, |
| 252 fake_signature_, | 252 fake_signature_, |
| 253 &signed_serialized); | 253 &signed_serialized); |
| 254 scoped_refptr<SignedSettings> s( | 254 scoped_refptr<SignedSettings> s( |
| 255 SignedSettings::CreateStorePolicyOp(&signed_policy, &d)); | 255 SignedSettings::CreateStorePolicyOp(&signed_policy, &d)); |
| 256 MockSessionManagerClient* client = | 256 MockSessionManagerClient* client = |
| 257 mock_dbus_thread_manager_->mock_session_manager_client(); | 257 mock_dbus_thread_manager_->mock_session_manager_client(); |
| 258 EXPECT_CALL(*client, StorePolicy(signed_serialized, _)) | 258 EXPECT_CALL(*client, StoreDevicePolicy(signed_serialized, _)) |
| 259 .WillOnce(Store(true)) | 259 .WillOnce(Store(true)) |
| 260 .RetiresOnSaturation(); | 260 .RetiresOnSaturation(); |
| 261 | 261 |
| 262 mock_service(s.get(), &m_); | 262 mock_service(s.get(), &m_); |
| 263 em::PolicyData out_pol; | 263 em::PolicyData out_pol; |
| 264 | 264 |
| 265 s->Execute(); | 265 s->Execute(); |
| 266 message_loop_.RunAllPending(); | 266 message_loop_.RunAllPending(); |
| 267 } | 267 } |
| 268 | 268 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 295 std::string signed_serialized; | 295 std::string signed_serialized; |
| 296 em::PolicyFetchResponse signed_policy = BuildProto(serialized, | 296 em::PolicyFetchResponse signed_policy = BuildProto(serialized, |
| 297 fake_signature_, | 297 fake_signature_, |
| 298 &signed_serialized); | 298 &signed_serialized); |
| 299 ProtoDelegate d(signed_policy); | 299 ProtoDelegate d(signed_policy); |
| 300 d.expect_success(); | 300 d.expect_success(); |
| 301 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); | 301 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); |
| 302 | 302 |
| 303 MockSessionManagerClient* client = | 303 MockSessionManagerClient* client = |
| 304 mock_dbus_thread_manager_->mock_session_manager_client(); | 304 mock_dbus_thread_manager_->mock_session_manager_client(); |
| 305 EXPECT_CALL(*client, RetrievePolicy(_)) | 305 EXPECT_CALL(*client, RetrieveDevicePolicy(_)) |
| 306 .WillOnce(Retrieve(signed_serialized)) | 306 .WillOnce(Retrieve(signed_serialized)) |
| 307 .RetiresOnSaturation(); | 307 .RetiresOnSaturation(); |
| 308 | 308 |
| 309 mock_service(s.get(), &m_); | 309 mock_service(s.get(), &m_); |
| 310 EXPECT_CALL(m_, StartVerifyAttempt(serialized, fake_value_signature_, _)) | 310 EXPECT_CALL(m_, StartVerifyAttempt(serialized, fake_value_signature_, _)) |
| 311 .Times(1); | 311 .Times(1); |
| 312 em::PolicyData out_pol; | 312 em::PolicyData out_pol; |
| 313 | 313 |
| 314 s->Execute(); | 314 s->Execute(); |
| 315 message_loop_.RunAllPending(); | 315 message_loop_.RunAllPending(); |
| 316 | 316 |
| 317 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>()); | 317 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>()); |
| 318 message_loop_.RunAllPending(); | 318 message_loop_.RunAllPending(); |
| 319 } | 319 } |
| 320 | 320 |
| 321 TEST_F(SignedSettingsTest, RetrieveNullPolicy) { | 321 TEST_F(SignedSettingsTest, RetrieveNullPolicy) { |
| 322 em::PolicyFetchResponse policy; | 322 em::PolicyFetchResponse policy; |
| 323 ProtoDelegate d(policy); | 323 ProtoDelegate d(policy); |
| 324 d.expect_failure(SignedSettings::NOT_FOUND); | 324 d.expect_failure(SignedSettings::NOT_FOUND); |
| 325 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); | 325 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); |
| 326 | 326 |
| 327 MockSessionManagerClient* client = | 327 MockSessionManagerClient* client = |
| 328 mock_dbus_thread_manager_->mock_session_manager_client(); | 328 mock_dbus_thread_manager_->mock_session_manager_client(); |
| 329 EXPECT_CALL(*client, RetrievePolicy(_)) | 329 EXPECT_CALL(*client, RetrieveDevicePolicy(_)) |
| 330 .WillOnce(Retrieve("")) | 330 .WillOnce(Retrieve("")) |
| 331 .RetiresOnSaturation(); | 331 .RetiresOnSaturation(); |
| 332 | 332 |
| 333 s->Execute(); | 333 s->Execute(); |
| 334 message_loop_.RunAllPending(); | 334 message_loop_.RunAllPending(); |
| 335 } | 335 } |
| 336 | 336 |
| 337 TEST_F(SignedSettingsTest, RetrieveEmptyPolicy) { | 337 TEST_F(SignedSettingsTest, RetrieveEmptyPolicy) { |
| 338 std::string serialized; | 338 std::string serialized; |
| 339 em::PolicyFetchResponse policy = BuildProto("", "", &serialized); | 339 em::PolicyFetchResponse policy = BuildProto("", "", &serialized); |
| 340 ProtoDelegate d(policy); | 340 ProtoDelegate d(policy); |
| 341 d.expect_failure(SignedSettings::NOT_FOUND); | 341 d.expect_failure(SignedSettings::NOT_FOUND); |
| 342 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); | 342 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); |
| 343 | 343 |
| 344 MockSessionManagerClient* client = | 344 MockSessionManagerClient* client = |
| 345 mock_dbus_thread_manager_->mock_session_manager_client(); | 345 mock_dbus_thread_manager_->mock_session_manager_client(); |
| 346 EXPECT_CALL(*client, RetrievePolicy(_)) | 346 EXPECT_CALL(*client, RetrieveDevicePolicy(_)) |
| 347 .WillOnce(Retrieve("")) | 347 .WillOnce(Retrieve("")) |
| 348 .RetiresOnSaturation(); | 348 .RetiresOnSaturation(); |
| 349 | 349 |
| 350 s->Execute(); | 350 s->Execute(); |
| 351 message_loop_.RunAllPending(); | 351 message_loop_.RunAllPending(); |
| 352 } | 352 } |
| 353 | 353 |
| 354 TEST_F(SignedSettingsTest, RetrieveUnsignedPolicy) { | 354 TEST_F(SignedSettingsTest, RetrieveUnsignedPolicy) { |
| 355 std::string serialized; | 355 std::string serialized; |
| 356 em::PolicyFetchResponse policy = BuildProto(fake_prop_, | 356 em::PolicyFetchResponse policy = BuildProto(fake_prop_, |
| 357 std::string(), | 357 std::string(), |
| 358 &serialized); | 358 &serialized); |
| 359 ProtoDelegate d(policy); | 359 ProtoDelegate d(policy); |
| 360 d.expect_failure(SignedSettings::BAD_SIGNATURE); | 360 d.expect_failure(SignedSettings::BAD_SIGNATURE); |
| 361 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); | 361 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); |
| 362 | 362 |
| 363 MockSessionManagerClient* client = | 363 MockSessionManagerClient* client = |
| 364 mock_dbus_thread_manager_->mock_session_manager_client(); | 364 mock_dbus_thread_manager_->mock_session_manager_client(); |
| 365 EXPECT_CALL(*client, RetrievePolicy(_)) | 365 EXPECT_CALL(*client, RetrieveDevicePolicy(_)) |
| 366 .WillOnce(Retrieve(serialized)) | 366 .WillOnce(Retrieve(serialized)) |
| 367 .RetiresOnSaturation(); | 367 .RetiresOnSaturation(); |
| 368 | 368 |
| 369 s->Execute(); | 369 s->Execute(); |
| 370 message_loop_.RunAllPending(); | 370 message_loop_.RunAllPending(); |
| 371 } | 371 } |
| 372 | 372 |
| 373 TEST_F(SignedSettingsTest, RetrieveMalsignedPolicy) { | 373 TEST_F(SignedSettingsTest, RetrieveMalsignedPolicy) { |
| 374 std::string signed_serialized; | 374 std::string signed_serialized; |
| 375 em::PolicyFetchResponse signed_policy = BuildProto(fake_prop_, | 375 em::PolicyFetchResponse signed_policy = BuildProto(fake_prop_, |
| 376 fake_signature_, | 376 fake_signature_, |
| 377 &signed_serialized); | 377 &signed_serialized); |
| 378 ProtoDelegate d(signed_policy); | 378 ProtoDelegate d(signed_policy); |
| 379 d.expect_failure(SignedSettings::BAD_SIGNATURE); | 379 d.expect_failure(SignedSettings::BAD_SIGNATURE); |
| 380 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); | 380 scoped_refptr<SignedSettings> s(SignedSettings::CreateRetrievePolicyOp(&d)); |
| 381 | 381 |
| 382 MockSessionManagerClient* client = | 382 MockSessionManagerClient* client = |
| 383 mock_dbus_thread_manager_->mock_session_manager_client(); | 383 mock_dbus_thread_manager_->mock_session_manager_client(); |
| 384 EXPECT_CALL(*client, RetrievePolicy(_)) | 384 EXPECT_CALL(*client, RetrieveDevicePolicy(_)) |
| 385 .WillOnce(Retrieve(signed_serialized)) | 385 .WillOnce(Retrieve(signed_serialized)) |
| 386 .RetiresOnSaturation(); | 386 .RetiresOnSaturation(); |
| 387 | 387 |
| 388 mock_service(s.get(), &m_); | 388 mock_service(s.get(), &m_); |
| 389 EXPECT_CALL(m_, StartVerifyAttempt(fake_prop_, fake_value_signature_, _)) | 389 EXPECT_CALL(m_, StartVerifyAttempt(fake_prop_, fake_value_signature_, _)) |
| 390 .Times(1); | 390 .Times(1); |
| 391 | 391 |
| 392 s->Execute(); | 392 s->Execute(); |
| 393 message_loop_.RunAllPending(); | 393 message_loop_.RunAllPending(); |
| 394 | 394 |
| 395 s->OnKeyOpComplete(OwnerManager::OPERATION_FAILED, std::vector<uint8>()); | 395 s->OnKeyOpComplete(OwnerManager::OPERATION_FAILED, std::vector<uint8>()); |
| 396 message_loop_.RunAllPending(); | 396 message_loop_.RunAllPending(); |
| 397 } | 397 } |
| 398 | 398 |
| 399 } // namespace chromeos | 399 } // namespace chromeos |
| OLD | NEW |