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 "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 Loading... | |
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 Loading... | |
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 SubmitIngnorableChangePasswordForm_MatchingUsernameAndPassword) { | |
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, | |
vabr (Chromium)
2015/02/10 18:54:57
NULL -> nullptr
Also below.
(See http://chromium-c
Pritam Nikam
2015/02/19 11:18:48
Done.
| |
1354 client_with_store.driver(), *observed_form(), | |
1355 false); | |
1356 EXPECT_CALL(*client_with_store.mock_driver(), IsOffTheRecord()) | |
vabr (Chromium)
2015/02/10 18:54:57
Does the test really expect that call?
If this is
Pritam Nikam
2015/02/19 11:18:48
Done.
| |
1357 .WillRepeatedly(Return(false)); | |
1358 SimulateMatchingPhase(&manager, RESULT_MATCH_FOUND); | |
1359 | |
1360 // User submits ignorable change-password form (i.e. without | |
vabr (Chromium)
2015/02/10 18:54:57
Suggested rewording, because "ignorable" has uncle
Pritam Nikam
2015/02/19 11:18:48
Done.
| |
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; | |
vabr (Chromium)
2015/02/10 18:54:57
Does the test actually need |credentials| to be pr
Pritam Nikam
2015/02/19 11:18:48
Done.
| |
1368 manager.ProvisionallySave( | |
1369 credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | |
1370 | |
1371 // Successful match found. The PasswordManager should instruct | |
1372 // PasswordFormManager to overwrite the password for stored form. | |
1373 EXPECT_FALSE(manager.IsNewLogin()); | |
1374 | |
1375 EXPECT_EQ(credentials.signon_realm, | |
1376 GetPendingCredentials(&manager)->signon_realm); | |
1377 EXPECT_EQ(credentials.username_value, | |
1378 GetPendingCredentials(&manager)->username_value); | |
1379 | |
1380 // By this point, the PasswordFormManager should have overwritten the new | |
1381 // password value to be the current password. | |
1382 EXPECT_EQ(credentials.new_password_value, | |
1383 GetPendingCredentials(&manager)->password_value); | |
1384 } | |
1385 | |
1386 TEST_F(PasswordFormManagerTest, | |
1387 SubmitIngnorableChangePasswordForm_NotMatchingPassword) { | |
1388 observed_form()->new_password_element = | |
1389 base::ASCIIToUTF16("new_password_field"); | |
1390 | |
1391 TestPasswordManagerClient client_with_store(mock_store()); | |
1392 PasswordFormManager manager(NULL, &client_with_store, | |
1393 client_with_store.driver(), *observed_form(), | |
1394 false); | |
1395 EXPECT_CALL(*client_with_store.mock_driver(), IsOffTheRecord()) | |
1396 .WillRepeatedly(Return(false)); | |
1397 SimulateMatchingPhase(&manager, RESULT_MATCH_FOUND); | |
1398 | |
1399 // User submits ignorable change-password form (i.e. without | |
vabr (Chromium)
2015/02/10 18:54:57
Suggested rewording:
The user submits a password
Pritam Nikam
2015/02/19 11:18:48
Done.
| |
1400 // *autocomplete=username* markup) having non-matching password to the stored | |
1401 // form. | |
1402 PasswordForm credentials(*observed_form()); | |
1403 credentials.username_value = saved_match()->username_value; | |
1404 credentials.password_value = ASCIIToUTF16("DifferntPassword"); | |
1405 credentials.new_password_value = ASCIIToUTF16("NewPassword"); | |
1406 credentials.preferred = true; | |
1407 manager.ProvisionallySave( | |
1408 credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | |
1409 | |
1410 // No match found. Password manager shall not trigger the save or update the | |
vabr (Chromium)
2015/02/10 18:54:57
Actually, I would be surprised if this test worked
Pritam Nikam
2015/02/19 11:18:48
Instead we will test the public function IsIgnorab
| |
1411 // credentials. | |
1412 EXPECT_FALSE(manager.IsNewLogin()); | |
vabr (Chromium)
2015/02/10 18:54:57
I suggest dropping this line. It seems to just tes
Pritam Nikam
2015/02/19 11:18:48
Done.
| |
1413 EXPECT_CALL(*mock_store(), UpdateLogin(_)).Times(testing::Exactly(0)); | |
vabr (Chromium)
2015/02/10 18:54:57
You need to put this expectation before the Provis
Pritam Nikam
2015/02/19 11:18:48
Done.
| |
1414 } | |
1415 | |
1416 TEST_F(PasswordFormManagerTest, | |
1417 SubmitIngnorableChangePasswordForm_NotMatchingUsername) { | |
1418 observed_form()->new_password_element = | |
1419 base::ASCIIToUTF16("new_password_field"); | |
1420 | |
1421 TestPasswordManagerClient client_with_store(mock_store()); | |
1422 PasswordFormManager manager(NULL, &client_with_store, | |
1423 client_with_store.driver(), *observed_form(), | |
1424 false); | |
1425 EXPECT_CALL(*client_with_store.mock_driver(), IsOffTheRecord()) | |
1426 .WillRepeatedly(Return(false)); | |
1427 SimulateMatchingPhase(&manager, RESULT_MATCH_FOUND); | |
1428 | |
1429 // User submits ignorable change-password form (i.e. without | |
vabr (Chromium)
2015/02/10 18:54:57
Suggested rewording:
The user submits a password
Pritam Nikam
2015/02/19 11:18:48
Done.
| |
1430 // *autocomplete=username* markup) having non-matching username to the stored | |
1431 // form. | |
1432 PasswordForm credentials(*observed_form()); | |
1433 credentials.username_value = ASCIIToUTF16("DifferntUsername"); | |
1434 credentials.password_value = saved_match()->password_value; | |
1435 credentials.new_password_value = ASCIIToUTF16("NewPassword"); | |
1436 credentials.preferred = true; | |
1437 manager.ProvisionallySave( | |
1438 credentials, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | |
1439 | |
1440 // No matching username found. User typed in a new, unknown username. | |
1441 EXPECT_TRUE(manager.IsNewLogin()); | |
1442 } | |
1443 | |
1346 } // namespace password_manager | 1444 } // namespace password_manager |
OLD | NEW |