Chromium Code Reviews| 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 1cee3092e502b9b5c821f1dce7b020c307dee802..71d0d9c7de251d344954ff5fea4f8f75959c276a 100644 |
| --- a/chrome/browser/ui/passwords/password_manager_presenter_unittest.cc |
| +++ b/chrome/browser/ui/passwords/password_manager_presenter_unittest.cc |
| @@ -2,6 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include "base/memory/ref_counted.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "chrome/browser/password_manager/mock_password_store_service.h" |
| #include "chrome/browser/password_manager/password_store_factory.h" |
| @@ -13,7 +14,9 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| using base::ASCIIToUTF16; |
| +using testing::AllOf; |
| using testing::Eq; |
| +using testing::Field; |
| using testing::Property; |
| class MockPasswordUIView : public PasswordUIView { |
| @@ -57,6 +60,9 @@ class PasswordManagerPresenterTest : public testing::Test { |
| PasswordStoreFactory::GetInstance()->SetTestingFactory( |
| &profile_, MockPasswordStoreService::Build); |
| mock_controller_.reset(new MockPasswordUIView(&profile_)); |
| + mock_store_ = static_cast<password_manager::MockPasswordStore*>( |
| + PasswordStoreFactory::GetForProfile(&profile_, |
| + Profile::EXPLICIT_ACCESS).get()); |
| } |
| void AddPasswordEntry(const GURL& origin, |
| const std::string& user_name, |
| @@ -64,10 +70,17 @@ class PasswordManagerPresenterTest : public testing::Test { |
| void AddPasswordException(const GURL& origin); |
| void UpdateLists(); |
| MockPasswordUIView* GetUIController() { return mock_controller_.get(); } |
| + PasswordManagerPresenter* GetPasswordManagerPresenter() { |
| + return mock_controller_->GetPasswordManagerPresenter(); |
| + } |
| + password_manager::MockPasswordStore* GetPasswordStore() { |
| + return mock_store_.get(); |
| + } |
| private: |
| TestingProfile profile_; |
| scoped_ptr<MockPasswordUIView> mock_controller_; |
| + scoped_refptr<password_manager::MockPasswordStore> mock_store_; |
| DISALLOW_COPY_AND_ASSIGN(PasswordManagerPresenterTest); |
| }; |
| @@ -82,20 +95,18 @@ void PasswordManagerPresenterTest::AddPasswordEntry( |
| form->username_value = base::ASCIIToUTF16(user_name); |
| form->password_element = base::ASCIIToUTF16("Passwd"); |
| form->password_value = base::ASCIIToUTF16(password); |
| - mock_controller_->GetPasswordManagerPresenter()->password_list_ |
| - .push_back(form); |
| + GetPasswordManagerPresenter()->password_list_.push_back(form); |
| } |
| void PasswordManagerPresenterTest::AddPasswordException(const GURL& origin) { |
| autofill::PasswordForm* form = new autofill::PasswordForm(); |
| form->origin = origin; |
| - mock_controller_->GetPasswordManagerPresenter()->password_exception_list_ |
| - .push_back(form); |
| + GetPasswordManagerPresenter()->password_exception_list_.push_back(form); |
| } |
| void PasswordManagerPresenterTest::UpdateLists() { |
| - mock_controller_->GetPasswordManagerPresenter()->SetPasswordList(); |
| - mock_controller_->GetPasswordManagerPresenter()->SetPasswordExceptionList(); |
| + GetPasswordManagerPresenter()->SetPasswordList(); |
| + GetPasswordManagerPresenter()->SetPasswordExceptionList(); |
| } |
| namespace { |
| @@ -145,4 +156,75 @@ TEST_F(PasswordManagerPresenterTest, UIControllerIsCalled) { |
| UpdateLists(); |
| } |
| +TEST_F(PasswordManagerPresenterTest, CallAddPassword) { |
| + GURL basic_origin("http://host.com"); |
| + base::string16 username = base::ASCIIToUTF16("username"); |
| + base::string16 password = base::ASCIIToUTF16("password"); |
| + EXPECT_CALL( |
| + *GetPasswordStore(), |
| + AddLogin(AllOf( |
| + Field(&autofill::PasswordForm::signon_realm, Eq(basic_origin.spec())), |
| + Field(&autofill::PasswordForm::origin, Eq(basic_origin)), |
| + Field(&autofill::PasswordForm::username_value, Eq(username)), |
| + Field(&autofill::PasswordForm::password_value, Eq(password)), |
| + Field(&autofill::PasswordForm::ssl_valid, Eq(false))))); |
| + GetPasswordManagerPresenter()->AddPassword(basic_origin, username, password); |
| + |
| + GURL complex_origin("https://foo:bar@host.com/path?query=v#ref"); |
| + EXPECT_CALL( |
| + *GetPasswordStore(), |
| + AddLogin(AllOf( |
| + Field(&autofill::PasswordForm::signon_realm, Eq("https://host.com/")), |
| + Field(&autofill::PasswordForm::origin, |
| + Eq(GURL("https://host.com/path"))), |
| + Field(&autofill::PasswordForm::username_value, Eq(username)), |
| + Field(&autofill::PasswordForm::password_value, Eq(password)), |
| + Field(&autofill::PasswordForm::ssl_valid, Eq(true))))); |
| + GetPasswordManagerPresenter()->AddPassword(complex_origin, |
| + username, |
| + password); |
| +} |
| + |
| +TEST_F(PasswordManagerPresenterTest, CallUpdatePassword) { |
| + GURL origin1("http://host.com"); |
| + std::string username1 = "username"; |
| + AddPasswordEntry(origin1, username1, "password"); |
| + GURL origin2("https://example.com"); |
| + std::string username2 = "testname"; |
| + AddPasswordEntry(origin2, username2, "abcd"); |
| + |
| + base::string16 new_password = base::ASCIIToUTF16("testpassword"); |
| + EXPECT_CALL( |
| + *GetPasswordStore(), |
| + UpdateLogin(AllOf( |
| + Field(&autofill::PasswordForm::origin, Eq(origin1)), |
| + Field(&autofill::PasswordForm::username_value, |
| + Eq(base::ASCIIToUTF16(username1))), |
| + Field(&autofill::PasswordForm::password_value, |
| + Eq(new_password))))); |
| + GetPasswordManagerPresenter()->UpdatePassword(0, new_password); |
| + |
| + base::string16 new_password_again = base::ASCIIToUTF16("testpassword_again"); |
| + EXPECT_CALL( |
| + *GetPasswordStore(), |
| + UpdateLogin(AllOf( |
| + Field(&autofill::PasswordForm::origin, Eq(origin1)), |
| + Field(&autofill::PasswordForm::username_value, |
| + Eq(base::ASCIIToUTF16(username1))), |
| + Field(&autofill::PasswordForm::password_value, |
| + Eq(new_password_again))))); |
| + GetPasswordManagerPresenter()->UpdatePassword(0, new_password_again); |
| + |
| + base::string16 another_password = base::ASCIIToUTF16("mypassword"); |
| + EXPECT_CALL( |
| + *GetPasswordStore(), |
| + UpdateLogin(AllOf( |
| + Field(&autofill::PasswordForm::origin, Eq(origin2)), |
| + Field(&autofill::PasswordForm::username_value, |
| + Eq(base::ASCIIToUTF16(username2))), |
| + Field(&autofill::PasswordForm::password_value, |
| + Eq(another_password))))); |
| + GetPasswordManagerPresenter()->UpdatePassword(1, another_password); |
| +} |
| + |
|
vabr (Chromium)
2014/08/25 07:35:07
Could you please also add a simple test for CheckO
jaekyeom
2014/08/26 05:34:48
Done.
|
| } // namespace |