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

Side by Side Diff: components/password_manager/core/browser/password_form_manager_unittest.cc

Issue 870513002: [PasswordManager] Improve detection of ignorable change password forms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed breakage. Created 5 years, 10 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 unified diff | Download patch
OLDNEW
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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "base/prefs/pref_registry_simple.h" 7 #include "base/prefs/pref_registry_simple.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/prefs/testing_pref_service.h" 9 #include "base/prefs/testing_pref_service.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 385
386 // Can't verify time, so ignore it. 386 // Can't verify time, so ignore it.
387 actual_saved_form.date_created = base::Time(); 387 actual_saved_form.date_created = base::Time();
388 EXPECT_EQ(expected_saved_form, actual_saved_form); 388 EXPECT_EQ(expected_saved_form, actual_saved_form);
389 } 389 }
390 390
391 TEST_F(PasswordFormManagerTest, TestNewLoginFromNewPasswordElement) { 391 TEST_F(PasswordFormManagerTest, TestNewLoginFromNewPasswordElement) {
392 // Add a new password field to the test form. The PasswordFormManager should 392 // Add a new password field to the test form. The PasswordFormManager should
393 // save the password from this field, instead of the current password field. 393 // save the password from this field, instead of the current password field.
394 observed_form()->new_password_element = ASCIIToUTF16("NewPasswd"); 394 observed_form()->new_password_element = ASCIIToUTF16("NewPasswd");
395 observed_form()->username_marked_by_site = true;
395 396
396 PasswordFormManager manager(NULL, client(), kNoDriver, *observed_form(), 397 PasswordFormManager manager(NULL, client(), kNoDriver, *observed_form(),
397 false); 398 false);
398 SimulateMatchingPhase(&manager, RESULT_NO_MATCH); 399 SimulateMatchingPhase(&manager, RESULT_NO_MATCH);
399 400
400 // User enters current and new credentials to the observed form. 401 // User enters current and new credentials to the observed form.
401 PasswordForm credentials(*observed_form()); 402 PasswordForm credentials(*observed_form());
402 credentials.username_value = saved_match()->username_value; 403 credentials.username_value = saved_match()->username_value;
403 credentials.password_value = saved_match()->password_value; 404 credentials.password_value = saved_match()->password_value;
404 credentials.new_password_value = ASCIIToUTF16("newpassword"); 405 credentials.new_password_value = ASCIIToUTF16("newpassword");
(...skipping 931 matching lines...) Expand 10 before | Expand all | Expand 10 after
1336 form_manager.FetchMatchingLoginsFromPasswordStore(auth_policy); 1337 form_manager.FetchMatchingLoginsFromPasswordStore(auth_policy);
1337 1338
1338 // Suddenly, the frame and its driver disappear. 1339 // Suddenly, the frame and its driver disappear.
1339 client_with_store.KillDriver(); 1340 client_with_store.KillDriver();
1340 1341
1341 std::vector<PasswordForm*> results; 1342 std::vector<PasswordForm*> results;
1342 results.push_back(form.release()); 1343 results.push_back(form.release());
1343 form_manager.OnGetPasswordStoreResults(results); 1344 form_manager.OnGetPasswordStoreResults(results);
1344 } 1345 }
1345 1346
1347 TEST_F(PasswordFormManagerTest,
1348 SubmitIngnorableChanePasswordForm_MatchingUsernameAndPassword) {
vabr (Chromium) 2015/02/06 16:27:07 Chane -> Change
Pritam Nikam 2015/02/09 15:48:17 Done.
1349 observed_form()->new_password_element =
1350 base::ASCIIToUTF16("new_password_field");
1351
1352 TestPasswordManagerClient client_with_store(mock_store());
1353 PasswordFormManager manager(NULL, &client_with_store,
1354 client_with_store.driver(), *observed_form(),
1355 false);
1356 EXPECT_CALL(*client_with_store.mock_driver(), IsOffTheRecord())
1357 .WillRepeatedly(Return(false));
1358 SimulateMatchingPhase(&manager, RESULT_MATCH_FOUND);
1359
1360 // User submits ignorable change-password form (i.e. without
1361 // *autocomplete=username* markup) having matching username and password to
1362 // the stored form.
1363 PasswordForm credentials(*observed_form());
1364 credentials.username_value = saved_match()->username_value;
1365 credentials.password_value = saved_match()->password_value;
1366 credentials.new_password_value = ASCIIToUTF16("NewPassword");
1367 credentials.preferred = true;
1368 EXPECT_TRUE(manager.ProvisionallySave(
1369 credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES));
1370
1371 // Successful match found. The PasswordManager would instruct
vabr (Chromium) 2015/02/06 16:27:07 would -> should
Pritam Nikam 2015/02/09 15:48:17 Done.
1372 // PasswordFormManager to overwrite the password for stored form.
1373 EXPECT_FALSE(manager.IsNewLogin());
1374 EXPECT_EQ(credentials.signon_realm,
1375 GetPendingCredentials(&manager)->signon_realm);
1376 EXPECT_EQ(credentials.username_value,
1377 GetPendingCredentials(&manager)->username_value);
1378
1379 // By this point, the PasswordFormManager should have overwritten the new
1380 // password value to be the current password.
1381 EXPECT_EQ(credentials.new_password_value,
1382 GetPendingCredentials(&manager)->password_value);
1383 }
1384
1385 TEST_F(PasswordFormManagerTest,
1386 SubmitIngnorableChanePasswordForm_NotMatchingPassword) {
1387 observed_form()->new_password_element =
1388 base::ASCIIToUTF16("new_password_field");
1389
1390 TestPasswordManagerClient client_with_store(mock_store());
1391 PasswordFormManager manager(NULL, &client_with_store,
1392 client_with_store.driver(), *observed_form(),
1393 false);
1394 EXPECT_CALL(*client_with_store.mock_driver(), IsOffTheRecord())
1395 .WillRepeatedly(Return(false));
1396 SimulateMatchingPhase(&manager, RESULT_MATCH_FOUND);
1397
1398 // User submits ignorable change-password form (i.e. without
1399 // *autocomplete=username* markup) having non-matching password to the stored
1400 // form.
1401 PasswordForm credentials(*observed_form());
1402 credentials.username_value = saved_match()->username_value;
1403 credentials.password_value = ASCIIToUTF16("DifferntPassword");
1404 credentials.new_password_value = ASCIIToUTF16("NewPassword");
1405 credentials.preferred = true;
1406 EXPECT_FALSE(manager.ProvisionallySave(
1407 credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES));
1408 }
1409
1410 TEST_F(PasswordFormManagerTest,
1411 SubmitIngnorableChanePasswordForm_NotMatchingUsername) {
1412 observed_form()->new_password_element =
1413 base::ASCIIToUTF16("new_password_field");
1414
1415 TestPasswordManagerClient client_with_store(mock_store());
1416 PasswordFormManager manager(NULL, &client_with_store,
1417 client_with_store.driver(), *observed_form(),
1418 false);
1419 EXPECT_CALL(*client_with_store.mock_driver(), IsOffTheRecord())
1420 .WillRepeatedly(Return(false));
1421 SimulateMatchingPhase(&manager, RESULT_MATCH_FOUND);
1422
1423 // User submits ignorable change-password form (i.e. without
1424 // *autocomplete=username* markup) having non-matching username to the stored
1425 // form.
1426 PasswordForm credentials(*observed_form());
1427 credentials.username_value = ASCIIToUTF16("DifferntUsername");
1428 credentials.password_value = saved_match()->password_value;
1429 credentials.new_password_value = ASCIIToUTF16("NewPassword");
1430 credentials.preferred = true;
1431 EXPECT_FALSE(manager.ProvisionallySave(
1432 credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES));
1433 }
1434
1346 } // namespace password_manager 1435 } // namespace password_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698