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

Unified Diff: components/password_manager/core/browser/password_form_manager_unittest.cc

Issue 356223002: PasswordForm: move from current/old password scheme to current/new. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix tests. Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: components/password_manager/core/browser/password_form_manager_unittest.cc
diff --git a/components/password_manager/core/browser/password_form_manager_unittest.cc b/components/password_manager/core/browser/password_form_manager_unittest.cc
index c5bc4f32c7747ae37273708bf6d86b3ccb87edd1..b22eed654cdbc1545889a10626e683f73b3f195d 100644
--- a/components/password_manager/core/browser/password_form_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
@@ -221,6 +221,8 @@ TEST_F(PasswordFormManagerTest, TestNewLogin) {
GetPendingCredentials(manager)->password_value);
EXPECT_EQ(saved_match()->username_value,
GetPendingCredentials(manager)->username_value);
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_element.empty());
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_value.empty());
// Now, suppose the user re-visits the site and wants to save an additional
// login for the site with a new username. In this case, the matching phase
@@ -244,9 +246,54 @@ TEST_F(PasswordFormManagerTest, TestNewLogin) {
EXPECT_TRUE(GetPendingCredentials(manager)->preferred);
EXPECT_EQ(new_pass, GetPendingCredentials(manager)->password_value);
EXPECT_EQ(new_user, GetPendingCredentials(manager)->username_value);
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_element.empty());
+ EXPECT_TRUE(GetPendingCredentials(manager)->new_password_value.empty());
delete manager;
}
+TEST_F(PasswordFormManagerTest, TestNewLoginWithNewPasswordElement) {
+ // Alter the test form so it only has a password field that identified as
+ // being the new password.
+ observed_form()->new_password_element.swap(observed_form()->password_element);
+
+ scoped_ptr<TestPasswordManagerClient> client(
+ new TestPasswordManagerClient(NULL));
+ scoped_ptr<StubPasswordManagerDriver> driver;
+ scoped_ptr<PasswordFormManager> manager(new PasswordFormManager(
+ NULL, client.get(), driver.get(), *observed_form(), false));
+ SimulateMatchingPhase(&*manager, false);
Garrett Casto 2014/07/07 21:57:24 Nit: I realize &* is shorter, but I think that .ge
engedy 2014/07/09 14:15:47 Done, I have rebased this CL on some earlier refac
+
+ // User submits credentials for the observed form.
+ PasswordForm credentials(*observed_form());
+ credentials.username_value = saved_match()->username_value;
+ credentials.new_password_value = saved_match()->password_value;
+ credentials.preferred = true;
+ manager->ProvisionallySave(
+ credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
+
+ // Successful login. The PasswordManager would instruct PasswordFormManager
+ // to save, which should know this is a new login.
+ EXPECT_TRUE(manager->IsNewLogin());
+ EXPECT_EQ(observed_form()->origin.spec(),
+ GetPendingCredentials(&*manager)->origin.spec());
+ EXPECT_EQ(observed_form()->signon_realm,
+ GetPendingCredentials(&*manager)->signon_realm);
+ EXPECT_EQ(observed_form()->action, GetPendingCredentials(&*manager)->action);
+ EXPECT_TRUE(GetPendingCredentials(&*manager)->preferred);
+ EXPECT_EQ(saved_match()->username_value,
+ GetPendingCredentials(&*manager)->username_value);
+ // At this point, the PasswordFormManager should have promoted the new
+ // password value to be the current password. However, given that the element
+ // names will be probably different on a future login form, no element names
+ // should be saved.
+ EXPECT_TRUE(GetPendingCredentials(&*manager)->username_element.empty());
+ EXPECT_TRUE(GetPendingCredentials(&*manager)->password_element.empty());
+ EXPECT_EQ(saved_match()->password_value,
+ GetPendingCredentials(&*manager)->password_value);
+ EXPECT_TRUE(GetPendingCredentials(&*manager)->new_password_element.empty());
+ EXPECT_TRUE(GetPendingCredentials(&*manager)->new_password_value.empty());
+}
+
TEST_F(PasswordFormManagerTest, TestUpdatePassword) {
// Create a PasswordFormManager with observed_form, as if we just
// saw this form and need to find matching logins.
@@ -458,30 +505,52 @@ TEST_F(PasswordFormManagerTest, TestValidForms) {
credentials.username_value = saved_match()->username_value;
credentials.password_value = saved_match()->password_value;
+ // An alternate version of the form that also has a new_password_element.
+ PasswordForm new_credentials(*observed_form());
+ new_credentials.new_password_element = ASCIIToUTF16("NewPasswd");
+ new_credentials.new_password_value = ASCIIToUTF16("test1new");
+
// Form with both username_element and password_element.
PasswordFormManager manager1(NULL, NULL, NULL, credentials, false);
SimulateMatchingPhase(&manager1, false);
EXPECT_TRUE(manager1.HasValidPasswordForm());
+ // Form with username_element, password_element, and new_password_element.
+ PasswordFormManager manager2(NULL, NULL, NULL, new_credentials, false);
+ SimulateMatchingPhase(&manager2, false);
+ EXPECT_TRUE(manager2.HasValidPasswordForm());
+
+ // Form with username_element and only new_password_element.
+ new_credentials.password_element.clear();
+ PasswordFormManager manager3(NULL, NULL, NULL, new_credentials, false);
+ SimulateMatchingPhase(&manager3, false);
+ EXPECT_TRUE(manager3.HasValidPasswordForm());
+
// Form without a username_element but with a password_element.
credentials.username_element.clear();
- PasswordFormManager manager2(NULL, NULL, NULL, credentials, false);
- SimulateMatchingPhase(&manager2, false);
- EXPECT_FALSE(manager2.HasValidPasswordForm());
+ PasswordFormManager manager4(NULL, NULL, NULL, credentials, false);
+ SimulateMatchingPhase(&manager4, false);
+ EXPECT_FALSE(manager4.HasValidPasswordForm());
+
+ // Form without a username_element but with a new_password_element.
+ new_credentials.username_element.clear();
+ PasswordFormManager manager5(NULL, NULL, NULL, new_credentials, false);
+ SimulateMatchingPhase(&manager5, false);
+ EXPECT_FALSE(manager5.HasValidPasswordForm());
// Form without a password_element but with a username_element.
credentials.username_element = saved_match()->username_element;
credentials.password_element.clear();
- PasswordFormManager manager3(NULL, NULL, NULL, credentials, false);
- SimulateMatchingPhase(&manager3, false);
- EXPECT_FALSE(manager3.HasValidPasswordForm());
+ PasswordFormManager manager6(NULL, NULL, NULL, credentials, false);
+ SimulateMatchingPhase(&manager6, false);
+ EXPECT_FALSE(manager6.HasValidPasswordForm());
// Form with neither a password_element nor a username_element.
credentials.username_element.clear();
credentials.password_element.clear();
- PasswordFormManager manager4(NULL, NULL, NULL, credentials, false);
- SimulateMatchingPhase(&manager4, false);
- EXPECT_FALSE(manager4.HasValidPasswordForm());
+ PasswordFormManager manager7(NULL, NULL, NULL, credentials, false);
+ SimulateMatchingPhase(&manager7, false);
+ EXPECT_FALSE(manager7.HasValidPasswordForm());
}
TEST_F(PasswordFormManagerTest, TestValidFormsBasic) {

Powered by Google App Engine
This is Rietveld 408576698