Index: chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc |
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc |
index 1eb16c2f927e6a5e8711dcfff8df8878fb955526..ec81b5f704ee6e9d5119cd799d655fea1bf0ba48 100644 |
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc |
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc |
@@ -2,6 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/bind.h" |
#include "base/prefs/pref_service.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/time/time.h" |
@@ -13,6 +14,7 @@ |
#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
#include "chrome/test/base/testing_profile.h" |
#include "components/autofill/core/common/password_form.h" |
+#include "components/password_manager/content/common/credential_manager_types.h" |
#include "components/password_manager/core/browser/password_form_manager.h" |
#include "components/password_manager/core/browser/stub_password_manager_client.h" |
#include "components/password_manager/core/browser/stub_password_manager_driver.h" |
@@ -55,6 +57,8 @@ class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness { |
new ManagePasswordsUIControllerMock(web_contents()); |
test_form_.origin = GURL("http://example.com"); |
+ test_form_.username_value = base::ASCIIToUTF16("username"); |
+ test_form_.password_value = base::ASCIIToUTF16("12345"); |
// We need to be on a "webby" URL for most tests. |
content::WebContentsTester::For(web_contents()) |
@@ -62,14 +66,22 @@ class ManagePasswordsUIControllerTest : public ChromeRenderViewHostTestHarness { |
} |
autofill::PasswordForm& test_form() { return test_form_; } |
+ password_manager::CredentialInfo* credential_info() const { |
+ return credential_info_.get(); |
+ } |
ManagePasswordsUIControllerMock* controller() { |
return static_cast<ManagePasswordsUIControllerMock*>( |
ManagePasswordsUIController::FromWebContents(web_contents())); |
} |
+ void CredentialCallback(const password_manager::CredentialInfo& info) { |
+ credential_info_.reset(new password_manager::CredentialInfo(info)); |
+ } |
+ |
private: |
autofill::PasswordForm test_form_; |
+ scoped_ptr<password_manager::CredentialInfo> credential_info_; |
}; |
TEST_F(ManagePasswordsUIControllerTest, DefaultState) { |
@@ -324,3 +336,46 @@ TEST_F(ManagePasswordsUIControllerTest, AutomaticPasswordSave) { |
controller()->UpdateIconAndBubbleState(&mock); |
EXPECT_EQ(password_manager::ui::MANAGE_STATE, mock.state()); |
} |
+ |
+TEST_F(ManagePasswordsUIControllerTest, ChooseCredential) { |
+ ScopedVector<autofill::PasswordForm> credentials; |
+ credentials.push_back(new autofill::PasswordForm(test_form())); |
+ EXPECT_TRUE(controller()->OnChooseCredentials( |
+ credentials.Pass(), |
+ base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
+ base::Unretained(this)))); |
+ EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, |
+ controller()->state()); |
+ EXPECT_FALSE(controller()->PasswordPendingUserDecision()); |
+ EXPECT_EQ(test_form().origin, controller()->origin()); |
+ EXPECT_EQ(autofill::ConstPasswordFormMap(), controller()->best_matches()); |
+ |
+ ManagePasswordsIconMock mock; |
+ controller()->UpdateIconAndBubbleState(&mock); |
+ EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, mock.state()); |
+ |
+ controller()->ManagePasswordsUIController::ChooseCredential(true, |
+ test_form()); |
+ EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
+ ASSERT_TRUE(credential_info()); |
+ EXPECT_EQ(test_form().username_value, credential_info()->id); |
+ EXPECT_EQ(test_form().password_value, credential_info()->password); |
+ EXPECT_EQ(password_manager::CREDENTIAL_TYPE_LOCAL, credential_info()->type); |
+} |
+ |
+TEST_F(ManagePasswordsUIControllerTest, ChooseCredentialCancel) { |
+ ScopedVector<autofill::PasswordForm> credentials; |
+ credentials.push_back(new autofill::PasswordForm(test_form())); |
+ EXPECT_TRUE(controller()->OnChooseCredentials( |
+ credentials.Pass(), |
+ base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, |
+ base::Unretained(this)))); |
+ EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE, |
+ controller()->state()); |
+ |
+ controller()->ManagePasswordsUIController::ChooseCredential(false, |
+ test_form()); |
+ EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); |
+ ASSERT_TRUE(credential_info()); |
+ EXPECT_EQ(password_manager::CREDENTIAL_TYPE_EMPTY, credential_info()->type); |
+} |