| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "chrome/browser/net/url_fixer_upper.h" | 7 #include "chrome/browser/net/url_fixer_upper.h" |
| 8 #include "chrome/common/chrome_switches.h" | 8 #include "chrome/common/chrome_switches.h" |
| 9 #include "chrome/common/url_constants.h" | 9 #include "chrome/common/url_constants.h" |
| 10 #include "chrome/test/automation/tab_proxy.h" | 10 #include "chrome/test/automation/tab_proxy.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 | 44 |
| 45 net::TestServer test_server_; | 45 net::TestServer test_server_; |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 wstring ExpectedTitleFromAuth(const wstring& username, | 48 wstring ExpectedTitleFromAuth(const wstring& username, |
| 49 const wstring& password) { | 49 const wstring& password) { |
| 50 // The TestServer sets the title to username/password on successful login. | 50 // The TestServer sets the title to username/password on successful login. |
| 51 return username + L"/" + password; | 51 return username + L"/" + password; |
| 52 } | 52 } |
| 53 | 53 |
| 54 #if defined(OS_WIN) |
| 55 // Probably related to test server flakiness in http://crbug.com/60937 |
| 56 #define MAYBE_TestBasicAuth FLAKY_TestBasicAuth |
| 57 #else |
| 58 #define MAYBE_TestBasicAuth TestBasicAuth |
| 59 #endif |
| 60 |
| 54 // Test that "Basic" HTTP authentication works. | 61 // Test that "Basic" HTTP authentication works. |
| 55 TEST_F(LoginPromptTest, TestBasicAuth) { | 62 TEST_F(LoginPromptTest, MAYBE_TestBasicAuth) { |
| 56 ASSERT_TRUE(test_server_.Start()); | 63 ASSERT_TRUE(test_server_.Start()); |
| 57 | 64 |
| 58 scoped_refptr<TabProxy> tab(GetActiveTab()); | 65 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 59 ASSERT_TRUE(tab.get()); | 66 ASSERT_TRUE(tab.get()); |
| 60 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 67 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 61 tab->NavigateToURL(test_server_.GetURL("auth-basic"))); | 68 tab->NavigateToURL(test_server_.GetURL("auth-basic"))); |
| 62 | 69 |
| 63 EXPECT_TRUE(tab->NeedsAuth()); | 70 EXPECT_TRUE(tab->NeedsAuth()); |
| 64 EXPECT_FALSE(tab->SetAuth(username_basic_, password_bad_)); | 71 EXPECT_FALSE(tab->SetAuth(username_basic_, password_bad_)); |
| 65 EXPECT_TRUE(tab->NeedsAuth()); | 72 EXPECT_TRUE(tab->NeedsAuth()); |
| 66 EXPECT_TRUE(tab->CancelAuth()); | 73 EXPECT_TRUE(tab->CancelAuth()); |
| 67 EXPECT_EQ(L"Denied: wrong password", GetActiveTabTitle()); | 74 EXPECT_EQ(L"Denied: wrong password", GetActiveTabTitle()); |
| 68 | 75 |
| 69 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 76 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 70 tab->NavigateToURL(test_server_.GetURL("auth-basic"))); | 77 tab->NavigateToURL(test_server_.GetURL("auth-basic"))); |
| 71 | 78 |
| 72 EXPECT_TRUE(tab->NeedsAuth()); | 79 EXPECT_TRUE(tab->NeedsAuth()); |
| 73 EXPECT_TRUE(tab->SetAuth(username_basic_, password_)); | 80 EXPECT_TRUE(tab->SetAuth(username_basic_, password_)); |
| 74 EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), | 81 EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), |
| 75 GetActiveTabTitle()); | 82 GetActiveTabTitle()); |
| 76 } | 83 } |
| 77 | 84 |
| 85 #if defined(OS_WIN) |
| 86 // Probably related to test server flakiness in http://crbug.com/60937 |
| 87 #define MAYBE_TestDigestAuth FLAKY_TestDigestAuth |
| 88 #else |
| 89 #define MAYBE_TestDigestAuth TestDigestAuth |
| 90 #endif |
| 91 |
| 78 // Test that "Digest" HTTP authentication works. | 92 // Test that "Digest" HTTP authentication works. |
| 79 TEST_F(LoginPromptTest, TestDigestAuth) { | 93 TEST_F(LoginPromptTest, MAYBE_TestDigestAuth) { |
| 80 ASSERT_TRUE(test_server_.Start()); | 94 ASSERT_TRUE(test_server_.Start()); |
| 81 | 95 |
| 82 scoped_refptr<TabProxy> tab(GetActiveTab()); | 96 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 83 ASSERT_TRUE(tab.get()); | 97 ASSERT_TRUE(tab.get()); |
| 84 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 98 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 85 tab->NavigateToURL(test_server_.GetURL("auth-digest"))); | 99 tab->NavigateToURL(test_server_.GetURL("auth-digest"))); |
| 86 | 100 |
| 87 EXPECT_TRUE(tab->NeedsAuth()); | 101 EXPECT_TRUE(tab->NeedsAuth()); |
| 88 EXPECT_FALSE(tab->SetAuth(username_digest_, password_bad_)); | 102 EXPECT_FALSE(tab->SetAuth(username_digest_, password_bad_)); |
| 89 EXPECT_TRUE(tab->CancelAuth()); | 103 EXPECT_TRUE(tab->CancelAuth()); |
| 90 EXPECT_EQ(L"Denied: wrong password", GetActiveTabTitle()); | 104 EXPECT_EQ(L"Denied: wrong password", GetActiveTabTitle()); |
| 91 | 105 |
| 92 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 106 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 93 tab->NavigateToURL(test_server_.GetURL("auth-digest"))); | 107 tab->NavigateToURL(test_server_.GetURL("auth-digest"))); |
| 94 | 108 |
| 95 EXPECT_TRUE(tab->NeedsAuth()); | 109 EXPECT_TRUE(tab->NeedsAuth()); |
| 96 EXPECT_TRUE(tab->SetAuth(username_digest_, password_)); | 110 EXPECT_TRUE(tab->SetAuth(username_digest_, password_)); |
| 97 EXPECT_EQ(ExpectedTitleFromAuth(username_digest_, password_), | 111 EXPECT_EQ(ExpectedTitleFromAuth(username_digest_, password_), |
| 98 GetActiveTabTitle()); | 112 GetActiveTabTitle()); |
| 99 } | 113 } |
| 100 | 114 |
| 115 #if defined(OS_WIN) |
| 116 // Probably related to test server flakiness in http://crbug.com/60937 |
| 117 #define MAYBE_TestTwoAuths FLAKY_TestTwoAuths |
| 118 #else |
| 119 #define MAYBE_TestTwoAuths TestTwoAuths |
| 120 #endif |
| 121 |
| 101 // Test that logging in on 2 tabs at once works. | 122 // Test that logging in on 2 tabs at once works. |
| 102 TEST_F(LoginPromptTest, TestTwoAuths) { | 123 TEST_F(LoginPromptTest, MAYBE_TestTwoAuths) { |
| 103 ASSERT_TRUE(test_server_.Start()); | 124 ASSERT_TRUE(test_server_.Start()); |
| 104 | 125 |
| 105 scoped_refptr<TabProxy> basic_tab(GetActiveTab()); | 126 scoped_refptr<TabProxy> basic_tab(GetActiveTab()); |
| 106 ASSERT_TRUE(basic_tab.get()); | 127 ASSERT_TRUE(basic_tab.get()); |
| 107 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 128 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 108 basic_tab->NavigateToURL(test_server_.GetURL("auth-basic"))); | 129 basic_tab->NavigateToURL(test_server_.GetURL("auth-basic"))); |
| 109 | 130 |
| 110 AppendTab(GURL(chrome::kAboutBlankURL)); | 131 AppendTab(GURL(chrome::kAboutBlankURL)); |
| 111 scoped_refptr<TabProxy> digest_tab(GetActiveTab()); | 132 scoped_refptr<TabProxy> digest_tab(GetActiveTab()); |
| 112 ASSERT_TRUE(digest_tab.get()); | 133 ASSERT_TRUE(digest_tab.get()); |
| 113 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 134 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 114 digest_tab->NavigateToURL(test_server_.GetURL("auth-digest"))); | 135 digest_tab->NavigateToURL(test_server_.GetURL("auth-digest"))); |
| 115 | 136 |
| 116 EXPECT_TRUE(basic_tab->NeedsAuth()); | 137 EXPECT_TRUE(basic_tab->NeedsAuth()); |
| 117 EXPECT_TRUE(basic_tab->SetAuth(username_basic_, password_)); | 138 EXPECT_TRUE(basic_tab->SetAuth(username_basic_, password_)); |
| 118 EXPECT_TRUE(digest_tab->NeedsAuth()); | 139 EXPECT_TRUE(digest_tab->NeedsAuth()); |
| 119 EXPECT_TRUE(digest_tab->SetAuth(username_digest_, password_)); | 140 EXPECT_TRUE(digest_tab->SetAuth(username_digest_, password_)); |
| 120 | 141 |
| 121 wstring title; | 142 wstring title; |
| 122 EXPECT_TRUE(basic_tab->GetTabTitle(&title)); | 143 EXPECT_TRUE(basic_tab->GetTabTitle(&title)); |
| 123 EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), title); | 144 EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), title); |
| 124 | 145 |
| 125 EXPECT_TRUE(digest_tab->GetTabTitle(&title)); | 146 EXPECT_TRUE(digest_tab->GetTabTitle(&title)); |
| 126 EXPECT_EQ(ExpectedTitleFromAuth(username_digest_, password_), title); | 147 EXPECT_EQ(ExpectedTitleFromAuth(username_digest_, password_), title); |
| 127 } | 148 } |
| 128 | 149 |
| 150 #if defined(OS_WIN) |
| 151 // Probably related to test server flakiness in http://crbug.com/60937 |
| 152 #define MAYBE_TestCancelAuth FLAKY_TestCancelAuth |
| 153 #else |
| 154 #define MAYBE_TestCancelAuth TestCancelAuth |
| 155 #endif |
| 156 |
| 129 // Test that cancelling authentication works. | 157 // Test that cancelling authentication works. |
| 130 TEST_F(LoginPromptTest, TestCancelAuth) { | 158 TEST_F(LoginPromptTest, MAYBE_TestCancelAuth) { |
| 131 ASSERT_TRUE(test_server_.Start()); | 159 ASSERT_TRUE(test_server_.Start()); |
| 132 | 160 |
| 133 scoped_refptr<TabProxy> tab(GetActiveTab()); | 161 scoped_refptr<TabProxy> tab(GetActiveTab()); |
| 134 ASSERT_TRUE(tab.get()); | 162 ASSERT_TRUE(tab.get()); |
| 135 | 163 |
| 136 // First navigate to a test server page so we have something to go back to. | 164 // First navigate to a test server page so we have something to go back to. |
| 137 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, | 165 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, |
| 138 tab->NavigateToURL(test_server_.GetURL("a"))); | 166 tab->NavigateToURL(test_server_.GetURL("a"))); |
| 139 | 167 |
| 140 // Navigating while auth is requested is the same as cancelling. | 168 // Navigating while auth is requested is the same as cancelling. |
| (...skipping 23 matching lines...) Expand all Loading... |
| 164 | 192 |
| 165 // Now test that cancelling works as expected. | 193 // Now test that cancelling works as expected. |
| 166 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 194 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 167 tab->NavigateToURL(test_server_.GetURL("auth-basic"))); | 195 tab->NavigateToURL(test_server_.GetURL("auth-basic"))); |
| 168 EXPECT_TRUE(tab->NeedsAuth()); | 196 EXPECT_TRUE(tab->NeedsAuth()); |
| 169 EXPECT_TRUE(tab->CancelAuth()); | 197 EXPECT_TRUE(tab->CancelAuth()); |
| 170 EXPECT_FALSE(tab->NeedsAuth()); | 198 EXPECT_FALSE(tab->NeedsAuth()); |
| 171 EXPECT_EQ(L"Denied: no auth", GetActiveTabTitle()); | 199 EXPECT_EQ(L"Denied: no auth", GetActiveTabTitle()); |
| 172 } | 200 } |
| 173 | 201 |
| 202 #if defined(OS_WIN) |
| 203 // Probably related to test server flakiness in http://crbug.com/60937 |
| 204 #define MAYBE_SupplyRedundantAuths FLAKY_SupplyRedundantAuths |
| 205 #else |
| 206 #define MAYBE_SupplyRedundantAuths SupplyRedundantAuths |
| 207 #endif |
| 208 |
| 174 // If multiple tabs are looking for the same auth, the user should only have to | 209 // If multiple tabs are looking for the same auth, the user should only have to |
| 175 // enter it once. | 210 // enter it once. |
| 176 TEST_F(LoginPromptTest, SupplyRedundantAuths) { | 211 TEST_F(LoginPromptTest, MAYBE_SupplyRedundantAuths) { |
| 177 ASSERT_TRUE(test_server_.Start()); | 212 ASSERT_TRUE(test_server_.Start()); |
| 178 | 213 |
| 179 scoped_refptr<TabProxy> basic_tab1(GetActiveTab()); | 214 scoped_refptr<TabProxy> basic_tab1(GetActiveTab()); |
| 180 ASSERT_TRUE(basic_tab1.get()); | 215 ASSERT_TRUE(basic_tab1.get()); |
| 181 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 216 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 182 basic_tab1->NavigateToURL(test_server_.GetURL("auth-basic/1"))); | 217 basic_tab1->NavigateToURL(test_server_.GetURL("auth-basic/1"))); |
| 183 EXPECT_TRUE(basic_tab1->NeedsAuth()); | 218 EXPECT_TRUE(basic_tab1->NeedsAuth()); |
| 184 | 219 |
| 185 AppendTab(GURL(chrome::kAboutBlankURL)); | 220 AppendTab(GURL(chrome::kAboutBlankURL)); |
| 186 scoped_refptr<TabProxy> basic_tab2(GetActiveTab()); | 221 scoped_refptr<TabProxy> basic_tab2(GetActiveTab()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 197 | 232 |
| 198 // Now both tabs have loaded. | 233 // Now both tabs have loaded. |
| 199 wstring title1; | 234 wstring title1; |
| 200 EXPECT_TRUE(basic_tab1->GetTabTitle(&title1)); | 235 EXPECT_TRUE(basic_tab1->GetTabTitle(&title1)); |
| 201 EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), title1); | 236 EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), title1); |
| 202 wstring title2; | 237 wstring title2; |
| 203 EXPECT_TRUE(basic_tab2->GetTabTitle(&title2)); | 238 EXPECT_TRUE(basic_tab2->GetTabTitle(&title2)); |
| 204 EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), title2); | 239 EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), title2); |
| 205 } | 240 } |
| 206 | 241 |
| 242 #if defined(OS_WIN) |
| 243 // Probably related to test server flakiness in http://crbug.com/60937 |
| 244 #define MAYBE_CancelRedundantAuths FLAKY_CancelRedundantAuths |
| 245 #else |
| 246 #define MAYBE_CancelRedundantAuths CancelRedundantAuths |
| 247 #endif |
| 248 |
| 207 // If multiple tabs are looking for the same auth, and one is cancelled, the | 249 // If multiple tabs are looking for the same auth, and one is cancelled, the |
| 208 // other should be cancelled as well. | 250 // other should be cancelled as well. |
| 209 TEST_F(LoginPromptTest, CancelRedundantAuths) { | 251 TEST_F(LoginPromptTest, MAYBE_CancelRedundantAuths) { |
| 210 ASSERT_TRUE(test_server_.Start()); | 252 ASSERT_TRUE(test_server_.Start()); |
| 211 | 253 |
| 212 scoped_refptr<TabProxy> basic_tab1(GetActiveTab()); | 254 scoped_refptr<TabProxy> basic_tab1(GetActiveTab()); |
| 213 ASSERT_TRUE(basic_tab1.get()); | 255 ASSERT_TRUE(basic_tab1.get()); |
| 214 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 256 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 215 basic_tab1->NavigateToURL(test_server_.GetURL("auth-basic/1"))); | 257 basic_tab1->NavigateToURL(test_server_.GetURL("auth-basic/1"))); |
| 216 EXPECT_TRUE(basic_tab1->NeedsAuth()); | 258 EXPECT_TRUE(basic_tab1->NeedsAuth()); |
| 217 | 259 |
| 218 AppendTab(GURL(chrome::kAboutBlankURL)); | 260 AppendTab(GURL(chrome::kAboutBlankURL)); |
| 219 scoped_refptr<TabProxy> basic_tab2(GetActiveTab()); | 261 scoped_refptr<TabProxy> basic_tab2(GetActiveTab()); |
| 220 ASSERT_TRUE(basic_tab2.get()); | 262 ASSERT_TRUE(basic_tab2.get()); |
| 221 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, | 263 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, |
| 222 basic_tab2->NavigateToURL(test_server_.GetURL("auth-basic/2"))); | 264 basic_tab2->NavigateToURL(test_server_.GetURL("auth-basic/2"))); |
| 223 EXPECT_TRUE(basic_tab2->NeedsAuth()); | 265 EXPECT_TRUE(basic_tab2->NeedsAuth()); |
| 224 | 266 |
| 225 // Cancel the auth in only one of the tabs (but wait for the other to load). | 267 // Cancel the auth in only one of the tabs (but wait for the other to load). |
| 226 int64 last_navigation_time; | 268 int64 last_navigation_time; |
| 227 ASSERT_TRUE(basic_tab2->GetLastNavigationTime(&last_navigation_time)); | 269 ASSERT_TRUE(basic_tab2->GetLastNavigationTime(&last_navigation_time)); |
| 228 EXPECT_TRUE(basic_tab1->CancelAuth()); | 270 EXPECT_TRUE(basic_tab1->CancelAuth()); |
| 229 EXPECT_TRUE(basic_tab2->WaitForNavigation(last_navigation_time)); | 271 EXPECT_TRUE(basic_tab2->WaitForNavigation(last_navigation_time)); |
| 230 | 272 |
| 231 // Now both tabs have been denied. | 273 // Now both tabs have been denied. |
| 232 wstring title1; | 274 wstring title1; |
| 233 EXPECT_TRUE(basic_tab1->GetTabTitle(&title1)); | 275 EXPECT_TRUE(basic_tab1->GetTabTitle(&title1)); |
| 234 EXPECT_EQ(L"Denied: no auth", title1); | 276 EXPECT_EQ(L"Denied: no auth", title1); |
| 235 wstring title2; | 277 wstring title2; |
| 236 EXPECT_TRUE(basic_tab2->GetTabTitle(&title2)); | 278 EXPECT_TRUE(basic_tab2->GetTabTitle(&title2)); |
| 237 EXPECT_EQ(L"Denied: no auth", title2); | 279 EXPECT_EQ(L"Denied: no auth", title2); |
| 238 } | 280 } |
| OLD | NEW |