| 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 "chrome/browser/password_manager/password_store_mac.h" | 5 #include "chrome/browser/password_manager/password_store_mac.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" |
| 9 #include "base/scoped_observer.h" | 9 #include "base/scoped_observer.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 1231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1242 if (updates[i].password) { | 1242 if (updates[i].password) { |
| 1243 EXPECT_GT(matching_items.size(), 0U) << "iteration " << i; | 1243 EXPECT_GT(matching_items.size(), 0U) << "iteration " << i; |
| 1244 if (matching_items.size() >= 1) | 1244 if (matching_items.size() >= 1) |
| 1245 EXPECT_EQ(ASCIIToUTF16(updates[i].password), | 1245 EXPECT_EQ(ASCIIToUTF16(updates[i].password), |
| 1246 matching_items[0]->password_value) << "iteration " << i; | 1246 matching_items[0]->password_value) << "iteration " << i; |
| 1247 } else { | 1247 } else { |
| 1248 EXPECT_EQ(0U, matching_items.size()) << "iteration " << i; | 1248 EXPECT_EQ(0U, matching_items.size()) << "iteration " << i; |
| 1249 } | 1249 } |
| 1250 matching_items.clear(); | 1250 matching_items.clear(); |
| 1251 | 1251 |
| 1252 login_db()->GetLogins(*query_form, &matching_items); | 1252 EXPECT_TRUE(login_db()->GetLogins(*query_form, &matching_items)); |
| 1253 EXPECT_EQ(updates[i].password ? 1U : 0U, matching_items.size()) | 1253 EXPECT_EQ(updates[i].password ? 1U : 0U, matching_items.size()) |
| 1254 << "iteration " << i; | 1254 << "iteration " << i; |
| 1255 } | 1255 } |
| 1256 } | 1256 } |
| 1257 | 1257 |
| 1258 TEST_F(PasswordStoreMacTest, TestDBKeychainAssociation) { | 1258 TEST_F(PasswordStoreMacTest, TestDBKeychainAssociation) { |
| 1259 // Tests that association between the keychain and login database parts of a | 1259 // Tests that association between the keychain and login database parts of a |
| 1260 // password added by fuzzy (PSL) matching works. | 1260 // password added by fuzzy (PSL) matching works. |
| 1261 // 1. Add a password for www.facebook.com | 1261 // 1. Add a password for www.facebook.com |
| 1262 // 2. Get a password for m.facebook.com. This fuzzy matches and returns the | 1262 // 2. Get a password for m.facebook.com. This fuzzy matches and returns the |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1305 // 4. Remove both passwords. | 1305 // 4. Remove both passwords. |
| 1306 store_->RemoveLogin(*www_form); | 1306 store_->RemoveLogin(*www_form); |
| 1307 store_->RemoveLogin(m_form); | 1307 store_->RemoveLogin(m_form); |
| 1308 FinishAsyncProcessing(); | 1308 FinishAsyncProcessing(); |
| 1309 | 1309 |
| 1310 // No trace of www.facebook.com. | 1310 // No trace of www.facebook.com. |
| 1311 ScopedVector<autofill::PasswordForm> matching_items = | 1311 ScopedVector<autofill::PasswordForm> matching_items = |
| 1312 owned_keychain_adapter.PasswordsFillingForm(www_form->signon_realm, | 1312 owned_keychain_adapter.PasswordsFillingForm(www_form->signon_realm, |
| 1313 www_form->scheme); | 1313 www_form->scheme); |
| 1314 EXPECT_EQ(0u, matching_items.size()); | 1314 EXPECT_EQ(0u, matching_items.size()); |
| 1315 login_db()->GetLogins(*www_form, &matching_items); | 1315 EXPECT_TRUE(login_db()->GetLogins(*www_form, &matching_items)); |
| 1316 EXPECT_EQ(0u, matching_items.size()); | 1316 EXPECT_EQ(0u, matching_items.size()); |
| 1317 // No trace of m.facebook.com. | 1317 // No trace of m.facebook.com. |
| 1318 matching_items = owned_keychain_adapter.PasswordsFillingForm( | 1318 matching_items = owned_keychain_adapter.PasswordsFillingForm( |
| 1319 m_form.signon_realm, m_form.scheme); | 1319 m_form.signon_realm, m_form.scheme); |
| 1320 EXPECT_EQ(0u, matching_items.size()); | 1320 EXPECT_EQ(0u, matching_items.size()); |
| 1321 login_db()->GetLogins(m_form, &matching_items); | 1321 EXPECT_TRUE(login_db()->GetLogins(m_form, &matching_items)); |
| 1322 EXPECT_EQ(0u, matching_items.size()); | 1322 EXPECT_EQ(0u, matching_items.size()); |
| 1323 } | 1323 } |
| 1324 | 1324 |
| 1325 namespace { | 1325 namespace { |
| 1326 | 1326 |
| 1327 class PasswordsChangeObserver : | 1327 class PasswordsChangeObserver : |
| 1328 public password_manager::PasswordStore::Observer { | 1328 public password_manager::PasswordStore::Observer { |
| 1329 public: | 1329 public: |
| 1330 PasswordsChangeObserver(TestPasswordStoreMac* store) : observer_(this) { | 1330 PasswordsChangeObserver(TestPasswordStoreMac* store) : observer_(this) { |
| 1331 observer_.Add(store); | 1331 observer_.Add(store); |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1479 // Add a password from the current profile. | 1479 // Add a password from the current profile. |
| 1480 PasswordFormData www_form_data2 = { | 1480 PasswordFormData www_form_data2 = { |
| 1481 PasswordForm::SCHEME_HTML, "http://www.facebook.com/", | 1481 PasswordForm::SCHEME_HTML, "http://www.facebook.com/", |
| 1482 "http://www.facebook.com/index.html", "login", L"username", L"password", | 1482 "http://www.facebook.com/index.html", "login", L"username", L"password", |
| 1483 L"submit", L"not_joe_user", L"12345", true, false, 1 }; | 1483 L"submit", L"not_joe_user", L"12345", true, false, 1 }; |
| 1484 www_form = CreatePasswordFormFromDataForTesting(www_form_data2); | 1484 www_form = CreatePasswordFormFromDataForTesting(www_form_data2); |
| 1485 store_->AddLogin(*www_form); | 1485 store_->AddLogin(*www_form); |
| 1486 FinishAsyncProcessing(); | 1486 FinishAsyncProcessing(); |
| 1487 | 1487 |
| 1488 ScopedVector<PasswordForm> matching_items; | 1488 ScopedVector<PasswordForm> matching_items; |
| 1489 login_db()->GetLogins(*www_form, &matching_items); | 1489 EXPECT_TRUE(login_db()->GetLogins(*www_form, &matching_items)); |
| 1490 EXPECT_EQ(1u, matching_items.size()); | 1490 EXPECT_EQ(1u, matching_items.size()); |
| 1491 matching_items.clear(); | 1491 matching_items.clear(); |
| 1492 | 1492 |
| 1493 store_->RemoveLoginsCreatedBetween(base::Time(), base::Time()); | 1493 store_->RemoveLoginsCreatedBetween(base::Time(), base::Time()); |
| 1494 FinishAsyncProcessing(); | 1494 FinishAsyncProcessing(); |
| 1495 | 1495 |
| 1496 // Check the second facebook form is gone. | 1496 // Check the second facebook form is gone. |
| 1497 login_db()->GetLogins(*www_form, &matching_items); | 1497 EXPECT_TRUE(login_db()->GetLogins(*www_form, &matching_items)); |
| 1498 EXPECT_EQ(0u, matching_items.size()); | 1498 EXPECT_EQ(0u, matching_items.size()); |
| 1499 | 1499 |
| 1500 // Check the first facebook form is still there. | 1500 // Check the first facebook form is still there. |
| 1501 matching_items = owned_keychain_adapter.PasswordsFillingForm( | 1501 matching_items = owned_keychain_adapter.PasswordsFillingForm( |
| 1502 www_form->signon_realm, www_form->scheme); | 1502 www_form->signon_realm, www_form->scheme); |
| 1503 ASSERT_EQ(1u, matching_items.size()); | 1503 ASSERT_EQ(1u, matching_items.size()); |
| 1504 EXPECT_EQ(ASCIIToUTF16("joe_user"), matching_items[0]->username_value); | 1504 EXPECT_EQ(ASCIIToUTF16("joe_user"), matching_items[0]->username_value); |
| 1505 matching_items.clear(); | 1505 matching_items.clear(); |
| 1506 | 1506 |
| 1507 // Check the third-party password is still there. | 1507 // Check the third-party password is still there. |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1682 query_form.password_value.clear(); | 1682 query_form.password_value.clear(); |
| 1683 query_form.username_value.clear(); | 1683 query_form.username_value.clear(); |
| 1684 EXPECT_CALL(mock_consumer, OnGetPasswordStoreResultsConstRef(SizeIs(1u))) | 1684 EXPECT_CALL(mock_consumer, OnGetPasswordStoreResultsConstRef(SizeIs(1u))) |
| 1685 .WillOnce( | 1685 .WillOnce( |
| 1686 DoAll(SaveACopyOfFirstForm(&returned_form), QuitUIMessageLoop())); | 1686 DoAll(SaveACopyOfFirstForm(&returned_form), QuitUIMessageLoop())); |
| 1687 store()->GetLogins(query_form, PasswordStore::ALLOW_PROMPT, &mock_consumer); | 1687 store()->GetLogins(query_form, PasswordStore::ALLOW_PROMPT, &mock_consumer); |
| 1688 base::MessageLoop::current()->Run(); | 1688 base::MessageLoop::current()->Run(); |
| 1689 ::testing::Mock::VerifyAndClearExpectations(&mock_consumer); | 1689 ::testing::Mock::VerifyAndClearExpectations(&mock_consumer); |
| 1690 EXPECT_EQ(form, returned_form); | 1690 EXPECT_EQ(form, returned_form); |
| 1691 } | 1691 } |
| OLD | NEW |