172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/net/url_fixer_upper.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/url_constants.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/automation/tab_proxy.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/automation/browser_proxy.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/ui/ui_test.h" 123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "net/test/test_server.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing std::wstring; 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst FilePath::CharType kDocRoot[] = FILE_PATH_LITERAL("chrome/test/data"); 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass LoginPromptTest : public UITest { 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch LoginPromptTest() 253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick : username_basic_(L"basicuser"), 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch username_digest_(L"digestuser"), 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch password_(L"secret"), 283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick password_bad_(L"denyme"), 293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick test_server_(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)) { 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void AppendTab(const GURL& url) { 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<BrowserProxy> window_proxy(automation()->GetBrowserWindow(0)); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(window_proxy.get()); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(window_proxy->AppendTab(url)); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch wstring username_basic_; 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch wstring username_digest_; 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch wstring password_; 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch wstring password_bad_; 433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick net::TestServer test_server_; 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochwstring ExpectedTitleFromAuth(const wstring& username, 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const wstring& password) { 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The TestServer sets the title to username/password on successful login. 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return username + L"/" + password; 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_WIN) 54513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Probably related to test server flakiness in http://crbug.com/60937 55513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_TestBasicAuth FLAKY_TestBasicAuth 56513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#else 57513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_TestBasicAuth TestBasicAuth 58513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 59513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Test that "Basic" HTTP authentication works. 61513209b27ff55e2841eac0e4120199c23acce758Ben MurdochTEST_F(LoginPromptTest, MAYBE_TestBasicAuth) { 623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(test_server_.Start()); 633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> tab(GetActiveTab()); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(tab.get()); 66731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 67731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("auth-basic"))); 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->NeedsAuth()); 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(tab->SetAuth(username_basic_, password_bad_)); 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->NeedsAuth()); 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->CancelAuth()); 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(L"Denied: wrong password", GetActiveTabTitle()); 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 75731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 76731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("auth-basic"))); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->NeedsAuth()); 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->SetAuth(username_basic_, password_)); 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetActiveTabTitle()); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 84513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_WIN) 85513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Probably related to test server flakiness in http://crbug.com/60937 86513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_TestDigestAuth FLAKY_TestDigestAuth 87513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#else 88513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_TestDigestAuth TestDigestAuth 89513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 90513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Test that "Digest" HTTP authentication works. 92513209b27ff55e2841eac0e4120199c23acce758Ben MurdochTEST_F(LoginPromptTest, MAYBE_TestDigestAuth) { 933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(test_server_.Start()); 943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> tab(GetActiveTab()); 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(tab.get()); 97731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 98731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("auth-digest"))); 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->NeedsAuth()); 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(tab->SetAuth(username_digest_, password_bad_)); 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->CancelAuth()); 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(L"Denied: wrong password", GetActiveTabTitle()); 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 105731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 106731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("auth-digest"))); 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->NeedsAuth()); 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->SetAuth(username_digest_, password_)); 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(ExpectedTitleFromAuth(username_digest_, password_), 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetActiveTabTitle()); 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 114513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_WIN) 115513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Probably related to test server flakiness in http://crbug.com/60937 116513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_TestTwoAuths FLAKY_TestTwoAuths 117513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#else 118513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_TestTwoAuths TestTwoAuths 119513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 120513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Test that logging in on 2 tabs at once works. 122513209b27ff55e2841eac0e4120199c23acce758Ben MurdochTEST_F(LoginPromptTest, MAYBE_TestTwoAuths) { 1233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(test_server_.Start()); 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> basic_tab(GetActiveTab()); 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(basic_tab.get()); 127731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 128731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick basic_tab->NavigateToURL(test_server_.GetURL("auth-basic"))); 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AppendTab(GURL(chrome::kAboutBlankURL)); 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> digest_tab(GetActiveTab()); 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(digest_tab.get()); 133731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 134731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick digest_tab->NavigateToURL(test_server_.GetURL("auth-digest"))); 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab->NeedsAuth()); 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab->SetAuth(username_basic_, password_)); 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(digest_tab->NeedsAuth()); 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(digest_tab->SetAuth(username_digest_, password_)); 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch wstring title; 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab->GetTabTitle(&title)); 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), title); 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(digest_tab->GetTabTitle(&title)); 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(ExpectedTitleFromAuth(username_digest_, password_), title); 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 149513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_WIN) 150513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Probably related to test server flakiness in http://crbug.com/60937 151513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_TestCancelAuth FLAKY_TestCancelAuth 152513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#else 153513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_TestCancelAuth TestCancelAuth 154513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 155513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Test that cancelling authentication works. 157513209b27ff55e2841eac0e4120199c23acce758Ben MurdochTEST_F(LoginPromptTest, MAYBE_TestCancelAuth) { 1583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(test_server_.Start()); 1593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> tab(GetActiveTab()); 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(tab.get()); 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // First navigate to a test server page so we have something to go back to. 164731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, 165731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("a"))); 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Navigating while auth is requested is the same as cancelling. 168731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 169731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("auth-basic"))); 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->NeedsAuth()); 171731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, 172731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("b"))); 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(tab->NeedsAuth()); 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 175731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 176731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("auth-basic"))); 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->NeedsAuth()); 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->GoBack()); // should bring us back to 'a' 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(tab->NeedsAuth()); 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Now add a page and go back, so we have something to go forward to. 182731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, 183731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("c"))); 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->GoBack()); // should bring us back to 'a' 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 186731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 187731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("auth-basic"))); 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->NeedsAuth()); 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->GoForward()); // should bring us to 'c' 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(tab->NeedsAuth()); 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Now test that cancelling works as expected. 193731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 194731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick tab->NavigateToURL(test_server_.GetURL("auth-basic"))); 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->NeedsAuth()); 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(tab->CancelAuth()); 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(tab->NeedsAuth()); 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(L"Denied: no auth", GetActiveTabTitle()); 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 201513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_WIN) 202513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Probably related to test server flakiness in http://crbug.com/60937 203513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_SupplyRedundantAuths FLAKY_SupplyRedundantAuths 204513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#else 205513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_SupplyRedundantAuths SupplyRedundantAuths 206513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 207513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// If multiple tabs are looking for the same auth, the user should only have to 2093345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// enter it once. 210513209b27ff55e2841eac0e4120199c23acce758Ben MurdochTEST_F(LoginPromptTest, MAYBE_SupplyRedundantAuths) { 2113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(test_server_.Start()); 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> basic_tab1(GetActiveTab()); 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(basic_tab1.get()); 215731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 216731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick basic_tab1->NavigateToURL(test_server_.GetURL("auth-basic/1"))); 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab1->NeedsAuth()); 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AppendTab(GURL(chrome::kAboutBlankURL)); 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> basic_tab2(GetActiveTab()); 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(basic_tab2.get()); 222731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 223731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick basic_tab2->NavigateToURL(test_server_.GetURL("auth-basic/2"))); 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab2->NeedsAuth()); 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Set the auth in only one of the tabs (but wait for the other to load). 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int64 last_navigation_time; 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(basic_tab2->GetLastNavigationTime(&last_navigation_time)); 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab1->SetAuth(username_basic_, password_)); 230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab2->WaitForNavigation(last_navigation_time)); 231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Now both tabs have loaded. 233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch wstring title1; 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab1->GetTabTitle(&title1)); 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), title1); 236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch wstring title2; 237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab2->GetTabTitle(&title2)); 238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(ExpectedTitleFromAuth(username_basic_, password_), title2); 239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 241513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_WIN) 242513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Probably related to test server flakiness in http://crbug.com/60937 243513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_CancelRedundantAuths FLAKY_CancelRedundantAuths 244513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#else 245513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_CancelRedundantAuths CancelRedundantAuths 246513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 247513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// If multiple tabs are looking for the same auth, and one is cancelled, the 249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// other should be cancelled as well. 250513209b27ff55e2841eac0e4120199c23acce758Ben MurdochTEST_F(LoginPromptTest, MAYBE_CancelRedundantAuths) { 2513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(test_server_.Start()); 252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> basic_tab1(GetActiveTab()); 254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(basic_tab1.get()); 255731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 256731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick basic_tab1->NavigateToURL(test_server_.GetURL("auth-basic/1"))); 257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab1->NeedsAuth()); 258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AppendTab(GURL(chrome::kAboutBlankURL)); 260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<TabProxy> basic_tab2(GetActiveTab()); 261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(basic_tab2.get()); 262731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 263731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick basic_tab2->NavigateToURL(test_server_.GetURL("auth-basic/2"))); 264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab2->NeedsAuth()); 265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Cancel the auth in only one of the tabs (but wait for the other to load). 267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int64 last_navigation_time; 268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(basic_tab2->GetLastNavigationTime(&last_navigation_time)); 269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab1->CancelAuth()); 270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab2->WaitForNavigation(last_navigation_time)); 271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Now both tabs have been denied. 273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch wstring title1; 274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab1->GetTabTitle(&title1)); 275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(L"Denied: no auth", title1); 276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch wstring title2; 277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(basic_tab2->GetTabTitle(&title2)); 278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(L"Denied: no auth", title2); 279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 280