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 namespace { | 27 namespace { |
28 | 28 |
29 class TestPasswordManagerDelegate : public PasswordManagerDelegate { | 29 class TestPasswordManagerDelegate : public PasswordManagerDelegate { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 size_t num_sent_messages() { | 71 size_t num_sent_messages() { |
72 return num_sent_messages_; | 72 return num_sent_messages_; |
73 } | 73 } |
74 | 74 |
75 private: | 75 private: |
76 size_t num_sent_messages_; | 76 size_t num_sent_messages_; |
77 }; | 77 }; |
78 | 78 |
79 class PasswordFormManagerTest : public testing::Test { | 79 class PasswordFormManagerTest : public testing::Test { |
80 public: | 80 public: |
81 PasswordFormManagerTest() { | |
82 } | |
83 virtual void SetUp() { | 81 virtual void SetUp() { |
84 observed_form_.origin = GURL("http://accounts.google.com/a/LoginAuth"); | 82 observed_form_.origin = GURL("http://accounts.google.com/a/LoginAuth"); |
85 observed_form_.action = GURL("http://accounts.google.com/a/Login"); | 83 observed_form_.action = GURL("http://accounts.google.com/a/Login"); |
86 observed_form_.username_element = ASCIIToUTF16("Email"); | 84 observed_form_.username_element = ASCIIToUTF16("Email"); |
87 observed_form_.password_element = ASCIIToUTF16("Passwd"); | 85 observed_form_.password_element = ASCIIToUTF16("Passwd"); |
88 observed_form_.submit_element = ASCIIToUTF16("signIn"); | 86 observed_form_.submit_element = ASCIIToUTF16("signIn"); |
89 observed_form_.signon_realm = "http://accounts.google.com"; | 87 observed_form_.signon_realm = "http://accounts.google.com"; |
90 | 88 |
91 saved_match_ = observed_form_; | 89 saved_match_ = observed_form_; |
92 saved_match_.origin = GURL("http://accounts.google.com/a/ServiceLoginAuth"); | 90 saved_match_.origin = GURL("http://accounts.google.com/a/ServiceLoginAuth"); |
93 saved_match_.action = GURL("http://accounts.google.com/a/ServiceLogin"); | 91 saved_match_.action = GURL("http://accounts.google.com/a/ServiceLogin"); |
94 saved_match_.preferred = true; | 92 saved_match_.preferred = true; |
95 saved_match_.username_value = ASCIIToUTF16("test@gmail.com"); | 93 saved_match_.username_value = ASCIIToUTF16("test@gmail.com"); |
96 saved_match_.password_value = ASCIIToUTF16("test1"); | 94 saved_match_.password_value = ASCIIToUTF16("test1"); |
97 saved_match_.other_possible_usernames.push_back( | 95 saved_match_.other_possible_usernames.push_back( |
98 ASCIIToUTF16("test2@gmail.com")); | 96 ASCIIToUTF16("test2@gmail.com")); |
99 profile_ = new TestingProfile(); | |
100 } | |
101 | |
102 virtual void TearDown() { | |
103 delete profile_; | |
104 } | 97 } |
105 | 98 |
106 PasswordForm* GetPendingCredentials(PasswordFormManager* p) { | 99 PasswordForm* GetPendingCredentials(PasswordFormManager* p) { |
107 return &p->pending_credentials_; | 100 return &p->pending_credentials_; |
108 } | 101 } |
109 | 102 |
110 void SimulateMatchingPhase(PasswordFormManager* p, bool find_match) { | 103 void SimulateMatchingPhase(PasswordFormManager* p, bool find_match) { |
111 // Roll up the state to mock out the matching phase. | 104 // Roll up the state to mock out the matching phase. |
112 p->state_ = PasswordFormManager::POST_MATCHING_PHASE; | 105 p->state_ = PasswordFormManager::POST_MATCHING_PHASE; |
113 if (!find_match) | 106 if (!find_match) |
(...skipping 20 matching lines...) Expand all Loading... |
134 } | 127 } |
135 | 128 |
136 void SanitizePossibleUsernames(PasswordFormManager* p, PasswordForm* form) { | 129 void SanitizePossibleUsernames(PasswordFormManager* p, PasswordForm* form) { |
137 p->SanitizePossibleUsernames(form); | 130 p->SanitizePossibleUsernames(form); |
138 } | 131 } |
139 | 132 |
140 bool IgnoredResult(PasswordFormManager* p, PasswordForm* form) { | 133 bool IgnoredResult(PasswordFormManager* p, PasswordForm* form) { |
141 return p->IgnoreResult(*form); | 134 return p->IgnoreResult(*form); |
142 } | 135 } |
143 | 136 |
144 Profile* profile() { return profile_; } | 137 Profile* profile() { return &profile_; } |
145 | 138 |
146 PasswordForm* observed_form() { return &observed_form_; } | 139 PasswordForm* observed_form() { return &observed_form_; } |
147 PasswordForm* saved_match() { return &saved_match_; } | 140 PasswordForm* saved_match() { return &saved_match_; } |
148 PasswordForm* CreateSavedMatch(bool blacklisted) { | 141 PasswordForm* CreateSavedMatch(bool blacklisted) { |
149 // Owned by the caller of this method. | 142 // Owned by the caller of this method. |
150 PasswordForm* match = new PasswordForm(saved_match_); | 143 PasswordForm* match = new PasswordForm(saved_match_); |
151 match->blacklisted_by_user = blacklisted; | 144 match->blacklisted_by_user = blacklisted; |
152 return match; | 145 return match; |
153 } | 146 } |
154 | 147 |
155 private: | 148 private: |
| 149 content::TestBrowserThreadBundle thread_bundle_; |
| 150 TestingProfile profile_; |
156 PasswordForm observed_form_; | 151 PasswordForm observed_form_; |
157 PasswordForm saved_match_; | 152 PasswordForm saved_match_; |
158 Profile* profile_; | |
159 }; | 153 }; |
160 | 154 |
161 TEST_F(PasswordFormManagerTest, TestNewLogin) { | 155 TEST_F(PasswordFormManagerTest, TestNewLogin) { |
162 PasswordFormManager* manager = new PasswordFormManager( | 156 PasswordFormManager* manager = new PasswordFormManager( |
163 profile(), NULL, NULL, *observed_form(), false); | 157 profile(), NULL, NULL, *observed_form(), false); |
164 SimulateMatchingPhase(manager, false); | 158 SimulateMatchingPhase(manager, false); |
165 // User submits credentials for the observed form. | 159 // User submits credentials for the observed form. |
166 PasswordForm credentials = *observed_form(); | 160 PasswordForm credentials = *observed_form(); |
167 credentials.username_value = saved_match()->username_value; | 161 credentials.username_value = saved_match()->username_value; |
168 credentials.password_value = saved_match()->password_value; | 162 credentials.password_value = saved_match()->password_value; |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 login, | 324 login, |
331 PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 325 PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
332 EXPECT_TRUE(manager->IsNewLogin()); | 326 EXPECT_TRUE(manager->IsNewLogin()); |
333 // Check that the provisionally saved action URL is the same as the submitted | 327 // Check that the provisionally saved action URL is the same as the submitted |
334 // action URL, not the one observed on page load. | 328 // action URL, not the one observed on page load. |
335 EXPECT_EQ(new_action, | 329 EXPECT_EQ(new_action, |
336 GetPendingCredentials(manager.get())->action); | 330 GetPendingCredentials(manager.get())->action); |
337 } | 331 } |
338 | 332 |
339 TEST_F(PasswordFormManagerTest, TestAlternateUsername) { | 333 TEST_F(PasswordFormManagerTest, TestAlternateUsername) { |
340 // Need a MessageLoop for callbacks. | |
341 base::MessageLoop message_loop; | |
342 PasswordStoreFactory::GetInstance()->SetTestingFactory( | 334 PasswordStoreFactory::GetInstance()->SetTestingFactory( |
343 profile(), &TestPasswordStore::Create); | 335 profile(), &TestPasswordStore::Create); |
344 scoped_refptr<TestPasswordStore> password_store = | 336 scoped_refptr<TestPasswordStore> password_store = |
345 static_cast<TestPasswordStore*>( | 337 static_cast<TestPasswordStore*>( |
346 PasswordStoreFactory::GetForProfile(profile(), | 338 PasswordStoreFactory::GetForProfile(profile(), |
347 Profile::IMPLICIT_ACCESS).get()); | 339 Profile::IMPLICIT_ACCESS).get()); |
348 TestPasswordManagerDelegate delegate(profile()); | 340 TestPasswordManagerDelegate delegate(profile()); |
349 TestPasswordManager password_manager(&delegate); | 341 TestPasswordManager password_manager(&delegate); |
350 scoped_ptr<TestPasswordFormManager> manager(new TestPasswordFormManager( | 342 scoped_ptr<TestPasswordFormManager> manager(new TestPasswordFormManager( |
351 profile(), &password_manager, *observed_form(), false)); | 343 profile(), &password_manager, *observed_form(), false)); |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
541 | 533 |
542 SanitizePossibleUsernames(manager.get(), &credentials); | 534 SanitizePossibleUsernames(manager.get(), &credentials); |
543 | 535 |
544 // SSN, duplicate in |other_possible_usernames| and duplicate of | 536 // SSN, duplicate in |other_possible_usernames| and duplicate of |
545 // |username_value| all removed. | 537 // |username_value| all removed. |
546 expected.clear(); | 538 expected.clear(); |
547 expected.push_back(ASCIIToUTF16("duplicate")); | 539 expected.push_back(ASCIIToUTF16("duplicate")); |
548 expected.push_back(ASCIIToUTF16("random")); | 540 expected.push_back(ASCIIToUTF16("random")); |
549 EXPECT_THAT(credentials.other_possible_usernames, Eq(expected)); | 541 EXPECT_THAT(credentials.other_possible_usernames, Eq(expected)); |
550 } | 542 } |
OLD | NEW |