Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(48)

Side by Side Diff: chrome/browser/ui/passwords/password_manager_presenter_unittest.cc

Issue 589353003: Revert "Allow editing passwords in settings/passwords" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/macros.h"
6 #include "base/strings/utf_string_conversions.h" 5 #include "base/strings/utf_string_conversions.h"
7 #include "chrome/browser/password_manager/mock_password_store_service.h" 6 #include "chrome/browser/password_manager/mock_password_store_service.h"
8 #include "chrome/browser/password_manager/password_store_factory.h" 7 #include "chrome/browser/password_manager/password_store_factory.h"
9 #include "chrome/browser/ui/passwords/password_manager_presenter.h" 8 #include "chrome/browser/ui/passwords/password_manager_presenter.h"
10 #include "chrome/browser/ui/passwords/password_ui_view.h" 9 #include "chrome/browser/ui/passwords/password_ui_view.h"
11 #include "chrome/test/base/testing_profile.h" 10 #include "chrome/test/base/testing_profile.h"
12 #include "components/password_manager/core/browser/mock_password_store.h" 11 #include "components/password_manager/core/browser/mock_password_store.h"
13 #include "testing/gmock/include/gmock/gmock.h" 12 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
15 14
16 using base::ASCIIToUTF16; 15 using base::ASCIIToUTF16;
17 using testing::Eq; 16 using testing::Eq;
18 using testing::Field;
19 using testing::Property; 17 using testing::Property;
20 18
21 class MockPasswordUIView : public PasswordUIView { 19 class MockPasswordUIView : public PasswordUIView {
22 public: 20 public:
23 explicit MockPasswordUIView(Profile* profile) 21 explicit MockPasswordUIView(Profile* profile)
24 : profile_(profile), password_manager_presenter_(this) { 22 : profile_(profile), password_manager_presenter_(this) {
25 password_manager_presenter_.Initialize(); 23 password_manager_presenter_.Initialize();
26 } 24 }
27 virtual ~MockPasswordUIView() {} 25 virtual ~MockPasswordUIView() {}
28 virtual Profile* GetProfile() OVERRIDE; 26 virtual Profile* GetProfile() OVERRIDE;
(...skipping 23 matching lines...) Expand all
52 50
53 class PasswordManagerPresenterTest : public testing::Test { 51 class PasswordManagerPresenterTest : public testing::Test {
54 protected: 52 protected:
55 PasswordManagerPresenterTest() {} 53 PasswordManagerPresenterTest() {}
56 54
57 virtual ~PasswordManagerPresenterTest() {} 55 virtual ~PasswordManagerPresenterTest() {}
58 virtual void SetUp() OVERRIDE { 56 virtual void SetUp() OVERRIDE {
59 PasswordStoreFactory::GetInstance()->SetTestingFactory( 57 PasswordStoreFactory::GetInstance()->SetTestingFactory(
60 &profile_, MockPasswordStoreService::Build); 58 &profile_, MockPasswordStoreService::Build);
61 mock_controller_.reset(new MockPasswordUIView(&profile_)); 59 mock_controller_.reset(new MockPasswordUIView(&profile_));
62 mock_store_ = static_cast<password_manager::MockPasswordStore*>(
63 PasswordStoreFactory::GetForProfile(&profile_,
64 Profile::EXPLICIT_ACCESS).get());
65 } 60 }
66 void AddPasswordEntry(const GURL& origin, 61 void AddPasswordEntry(const GURL& origin,
67 const std::string& user_name, 62 const std::string& user_name,
68 const std::string& password); 63 const std::string& password);
69 void AddPasswordException(const GURL& origin); 64 void AddPasswordException(const GURL& origin);
70 void UpdateLists(); 65 void UpdateLists();
71 MockPasswordUIView* GetUIController() { return mock_controller_.get(); } 66 MockPasswordUIView* GetUIController() { return mock_controller_.get(); }
72 PasswordManagerPresenter* GetPasswordManagerPresenter() {
73 return mock_controller_->GetPasswordManagerPresenter();
74 }
75 password_manager::MockPasswordStore* GetPasswordStore() {
76 return mock_store_.get();
77 }
78 67
79 private: 68 private:
80 TestingProfile profile_; 69 TestingProfile profile_;
81 scoped_ptr<MockPasswordUIView> mock_controller_; 70 scoped_ptr<MockPasswordUIView> mock_controller_;
82 scoped_refptr<password_manager::MockPasswordStore> mock_store_;
83 71
84 DISALLOW_COPY_AND_ASSIGN(PasswordManagerPresenterTest); 72 DISALLOW_COPY_AND_ASSIGN(PasswordManagerPresenterTest);
85 }; 73 };
86 74
87 void PasswordManagerPresenterTest::AddPasswordEntry( 75 void PasswordManagerPresenterTest::AddPasswordEntry(
88 const GURL& origin, 76 const GURL& origin,
89 const std::string& user_name, 77 const std::string& user_name,
90 const std::string& password) { 78 const std::string& password) {
91 autofill::PasswordForm* form = new autofill::PasswordForm(); 79 autofill::PasswordForm* form = new autofill::PasswordForm();
92 form->origin = origin; 80 form->origin = origin;
93 form->username_element = ASCIIToUTF16("Email"); 81 form->username_element = base::ASCIIToUTF16("Email");
94 form->username_value = ASCIIToUTF16(user_name); 82 form->username_value = base::ASCIIToUTF16(user_name);
95 form->password_element = ASCIIToUTF16("Passwd"); 83 form->password_element = base::ASCIIToUTF16("Passwd");
96 form->password_value = ASCIIToUTF16(password); 84 form->password_value = base::ASCIIToUTF16(password);
97 GetPasswordManagerPresenter()->password_list_.push_back(form); 85 mock_controller_->GetPasswordManagerPresenter()->password_list_
86 .push_back(form);
98 } 87 }
99 88
100 void PasswordManagerPresenterTest::AddPasswordException(const GURL& origin) { 89 void PasswordManagerPresenterTest::AddPasswordException(const GURL& origin) {
101 autofill::PasswordForm* form = new autofill::PasswordForm(); 90 autofill::PasswordForm* form = new autofill::PasswordForm();
102 form->origin = origin; 91 form->origin = origin;
103 GetPasswordManagerPresenter()->password_exception_list_.push_back(form); 92 mock_controller_->GetPasswordManagerPresenter()->password_exception_list_
93 .push_back(form);
104 } 94 }
105 95
106 void PasswordManagerPresenterTest::UpdateLists() { 96 void PasswordManagerPresenterTest::UpdateLists() {
107 GetPasswordManagerPresenter()->SetPasswordList(); 97 mock_controller_->GetPasswordManagerPresenter()->SetPasswordList();
108 GetPasswordManagerPresenter()->SetPasswordExceptionList(); 98 mock_controller_->GetPasswordManagerPresenter()->SetPasswordExceptionList();
109 } 99 }
110 100
111 namespace { 101 namespace {
112 102
113 TEST_F(PasswordManagerPresenterTest, UIControllerIsCalled) { 103 TEST_F(PasswordManagerPresenterTest, UIControllerIsCalled) {
114 EXPECT_CALL( 104 EXPECT_CALL(
115 *GetUIController(), 105 *GetUIController(),
116 SetPasswordList( 106 SetPasswordList(
117 Property(&ScopedVector<autofill::PasswordForm>::size, Eq(0u)), 107 Property(&ScopedVector<autofill::PasswordForm>::size, Eq(0u)),
118 testing::_)); 108 testing::_));
(...skipping 29 matching lines...) Expand all
148 *GetUIController(), 138 *GetUIController(),
149 SetPasswordList( 139 SetPasswordList(
150 Property(&ScopedVector<autofill::PasswordForm>::size, Eq(2u)), 140 Property(&ScopedVector<autofill::PasswordForm>::size, Eq(2u)),
151 testing::_)); 141 testing::_));
152 EXPECT_CALL(*GetUIController(), 142 EXPECT_CALL(*GetUIController(),
153 SetPasswordExceptionList(Property( 143 SetPasswordExceptionList(Property(
154 &ScopedVector<autofill::PasswordForm>::size, Eq(1u)))); 144 &ScopedVector<autofill::PasswordForm>::size, Eq(1u))));
155 UpdateLists(); 145 UpdateLists();
156 } 146 }
157 147
158 // AddPassword and UpdatePassword are never called on Android.
159 #if !defined(OS_ANDROID)
160 TEST_F(PasswordManagerPresenterTest, CallAddPassword) {
161 GURL basic_origin("http://host.com");
162 base::string16 username = ASCIIToUTF16("username");
163 base::string16 password = ASCIIToUTF16("password");
164 EXPECT_CALL(
165 *GetPasswordStore(),
166 AddLogin(testing::AllOf(
167 Field(&autofill::PasswordForm::signon_realm, Eq(basic_origin.spec())),
168 Field(&autofill::PasswordForm::origin, Eq(basic_origin)),
169 Field(&autofill::PasswordForm::username_value, Eq(username)),
170 Field(&autofill::PasswordForm::password_value, Eq(password)),
171 Field(&autofill::PasswordForm::ssl_valid, Eq(false)))));
172 GetPasswordManagerPresenter()->AddPassword(basic_origin, username, password);
173
174 GURL complex_origin("https://foo:bar@host.com:1234/path?query=v#ref");
175 EXPECT_CALL(
176 *GetPasswordStore(),
177 AddLogin(testing::AllOf(
178 Field(&autofill::PasswordForm::signon_realm,
179 Eq("https://host.com:1234/")),
180 Field(&autofill::PasswordForm::origin,
181 Eq(GURL("https://host.com:1234/path"))),
182 Field(&autofill::PasswordForm::username_value, Eq(username)),
183 Field(&autofill::PasswordForm::password_value, Eq(password)),
184 Field(&autofill::PasswordForm::ssl_valid, Eq(true)))));
185 GetPasswordManagerPresenter()->AddPassword(complex_origin,
186 username,
187 password);
188 }
189
190 TEST_F(PasswordManagerPresenterTest, CallUpdatePassword) {
191 GURL origin1("http://host.com");
192 static const char kUsername1[] = "username";
193 AddPasswordEntry(origin1, kUsername1, "password");
194 GURL origin2("https://example.com");
195 static const char kUsername2[] = "testname";
196 AddPasswordEntry(origin2, kUsername2, "abcd");
197
198 base::string16 new_password = ASCIIToUTF16("testpassword");
199 EXPECT_CALL(
200 *GetPasswordStore(),
201 UpdateLogin(testing::AllOf(
202 Field(&autofill::PasswordForm::origin, Eq(origin1)),
203 Field(&autofill::PasswordForm::username_value,
204 Eq(ASCIIToUTF16(kUsername1))),
205 Field(&autofill::PasswordForm::password_value,
206 Eq(new_password)))));
207 GetPasswordManagerPresenter()->UpdatePassword(0, new_password);
208
209 base::string16 new_password_again = ASCIIToUTF16("testpassword_again");
210 EXPECT_CALL(
211 *GetPasswordStore(),
212 UpdateLogin(testing::AllOf(
213 Field(&autofill::PasswordForm::origin, Eq(origin1)),
214 Field(&autofill::PasswordForm::username_value,
215 Eq(ASCIIToUTF16(kUsername1))),
216 Field(&autofill::PasswordForm::password_value,
217 Eq(new_password_again)))));
218 GetPasswordManagerPresenter()->UpdatePassword(0, new_password_again);
219
220 base::string16 another_password = ASCIIToUTF16("mypassword");
221 EXPECT_CALL(
222 *GetPasswordStore(),
223 UpdateLogin(testing::AllOf(
224 Field(&autofill::PasswordForm::origin, Eq(origin2)),
225 Field(&autofill::PasswordForm::username_value,
226 Eq(ASCIIToUTF16(kUsername2))),
227 Field(&autofill::PasswordForm::password_value,
228 Eq(another_password)))));
229 GetPasswordManagerPresenter()->UpdatePassword(1, another_password);
230 }
231 #endif // !defined(OS_ANDROID)
232
233 TEST(PasswordManagerPresenterTestSimple, CallCheckOriginValidityForAdding) {
234 static const char* const kValidOrigins[] = {
235 "http://host.com",
236 "http://host.com/path",
237 "https://host.com",
238 "https://foo:bar@host.com/path?query=v#ref",
239 "https://foo:bar@host.com:1234/path?query=v#ref"
240 };
241 for (size_t i = 0; i < arraysize(kValidOrigins); ++i) {
242 SCOPED_TRACE(kValidOrigins[i]);
243 EXPECT_TRUE(PasswordManagerPresenter::CheckOriginValidityForAdding(
244 GURL(kValidOrigins[i])));
245 }
246
247 static const char* const kInvalidOrigins[] = {
248 "noscheme",
249 "invalidscheme:host.com",
250 "ftp://ftp.host.com",
251 "about:test"
252 };
253 for (size_t i = 0; i < arraysize(kInvalidOrigins); ++i) {
254 SCOPED_TRACE(kInvalidOrigins[i]);
255 EXPECT_FALSE(PasswordManagerPresenter::CheckOriginValidityForAdding(
256 GURL(kInvalidOrigins[i])));
257 }
258 }
259
260 } // namespace 148 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/passwords/password_manager_presenter.cc ('k') | chrome/browser/ui/webui/options/password_manager_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698