Chromium Code Reviews| Index: components/password_manager/core/browser/password_store_unittest.cc |
| diff --git a/components/password_manager/core/browser/password_store_unittest.cc b/components/password_manager/core/browser/password_store_unittest.cc |
| index c811bb41de40710e4ef53827787da565a4fc2148..cbddc8441104e99b27a30541aa2d810bb45ff50c 100644 |
| --- a/components/password_manager/core/browser/password_store_unittest.cc |
| +++ b/components/password_manager/core/browser/password_store_unittest.cc |
| @@ -840,4 +840,55 @@ TEST_F(PasswordStoreTest, GetLoginsWithAffiliatedRealms) { |
| } |
| } |
| +TEST_F(PasswordStoreTest, CheckPasswordReuse) { |
| + static const PasswordFormData kTestCredentials[] = { |
|
vabr (Chromium)
2016/12/20 18:11:45
Would constexpr instead of const work?
But +1 to
dvadym
2016/12/21 12:15:36
Done.
|
| + {PasswordForm::SCHEME_HTML, "https://www.google.com", |
| + "https://www.google.com", "", L"", L"", L"", L"", L"password", true, 1}, |
| + {PasswordForm::SCHEME_HTML, "https://facebook.com", |
| + "https://facebook.com", "", L"", L"", L"", L"", L"topsecret", true, 1}}; |
| + |
| + scoped_refptr<PasswordStoreDefault> store(new PasswordStoreDefault( |
| + base::ThreadTaskRunnerHandle::Get(), base::ThreadTaskRunnerHandle::Get(), |
| + base::MakeUnique<LoginDatabase>(test_login_db_file_path()))); |
| + store->Init(syncer::SyncableService::StartSyncFlare()); |
| + |
| + for (size_t i = 0; i < arraysize(kTestCredentials); ++i) { |
|
vabr (Chromium)
2016/12/20 18:11:45
nit: for (const auto& testcase : kTestCredentials)
dvadym
2016/12/21 12:15:36
Done.
|
| + auto credentials = |
| + CreatePasswordFormFromDataForTesting(kTestCredentials[i]); |
| + store->AddLogin(*credentials); |
| + base::RunLoop().RunUntilIdle(); |
| + } |
| + |
| + static const struct { |
|
vabr (Chromium)
2016/12/20 18:11:45
static constexpr?
dvadym
2016/12/21 12:15:36
Done.
|
| + const wchar_t* input; |
| + const char* domain; |
| + const wchar_t* reused_password; // set to nullptr if no reuse is expected. |
|
vabr (Chromium)
2016/12/20 18:11:45
nit: set -> Set
dvadym
2016/12/21 12:15:36
Done.
|
| + const char* reuse_domain; |
| + } kReuseTestData[] = { |
| + {L"12345password", "https://evil.com", L"password", "google.com"}, |
| + {L"1234567890", "https://evil.com", nullptr, nullptr}, |
| + {L"topsecret", "https://m.facebook.com", nullptr, nullptr}, |
| + }; |
| + |
| + for (size_t i = 0; i < arraysize(kReuseTestData); ++i) { |
|
vabr (Chromium)
2016/12/20 18:11:45
for (const auto& test_data : kReuseTestData) {
an
dvadym
2016/12/21 12:15:36
Done.
|
| + MockPasswordReuseDetectorConsumer mockConsumer; |
|
vabr (Chromium)
2016/12/20 18:11:45
nit: mockConsumer -> mock_consumer
dvadym
2016/12/21 12:15:36
Done.
|
| + const auto& test_data = kReuseTestData[i]; |
| + bool is_reuse_expected = test_data.reused_password; |
| + if (is_reuse_expected) { |
|
vabr (Chromium)
2016/12/20 18:11:45
nit: Just inline test_data.reused_password here.
dvadym
2016/12/21 12:15:36
Done.
|
| + EXPECT_CALL(mockConsumer, |
| + OnReuseFound(base::WideToUTF16(test_data.reused_password), |
| + std::string(test_data.reuse_domain))); |
| + } else { |
| + EXPECT_CALL(mockConsumer, OnReuseFound(_, _)).Times(0); |
| + } |
| + |
| + store->CheckReuse(base::WideToUTF16(test_data.input), test_data.domain, |
| + &mockConsumer); |
| + base::RunLoop().RunUntilIdle(); |
| + } |
| + |
| + store->ShutdownOnUIThread(); |
| + base::RunLoop().RunUntilIdle(); |
| +} |
| + |
| } // namespace password_manager |