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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/message_loop/message_loop.h" | |
9 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
11 #include "chrome/browser/password_manager/password_form_manager.h" | 10 #include "chrome/browser/password_manager/password_form_manager.h" |
12 #include "chrome/browser/password_manager/password_manager.h" | 11 #include "chrome/browser/password_manager/password_manager.h" |
13 #include "chrome/browser/password_manager/password_manager_delegate.h" | 12 #include "chrome/browser/password_manager/password_manager_delegate.h" |
14 #include "chrome/browser/password_manager/password_store.h" | 13 #include "chrome/browser/password_manager/password_store.h" |
15 #include "chrome/browser/password_manager/password_store_factory.h" | 14 #include "chrome/browser/password_manager/password_store_factory.h" |
16 #include "chrome/browser/password_manager/test_password_store.h" | 15 #include "chrome/browser/password_manager/test_password_store.h" |
17 #include "chrome/browser/profiles/profile_manager.h" | 16 #include "chrome/browser/profiles/profile_manager.h" |
18 #include "chrome/test/base/testing_profile.h" | 17 #include "chrome/test/base/testing_profile.h" |
19 #include "content/public/common/password_form.h" | 18 #include "content/public/common/password_form.h" |
| 19 #include "content/public/test/test_browser_thread_bundle.h" |
20 #include "content/public/test/test_utils.h" | 20 #include "content/public/test/test_utils.h" |
21 #include "testing/gmock/include/gmock/gmock.h" | 21 #include "testing/gmock/include/gmock/gmock.h" |
22 | 22 |
23 using content::PasswordForm; | 23 using content::PasswordForm; |
24 | 24 |
25 using ::testing::Eq; | 25 using ::testing::Eq; |
26 | 26 |
27 class TestPasswordManagerDelegate : public PasswordManagerDelegate { | 27 class TestPasswordManagerDelegate : public PasswordManagerDelegate { |
28 public: | 28 public: |
29 explicit TestPasswordManagerDelegate(Profile* profile) : profile_(profile) {} | 29 explicit TestPasswordManagerDelegate(Profile* profile) : profile_(profile) {} |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 size_t num_sent_messages() { | 67 size_t num_sent_messages() { |
68 return num_sent_messages_; | 68 return num_sent_messages_; |
69 } | 69 } |
70 | 70 |
71 private: | 71 private: |
72 size_t num_sent_messages_; | 72 size_t num_sent_messages_; |
73 }; | 73 }; |
74 | 74 |
75 class PasswordFormManagerTest : public testing::Test { | 75 class PasswordFormManagerTest : public testing::Test { |
76 public: | 76 public: |
77 PasswordFormManagerTest() { | |
78 } | |
79 virtual void SetUp() { | 77 virtual void SetUp() { |
80 observed_form_.origin = GURL("http://accounts.google.com/a/LoginAuth"); | 78 observed_form_.origin = GURL("http://accounts.google.com/a/LoginAuth"); |
81 observed_form_.action = GURL("http://accounts.google.com/a/Login"); | 79 observed_form_.action = GURL("http://accounts.google.com/a/Login"); |
82 observed_form_.username_element = ASCIIToUTF16("Email"); | 80 observed_form_.username_element = ASCIIToUTF16("Email"); |
83 observed_form_.password_element = ASCIIToUTF16("Passwd"); | 81 observed_form_.password_element = ASCIIToUTF16("Passwd"); |
84 observed_form_.submit_element = ASCIIToUTF16("signIn"); | 82 observed_form_.submit_element = ASCIIToUTF16("signIn"); |
85 observed_form_.signon_realm = "http://accounts.google.com"; | 83 observed_form_.signon_realm = "http://accounts.google.com"; |
86 | 84 |
87 saved_match_ = observed_form_; | 85 saved_match_ = observed_form_; |
88 saved_match_.origin = GURL("http://accounts.google.com/a/ServiceLoginAuth"); | 86 saved_match_.origin = GURL("http://accounts.google.com/a/ServiceLoginAuth"); |
89 saved_match_.action = GURL("http://accounts.google.com/a/ServiceLogin"); | 87 saved_match_.action = GURL("http://accounts.google.com/a/ServiceLogin"); |
90 saved_match_.preferred = true; | 88 saved_match_.preferred = true; |
91 saved_match_.username_value = ASCIIToUTF16("test@gmail.com"); | 89 saved_match_.username_value = ASCIIToUTF16("test@gmail.com"); |
92 saved_match_.password_value = ASCIIToUTF16("test1"); | 90 saved_match_.password_value = ASCIIToUTF16("test1"); |
93 saved_match_.other_possible_usernames.push_back( | 91 saved_match_.other_possible_usernames.push_back( |
94 ASCIIToUTF16("test2@gmail.com")); | 92 ASCIIToUTF16("test2@gmail.com")); |
95 profile_ = new TestingProfile(); | |
96 } | |
97 | |
98 virtual void TearDown() { | |
99 delete profile_; | |
100 } | 93 } |
101 | 94 |
102 PasswordForm* GetPendingCredentials(PasswordFormManager* p) { | 95 PasswordForm* GetPendingCredentials(PasswordFormManager* p) { |
103 return &p->pending_credentials_; | 96 return &p->pending_credentials_; |
104 } | 97 } |
105 | 98 |
106 void SimulateMatchingPhase(PasswordFormManager* p, bool find_match) { | 99 void SimulateMatchingPhase(PasswordFormManager* p, bool find_match) { |
107 // Roll up the state to mock out the matching phase. | 100 // Roll up the state to mock out the matching phase. |
108 p->state_ = PasswordFormManager::POST_MATCHING_PHASE; | 101 p->state_ = PasswordFormManager::POST_MATCHING_PHASE; |
109 if (!find_match) | 102 if (!find_match) |
(...skipping 20 matching lines...) Expand all Loading... |
130 } | 123 } |
131 | 124 |
132 void SanitizePossibleUsernames(PasswordFormManager* p, PasswordForm* form) { | 125 void SanitizePossibleUsernames(PasswordFormManager* p, PasswordForm* form) { |
133 p->SanitizePossibleUsernames(form); | 126 p->SanitizePossibleUsernames(form); |
134 } | 127 } |
135 | 128 |
136 bool IgnoredResult(PasswordFormManager* p, PasswordForm* form) { | 129 bool IgnoredResult(PasswordFormManager* p, PasswordForm* form) { |
137 return p->IgnoreResult(*form); | 130 return p->IgnoreResult(*form); |
138 } | 131 } |
139 | 132 |
140 Profile* profile() { return profile_; } | 133 Profile* profile() { return &profile_; } |
141 | 134 |
142 PasswordForm* observed_form() { return &observed_form_; } | 135 PasswordForm* observed_form() { return &observed_form_; } |
143 PasswordForm* saved_match() { return &saved_match_; } | 136 PasswordForm* saved_match() { return &saved_match_; } |
144 PasswordForm* CreateSavedMatch(bool blacklisted) { | 137 PasswordForm* CreateSavedMatch(bool blacklisted) { |
145 // Owned by the caller of this method. | 138 // Owned by the caller of this method. |
146 PasswordForm* match = new PasswordForm(saved_match_); | 139 PasswordForm* match = new PasswordForm(saved_match_); |
147 match->blacklisted_by_user = blacklisted; | 140 match->blacklisted_by_user = blacklisted; |
148 return match; | 141 return match; |
149 } | 142 } |
150 | 143 |
151 private: | 144 private: |
| 145 content::TestBrowserThreadBundle thread_bundle_; |
| 146 TestingProfile profile_; |
152 PasswordForm observed_form_; | 147 PasswordForm observed_form_; |
153 PasswordForm saved_match_; | 148 PasswordForm saved_match_; |
154 Profile* profile_; | |
155 }; | 149 }; |
156 | 150 |
157 TEST_F(PasswordFormManagerTest, TestNewLogin) { | 151 TEST_F(PasswordFormManagerTest, TestNewLogin) { |
158 PasswordFormManager* manager = new PasswordFormManager( | 152 PasswordFormManager* manager = new PasswordFormManager( |
159 profile(), NULL, NULL, *observed_form(), false); | 153 profile(), NULL, NULL, *observed_form(), false); |
160 SimulateMatchingPhase(manager, false); | 154 SimulateMatchingPhase(manager, false); |
161 // User submits credentials for the observed form. | 155 // User submits credentials for the observed form. |
162 PasswordForm credentials = *observed_form(); | 156 PasswordForm credentials = *observed_form(); |
163 credentials.username_value = saved_match()->username_value; | 157 credentials.username_value = saved_match()->username_value; |
164 credentials.password_value = saved_match()->password_value; | 158 credentials.password_value = saved_match()->password_value; |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 login, | 320 login, |
327 PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 321 PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
328 EXPECT_TRUE(manager->IsNewLogin()); | 322 EXPECT_TRUE(manager->IsNewLogin()); |
329 // Check that the provisionally saved action URL is the same as the submitted | 323 // Check that the provisionally saved action URL is the same as the submitted |
330 // action URL, not the one observed on page load. | 324 // action URL, not the one observed on page load. |
331 EXPECT_EQ(new_action, | 325 EXPECT_EQ(new_action, |
332 GetPendingCredentials(manager.get())->action); | 326 GetPendingCredentials(manager.get())->action); |
333 } | 327 } |
334 | 328 |
335 TEST_F(PasswordFormManagerTest, TestAlternateUsername) { | 329 TEST_F(PasswordFormManagerTest, TestAlternateUsername) { |
336 // Need a MessageLoop for callbacks. | |
337 base::MessageLoop message_loop; | |
338 PasswordStoreFactory::GetInstance()->SetTestingFactory( | 330 PasswordStoreFactory::GetInstance()->SetTestingFactory( |
339 profile(), &TestPasswordStore::Create); | 331 profile(), &TestPasswordStore::Create); |
340 scoped_refptr<TestPasswordStore> password_store = | 332 scoped_refptr<TestPasswordStore> password_store = |
341 static_cast<TestPasswordStore*>( | 333 static_cast<TestPasswordStore*>( |
342 PasswordStoreFactory::GetForProfile(profile(), | 334 PasswordStoreFactory::GetForProfile(profile(), |
343 Profile::IMPLICIT_ACCESS).get()); | 335 Profile::IMPLICIT_ACCESS).get()); |
344 TestPasswordManagerDelegate delegate(profile()); | 336 TestPasswordManagerDelegate delegate(profile()); |
345 TestPasswordManager password_manager(&delegate); | 337 TestPasswordManager password_manager(&delegate); |
346 scoped_ptr<TestPasswordFormManager> manager(new TestPasswordFormManager( | 338 scoped_ptr<TestPasswordFormManager> manager(new TestPasswordFormManager( |
347 profile(), &password_manager, *observed_form(), false)); | 339 profile(), &password_manager, *observed_form(), false)); |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 | 529 |
538 SanitizePossibleUsernames(manager.get(), &credentials); | 530 SanitizePossibleUsernames(manager.get(), &credentials); |
539 | 531 |
540 // SSN, duplicate in |other_possible_usernames| and duplicate of | 532 // SSN, duplicate in |other_possible_usernames| and duplicate of |
541 // |username_value| all removed. | 533 // |username_value| all removed. |
542 expected.clear(); | 534 expected.clear(); |
543 expected.push_back(ASCIIToUTF16("duplicate")); | 535 expected.push_back(ASCIIToUTF16("duplicate")); |
544 expected.push_back(ASCIIToUTF16("random")); | 536 expected.push_back(ASCIIToUTF16("random")); |
545 EXPECT_THAT(credentials.other_possible_usernames, Eq(expected)); | 537 EXPECT_THAT(credentials.other_possible_usernames, Eq(expected)); |
546 } | 538 } |
OLD | NEW |