| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
| 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" | 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" |
| 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); | 102 EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); |
| 103 } | 103 } |
| 104 | 104 |
| 105 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { | 105 TEST_F(ManagePasswordsUIControllerTest, PasswordSubmitted) { |
| 106 password_manager::StubPasswordManagerClient client; | 106 password_manager::StubPasswordManagerClient client; |
| 107 password_manager::StubPasswordManagerDriver driver; | 107 password_manager::StubPasswordManagerDriver driver; |
| 108 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( | 108 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( |
| 109 new password_manager::PasswordFormManager( | 109 new password_manager::PasswordFormManager( |
| 110 NULL, &client, driver.AsWeakPtr(), test_form(), false)); | 110 NULL, &client, driver.AsWeakPtr(), test_form(), false)); |
| 111 controller()->OnPasswordSubmitted(test_form_manager.Pass()); | 111 controller()->OnPasswordSubmitted(test_form_manager.Pass()); |
| 112 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE, | 112 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, |
| 113 controller()->state()); | 113 controller()->state()); |
| 114 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); | 114 EXPECT_TRUE(controller()->PasswordPendingUserDecision()); |
| 115 | 115 |
| 116 // TODO(mkwst): This should be the value of test_form().origin, but | 116 // TODO(mkwst): This should be the value of test_form().origin, but |
| 117 // it's being masked by the stub implementation of | 117 // it's being masked by the stub implementation of |
| 118 // ManagePasswordsUIControllerMock::PendingCredentials. | 118 // ManagePasswordsUIControllerMock::PendingCredentials. |
| 119 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); | 119 EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); |
| 120 | 120 |
| 121 ManagePasswordsIconMock mock; | 121 ManagePasswordsIconMock mock; |
| 122 controller()->UpdateIconAndBubbleState(&mock); | 122 controller()->UpdateIconAndBubbleState(&mock); |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 | 324 |
| 325 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { | 325 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialLocal) { |
| 326 ScopedVector<autofill::PasswordForm> local_credentials; | 326 ScopedVector<autofill::PasswordForm> local_credentials; |
| 327 local_credentials.push_back(new autofill::PasswordForm(test_form())); | 327 local_credentials.push_back(new autofill::PasswordForm(test_form())); |
| 328 ScopedVector<autofill::PasswordForm> federated_credentials; | 328 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 329 GURL origin("http://example.com"); | 329 GURL origin("http://example.com"); |
| 330 EXPECT_TRUE(controller()->OnChooseCredentials( | 330 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 331 local_credentials.Pass(), federated_credentials.Pass(), origin, | 331 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 332 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 332 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 333 base::Unretained(this)))); | 333 base::Unretained(this)))); |
| 334 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, | 334 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 335 controller()->state()); | 335 controller()->state()); |
| 336 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 336 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
| 337 EXPECT_EQ(origin, controller()->origin()); | 337 EXPECT_EQ(origin, controller()->origin()); |
| 338 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); | 338 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); |
| 339 | 339 |
| 340 ManagePasswordsIconMock mock; | 340 ManagePasswordsIconMock mock; |
| 341 controller()->UpdateIconAndBubbleState(&mock); | 341 controller()->UpdateIconAndBubbleState(&mock); |
| 342 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); | 342 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); |
| 343 | 343 |
| 344 controller()->ManagePasswordsUIController::ChooseCredential( | 344 controller()->ManagePasswordsUIController::ChooseCredential( |
| 345 test_form(), password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); | 345 test_form(), password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL); |
| 346 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 346 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
| 347 ASSERT_TRUE(credential_info()); | 347 ASSERT_TRUE(credential_info()); |
| 348 EXPECT_EQ(test_form().username_value, credential_info()->id); | 348 EXPECT_EQ(test_form().username_value, credential_info()->id); |
| 349 EXPECT_EQ(test_form().password_value, credential_info()->password); | 349 EXPECT_EQ(test_form().password_value, credential_info()->password); |
| 350 EXPECT_TRUE(credential_info()->federation.is_empty()); | 350 EXPECT_TRUE(credential_info()->federation.is_empty()); |
| 351 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL, | 351 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_LOCAL, |
| 352 credential_info()->type); | 352 credential_info()->type); |
| 353 } | 353 } |
| 354 | 354 |
| 355 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { | 355 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialFederated) { |
| 356 ScopedVector<autofill::PasswordForm> local_credentials; | 356 ScopedVector<autofill::PasswordForm> local_credentials; |
| 357 ScopedVector<autofill::PasswordForm> federated_credentials; | 357 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 358 federated_credentials.push_back(new autofill::PasswordForm(test_form())); | 358 federated_credentials.push_back(new autofill::PasswordForm(test_form())); |
| 359 GURL origin("http://example.com"); | 359 GURL origin("http://example.com"); |
| 360 EXPECT_TRUE(controller()->OnChooseCredentials( | 360 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 361 local_credentials.Pass(), federated_credentials.Pass(), origin, | 361 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 362 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 362 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 363 base::Unretained(this)))); | 363 base::Unretained(this)))); |
| 364 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, | 364 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 365 controller()->state()); | 365 controller()->state()); |
| 366 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); | 366 EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
| 367 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); | 367 EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); |
| 368 EXPECT_EQ(origin, controller()->origin()); | 368 EXPECT_EQ(origin, controller()->origin()); |
| 369 | 369 |
| 370 ManagePasswordsIconMock mock; | 370 ManagePasswordsIconMock mock; |
| 371 controller()->UpdateIconAndBubbleState(&mock); | 371 controller()->UpdateIconAndBubbleState(&mock); |
| 372 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); | 372 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); |
| 373 | 373 |
| 374 controller()->ManagePasswordsUIController::ChooseCredential( | 374 controller()->ManagePasswordsUIController::ChooseCredential( |
| 375 test_form(), password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); | 375 test_form(), password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); |
| 376 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 376 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
| 377 ASSERT_TRUE(credential_info()); | 377 ASSERT_TRUE(credential_info()); |
| 378 EXPECT_EQ(test_form().username_value, credential_info()->id); | 378 EXPECT_EQ(test_form().username_value, credential_info()->id); |
| 379 EXPECT_TRUE(credential_info()->password.empty()); | 379 EXPECT_TRUE(credential_info()->password.empty()); |
| 380 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, | 380 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED, |
| 381 credential_info()->type); | 381 credential_info()->type); |
| 382 } | 382 } |
| 383 | 383 |
| 384 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { | 384 TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { |
| 385 ScopedVector<autofill::PasswordForm> local_credentials; | 385 ScopedVector<autofill::PasswordForm> local_credentials; |
| 386 local_credentials.push_back(new autofill::PasswordForm(test_form())); | 386 local_credentials.push_back(new autofill::PasswordForm(test_form())); |
| 387 ScopedVector<autofill::PasswordForm> federated_credentials; | 387 ScopedVector<autofill::PasswordForm> federated_credentials; |
| 388 GURL origin("http://example.com"); | 388 GURL origin("http://example.com"); |
| 389 EXPECT_TRUE(controller()->OnChooseCredentials( | 389 EXPECT_TRUE(controller()->OnChooseCredentials( |
| 390 local_credentials.Pass(), federated_credentials.Pass(), origin, | 390 local_credentials.Pass(), federated_credentials.Pass(), origin, |
| 391 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, | 391 base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
| 392 base::Unretained(this)))); | 392 base::Unretained(this)))); |
| 393 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, | 393 EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, |
| 394 controller()->state()); | 394 controller()->state()); |
| 395 EXPECT_EQ(origin, controller()->origin()); | 395 EXPECT_EQ(origin, controller()->origin()); |
| 396 controller()->ManagePasswordsUIController::ChooseCredential( | 396 controller()->ManagePasswordsUIController::ChooseCredential( |
| 397 test_form(), password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); | 397 test_form(), password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); |
| 398 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 398 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
| 399 ASSERT_TRUE(credential_info()); | 399 ASSERT_TRUE(credential_info()); |
| 400 EXPECT_TRUE(credential_info()->federation.is_empty()); | 400 EXPECT_TRUE(credential_info()->federation.is_empty()); |
| 401 EXPECT_TRUE(credential_info()->password.empty()); | 401 EXPECT_TRUE(credential_info()->password.empty()); |
| 402 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, | 402 EXPECT_EQ(password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY, |
| 403 credential_info()->type); | 403 credential_info()->type); |
| 404 } | 404 } |
| 405 | 405 |
| 406 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { | 406 TEST_F(ManagePasswordsUIControllerTest, InactiveOnPSLMatched) { |
| 407 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); | 407 base::string16 kTestUsername = base::ASCIIToUTF16("test_username"); |
| 408 autofill::PasswordFormMap map; | 408 autofill::PasswordFormMap map; |
| 409 autofill::PasswordForm psl_matched_test_form = test_form(); | 409 autofill::PasswordForm psl_matched_test_form = test_form(); |
| 410 psl_matched_test_form.original_signon_realm = "http://pslmatched.example.com"; | 410 psl_matched_test_form.original_signon_realm = "http://pslmatched.example.com"; |
| 411 map[kTestUsername] = &psl_matched_test_form; | 411 map[kTestUsername] = &psl_matched_test_form; |
| 412 controller()->OnPasswordAutofilled(map); | 412 controller()->OnPasswordAutofilled(map); |
| 413 | 413 |
| 414 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); | 414 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
| 415 } | 415 } |
| OLD | NEW |