| Index: chrome/browser/ui/passwords/password_manager_presenter_unittest.cc
|
| diff --git a/chrome/browser/ui/passwords/password_manager_presenter_unittest.cc b/chrome/browser/ui/passwords/password_manager_presenter_unittest.cc
|
| index d0855f8438665f6b46a1a8b918ee86689604c1c2..f81376906dae98c25a7652049356f26640ec2a83 100644
|
| --- a/chrome/browser/ui/passwords/password_manager_presenter_unittest.cc
|
| +++ b/chrome/browser/ui/passwords/password_manager_presenter_unittest.cc
|
| @@ -30,6 +30,7 @@ struct SortEntry {
|
| const char* const username;
|
| const char* const password;
|
| const char* const affiliated_web_realm;
|
| + const char* const federation;
|
| const int expected_position;
|
| };
|
|
|
| @@ -90,7 +91,7 @@ class PasswordManagerPresenterTest : public testing::Test {
|
| MockPasswordUIView* GetUIController() { return mock_controller_.get(); }
|
| void SortAndCheckPositions(const SortEntry test_entries[],
|
| size_t number_of_entries,
|
| - bool username_and_password_in_key);
|
| + PasswordEntryType entry_type);
|
|
|
| private:
|
| content::TestBrowserThreadBundle thread_bundle_;
|
| @@ -129,7 +130,7 @@ void PasswordManagerPresenterTest::UpdateLists() {
|
| void PasswordManagerPresenterTest::SortAndCheckPositions(
|
| const SortEntry test_entries[],
|
| size_t number_of_entries,
|
| - bool username_and_password_in_key) {
|
| + PasswordEntryType entry_type) {
|
| std::vector<std::unique_ptr<autofill::PasswordForm>> list;
|
| size_t expected_number_of_unique_entries = 0;
|
| for (size_t i = 0; i < number_of_entries; i++) {
|
| @@ -137,9 +138,11 @@ void PasswordManagerPresenterTest::SortAndCheckPositions(
|
| std::unique_ptr<autofill::PasswordForm> form(new autofill::PasswordForm());
|
| form->signon_realm = entry.origin;
|
| form->origin = GURL(base::ASCIIToUTF16(entry.origin));
|
| - if (username_and_password_in_key) {
|
| + if (entry_type == PasswordEntryType::SAVED) {
|
| form->username_value = base::ASCIIToUTF16(entry.username);
|
| form->password_value = base::ASCIIToUTF16(entry.password);
|
| + if (entry.federation != nullptr)
|
| + form->federation_origin = url::Origin(GURL(entry.federation));
|
| }
|
| if (entry.affiliated_web_realm)
|
| form->affiliated_web_realm = entry.affiliated_web_realm;
|
| @@ -150,7 +153,7 @@ void PasswordManagerPresenterTest::SortAndCheckPositions(
|
|
|
| DuplicatesMap duplicates;
|
| mock_controller_->GetPasswordManagerPresenter()->SortEntriesAndHideDuplicates(
|
| - &list, &duplicates, username_and_password_in_key);
|
| + &list, &duplicates, entry_type);
|
|
|
| ASSERT_EQ(expected_number_of_unique_entries, list.size());
|
| ASSERT_EQ(number_of_entries - expected_number_of_unique_entries,
|
| @@ -162,11 +165,14 @@ void PasswordManagerPresenterTest::SortAndCheckPositions(
|
| << entry.expected_position);
|
| EXPECT_EQ(GURL(base::ASCIIToUTF16(entry.origin)),
|
| list[entry.expected_position]->origin);
|
| - if (username_and_password_in_key) {
|
| + if (entry_type == PasswordEntryType::SAVED) {
|
| EXPECT_EQ(base::ASCIIToUTF16(entry.username),
|
| list[entry.expected_position]->username_value);
|
| EXPECT_EQ(base::ASCIIToUTF16(entry.password),
|
| list[entry.expected_position]->password_value);
|
| + if (entry.federation != nullptr)
|
| + EXPECT_EQ(url::Origin(GURL(entry.federation)),
|
| + list[entry.expected_position]->federation_origin);
|
| }
|
| }
|
| }
|
| @@ -221,63 +227,82 @@ TEST_F(PasswordManagerPresenterTest, UIControllerIsCalled) {
|
|
|
| TEST_F(PasswordManagerPresenterTest, Sorting_DifferentOrigins) {
|
| const SortEntry test_cases[] = {
|
| - {"http://example-b.com", "user_a", "pwd", nullptr, 2},
|
| - {"http://example-a.com", "user_a1", "pwd", nullptr, 0},
|
| - {"http://example-a.com", "user_a2", "pwd", nullptr, 1},
|
| - {"http://example-c.com", "user_a", "pwd", nullptr, 3}};
|
| - SortAndCheckPositions(test_cases, arraysize(test_cases), true);
|
| + {"http://example-b.com", "user_a", "pwd", nullptr, nullptr, 2},
|
| + {"http://example-a.com", "user_a1", "pwd", nullptr, nullptr, 0},
|
| + {"http://example-a.com", "user_a2", "pwd", nullptr, nullptr, 1},
|
| + {"http://example-c.com", "user_a", "pwd", nullptr, nullptr, 3}};
|
| + SortAndCheckPositions(test_cases, arraysize(test_cases),
|
| + PasswordEntryType::SAVED);
|
| }
|
|
|
| TEST_F(PasswordManagerPresenterTest, Sorting_DifferentUsernames) {
|
| const SortEntry test_cases[] = {
|
| - {"http://example.com", "user_a", "pwd", nullptr, 0},
|
| - {"http://example.com", "user_c", "pwd", nullptr, 2},
|
| - {"http://example.com", "user_b", "pwd", nullptr, 1}};
|
| - SortAndCheckPositions(test_cases, arraysize(test_cases), true);
|
| + {"http://example.com", "user_a", "pwd", nullptr, nullptr, 0},
|
| + {"http://example.com", "user_c", "pwd", nullptr, nullptr, 2},
|
| + {"http://example.com", "user_b", "pwd", nullptr, nullptr, 1}};
|
| + SortAndCheckPositions(test_cases, arraysize(test_cases),
|
| + PasswordEntryType::SAVED);
|
| }
|
|
|
| TEST_F(PasswordManagerPresenterTest, Sorting_DifferentPasswords) {
|
| const SortEntry test_cases[] = {
|
| - {"http://example.com", "user_a", "1", nullptr, 0},
|
| - {"http://example.com", "user_a", "2", nullptr, 1},
|
| - {"http://example.com", "user_a", "3", nullptr, 2}};
|
| - SortAndCheckPositions(test_cases, arraysize(test_cases), true);
|
| + {"http://example.com", "user_a", "1", nullptr, nullptr, 0},
|
| + {"http://example.com", "user_a", "2", nullptr, nullptr, 1},
|
| + {"http://example.com", "user_a", "3", nullptr, nullptr, 2}};
|
| + SortAndCheckPositions(test_cases, arraysize(test_cases),
|
| + PasswordEntryType::SAVED);
|
| }
|
|
|
| TEST_F(PasswordManagerPresenterTest, Sorting_HideDuplicates) {
|
| const SortEntry test_cases[] = {
|
| - {"http://example.com", "user_a", "pwd", nullptr, 0},
|
| + {"http://example.com", "user_a", "pwd", nullptr, nullptr, 0},
|
| // Different username.
|
| - {"http://example.com", "user_b", "pwd", nullptr, 2},
|
| + {"http://example.com", "user_b", "pwd", nullptr, nullptr, 2},
|
| // Different password.
|
| - {"http://example.com", "user_a", "secret", nullptr, 1},
|
| + {"http://example.com", "user_a", "secret", nullptr, nullptr, 1},
|
| // Different origin.
|
| - {"http://sub1.example.com", "user_a", "pwd", nullptr, 3},
|
| - {"http://example.com", "user_a", "pwd", nullptr, -1} // Hide it.
|
| + {"http://sub1.example.com", "user_a", "pwd", nullptr, nullptr, 3},
|
| + {"http://example.com", "user_a", "pwd", nullptr, nullptr, -1} // Hide it.
|
| };
|
| - SortAndCheckPositions(test_cases, arraysize(test_cases), true);
|
| + SortAndCheckPositions(test_cases, arraysize(test_cases),
|
| + PasswordEntryType::SAVED);
|
| }
|
|
|
| -TEST_F(PasswordManagerPresenterTest, Sorting_DontUseUsernameAndPasswordInKey) {
|
| +TEST_F(PasswordManagerPresenterTest, Sorting_PasswordExceptions) {
|
| const SortEntry test_cases[] = {
|
| - {"http://example-b.com", nullptr, nullptr, nullptr, 1},
|
| - {"http://example-a.com", nullptr, nullptr, nullptr, 0},
|
| - {"http://example-a.com", nullptr, nullptr, nullptr, -1}, // Hide it.
|
| - {"http://example-c.com", nullptr, nullptr, nullptr, 2}};
|
| - SortAndCheckPositions(test_cases, arraysize(test_cases), false);
|
| + {"http://example-b.com", nullptr, nullptr, nullptr, nullptr, 1},
|
| + {"http://example-a.com", nullptr, nullptr, nullptr, nullptr, 0},
|
| + {"http://example-a.com", nullptr, nullptr, nullptr, nullptr,
|
| + -1}, // Hide it.
|
| + {"http://example-c.com", nullptr, nullptr, nullptr, nullptr, 2}};
|
| + SortAndCheckPositions(test_cases, arraysize(test_cases),
|
| + PasswordEntryType::BLACKLISTED);
|
| }
|
|
|
| TEST_F(PasswordManagerPresenterTest, Sorting_AndroidCredentials) {
|
| const SortEntry test_cases[] = {
|
| - {"https://alpha.com", "user", "secret", nullptr, 0},
|
| - {"android://hash@com.alpha", "user", "secret", "https://alpha.com", 1},
|
| - {"android://hash@com.alpha", "user", "secret", "https://alpha.com", -1},
|
| - {"android://hash@com.alpha", "user", "secret", nullptr, 2},
|
| -
|
| + {"https://alpha.com", "user", "secret", nullptr, nullptr, 0},
|
| + {"android://hash@com.alpha", "user", "secret", "https://alpha.com",
|
| + nullptr, 1},
|
| + {"android://hash@com.alpha", "user", "secret", "https://alpha.com",
|
| + nullptr, -1},
|
| + {"android://hash@com.alpha", "user", "secret", nullptr, nullptr, 2},
|
| {"android://hash@com.betta.android", "user", "secret",
|
| - "https://betta.com", 3},
|
| - {"android://hash@com.betta.android", "user", "secret", nullptr, 4}};
|
| - SortAndCheckPositions(test_cases, arraysize(test_cases), true);
|
| + "https://betta.com", nullptr, 3},
|
| + {"android://hash@com.betta.android", "user", "secret", nullptr, nullptr,
|
| + 4}};
|
| + SortAndCheckPositions(test_cases, arraysize(test_cases),
|
| + PasswordEntryType::SAVED);
|
| +}
|
| +
|
| +TEST_F(PasswordManagerPresenterTest, Sorting_Federations) {
|
| + const SortEntry test_cases[] = {
|
| + {"https://example.com", "user", "secret", nullptr, nullptr, 0},
|
| + {"https://example.com", "user", "secret", nullptr, "https://fed1.com", 1},
|
| + {"https://example.com", "user", "secret", nullptr, "https://fed2.com",
|
| + 2}};
|
| + SortAndCheckPositions(test_cases, arraysize(test_cases),
|
| + PasswordEntryType::SAVED);
|
| }
|
|
|
| } // namespace
|
|
|