Chromium Code Reviews| Index: chrome/browser/ui/webui/signin/inline_login_ui_browsertest.cc |
| diff --git a/chrome/browser/ui/webui/signin/inline_login_ui_browsertest.cc b/chrome/browser/ui/webui/signin/inline_login_ui_browsertest.cc |
| index 5ec0bbc7b95fae159e2174cb49f63cf042cb7d9b..1f822e6daa69913fe5dbffe83ac4fa0a57c5485d 100644 |
| --- a/chrome/browser/ui/webui/signin/inline_login_ui_browsertest.cc |
| +++ b/chrome/browser/ui/webui/signin/inline_login_ui_browsertest.cc |
| @@ -3,21 +3,31 @@ |
| // found in the LICENSE file. |
| #include "base/command_line.h" |
| +#include "base/prefs/pref_service.h" |
| +#include "base/prefs/scoped_user_pref_update.h" |
| +#include "base/strings/utf_string_conversions.h" |
| +#include "chrome/browser/content_settings/cookie_settings.h" |
| +#include "chrome/browser/signin/signin_manager_factory.h" |
| #include "chrome/browser/signin/signin_promo.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| +#include "chrome/browser/ui/webui/signin/inline_login_handler_impl.h" |
| #include "chrome/browser/ui/webui/signin/inline_login_ui.h" |
| #include "chrome/browser/ui/webui/signin/login_ui_service.h" |
| #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" |
| #include "chrome/browser/ui/webui/signin/login_ui_test_utils.h" |
| #include "chrome/common/chrome_switches.h" |
| #include "chrome/common/url_constants.h" |
| +#include "chrome/grit/chromium_strings.h" |
| +#include "chrome/grit/generated_resources.h" |
| #include "chrome/test/base/in_process_browser_test.h" |
| #include "chrome/test/base/test_browser_window.h" |
| #include "chrome/test/base/test_chrome_web_ui_controller_factory.h" |
| #include "chrome/test/base/testing_browser_process.h" |
| #include "chrome/test/base/ui_test_utils.h" |
| +#include "components/signin/core/browser/signin_manager.h" |
| #include "components/signin/core/common/profile_management_switches.h" |
| +#include "components/signin/core/common/signin_pref_names.h" |
| #include "content/public/browser/render_frame_host.h" |
| #include "content/public/browser/render_process_host.h" |
| #include "content/public/browser/session_storage_namespace.h" |
| @@ -36,10 +46,13 @@ |
| #include "net/test/embedded_test_server/http_response.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +#include "ui/base/l10n/l10n_util.h" |
| using ::testing::_; |
| +using ::testing::AtLeast; |
| using ::testing::Invoke; |
| using ::testing::InvokeWithoutArgs; |
| +using ::testing::Return; |
| using login_ui_test_utils::ExecuteJsToSigninInSigninFrame; |
| using login_ui_test_utils::WaitUntilUIReady; |
| @@ -106,8 +119,58 @@ bool AddToSet(std::set<content::WebContents*>* set, |
| class InlineLoginUIBrowserTest : public InProcessBrowserTest { |
| public: |
| InlineLoginUIBrowserTest() {} |
| + |
| + void SetUpSigninManager(const std::string& username); |
| + void EnableSigninAllowed(bool enable); |
| + void EnableOneClick(bool enable); |
| + void AddEmailToOneClickRejectedList(const std::string& email); |
| + void AllowSigninCookies(bool enable); |
| + void SetAllowedUsernamePattern(const std::string& pattern); |
| + |
| + protected: |
| + content::WebContents* web_contents() { return nullptr; } |
| }; |
| +void InlineLoginUIBrowserTest::SetUpSigninManager(const std::string& username) { |
| + if (username.empty()) |
| + return; |
| + |
| + SigninManagerBase* signin_manager = |
| + SigninManagerFactory::GetForProfile(browser()->profile()); |
| + signin_manager->SetAuthenticatedUsername(username); |
| +} |
| + |
| +void InlineLoginUIBrowserTest::EnableSigninAllowed(bool enable) { |
| + PrefService* pref_service = browser()->profile()->GetPrefs(); |
| + pref_service->SetBoolean(prefs::kSigninAllowed, enable); |
| +} |
| + |
| +void InlineLoginUIBrowserTest::EnableOneClick(bool enable) { |
| + PrefService* pref_service = browser()->profile()->GetPrefs(); |
| + pref_service->SetBoolean(prefs::kReverseAutologinEnabled, enable); |
| +} |
| + |
| +void InlineLoginUIBrowserTest::AddEmailToOneClickRejectedList( |
| + const std::string& email) { |
| + PrefService* pref_service = browser()->profile()->GetPrefs(); |
| + ListPrefUpdate updater(pref_service, |
| + prefs::kReverseAutologinRejectedEmailList); |
| + updater->AppendIfNotPresent(new base::StringValue(email)); |
| +} |
| + |
| +void InlineLoginUIBrowserTest::AllowSigninCookies(bool enable) { |
| + CookieSettings* cookie_settings = |
| + CookieSettings::Factory::GetForProfile(browser()->profile()).get(); |
| + cookie_settings->SetDefaultCookieSetting(enable ? CONTENT_SETTING_ALLOW |
| + : CONTENT_SETTING_BLOCK); |
| +} |
| + |
| +void InlineLoginUIBrowserTest::SetAllowedUsernamePattern( |
| + const std::string& pattern) { |
| + PrefService* local_state = g_browser_process->local_state(); |
| + local_state->SetString(prefs::kGoogleServicesUsernamePattern, pattern); |
| +} |
| + |
| #if defined(OS_LINUX) || defined(OS_WIN) |
| // crbug.com/422868 |
| #define MAYBE_DifferentStorageId DISABLED_DifferentStorageId |
| @@ -184,6 +247,90 @@ IN_PROC_BROWSER_TEST_F(InlineLoginUIBrowserTest, OneProcessLimit) { |
| ASSERT_NE(info1.pid, info3.pid); |
| } |
| +#if !defined(OS_CHROMEOS) |
| + |
| +IN_PROC_BROWSER_TEST_F(InlineLoginUIBrowserTest, CanOfferNoProfile) { |
| + std::string error_message; |
| + EXPECT_FALSE(InlineLoginHandlerImpl::CanOffer( |
| + NULL, InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "user@gmail.com", &error_message)); |
|
noms (inactive)
2015/02/25 15:44:02
super optional nit: make this, and foo@gmail.com c
Roger Tawa OOO till Jul 10th
2015/02/25 19:05:07
I think I'll leave it like this, I think the tests
|
| + EXPECT_EQ("", error_message); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(InlineLoginUIBrowserTest, CanOffer) { |
| + EnableOneClick(true); |
| + EXPECT_TRUE(InlineLoginHandlerImpl::CanOffer( |
| + browser()->profile(), InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "user@gmail.com", NULL)); |
| + |
| + EnableOneClick(false); |
| + |
| + std::string error_message; |
| + |
| + EXPECT_TRUE(InlineLoginHandlerImpl::CanOffer( |
| + browser()->profile(), InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "user@gmail.com", &error_message)); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(InlineLoginUIBrowserTest, CanOfferProfileConnected) { |
| + SetUpSigninManager("foo@gmail.com"); |
| + EnableSigninAllowed(true); |
| + |
| + std::string error_message; |
| + |
| + EXPECT_TRUE(InlineLoginHandlerImpl::CanOffer( |
| + browser()->profile(), InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "foo@gmail.com", &error_message)); |
| + EXPECT_TRUE(InlineLoginHandlerImpl::CanOffer( |
| + browser()->profile(), InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "foo", &error_message)); |
| + EXPECT_FALSE(InlineLoginHandlerImpl::CanOffer( |
| + browser()->profile(), InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "user@gmail.com", &error_message)); |
| + EXPECT_EQ(l10n_util::GetStringFUTF8(IDS_SYNC_WRONG_EMAIL, |
| + base::UTF8ToUTF16("foo@gmail.com")), |
| + error_message); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(InlineLoginUIBrowserTest, CanOfferUsernameNotAllowed) { |
| + SetAllowedUsernamePattern("*.google.com"); |
| + |
| + std::string error_message; |
| + EXPECT_FALSE(InlineLoginHandlerImpl::CanOffer( |
| + browser()->profile(), InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "foo@gmail.com", &error_message)); |
| + EXPECT_EQ(l10n_util::GetStringUTF8(IDS_SYNC_LOGIN_NAME_PROHIBITED), |
| + error_message); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(InlineLoginUIBrowserTest, CanOfferWithRejectedEmail) { |
| + EnableSigninAllowed(true); |
| + |
| + AddEmailToOneClickRejectedList("foo@gmail.com"); |
| + AddEmailToOneClickRejectedList("user@gmail.com"); |
| + |
| + std::string error_message; |
| + EXPECT_TRUE(InlineLoginHandlerImpl::CanOffer( |
| + browser()->profile(), InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "foo@gmail.com", &error_message)); |
| + EXPECT_TRUE(InlineLoginHandlerImpl::CanOffer( |
| + browser()->profile(), InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "user@gmail.com", &error_message)); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(InlineLoginUIBrowserTest, CanOfferNoSigninCookies) { |
| + AllowSigninCookies(false); |
| + EnableSigninAllowed(true); |
| + |
| + std::string error_message; |
| + EXPECT_FALSE(InlineLoginHandlerImpl::CanOffer( |
| + browser()->profile(), InlineLoginHandlerImpl::CAN_OFFER_FOR_ALL, |
| + "user@gmail.com", &error_message)); |
| + EXPECT_EQ("", error_message); |
| +} |
| + |
| +#endif // OS_CHROMEOS |
| + |
| class InlineLoginUISafeIframeBrowserTest : public InProcessBrowserTest { |
| public: |
| FooWebUIProvider& foo_provider() { return foo_provider_; } |