Chromium Code Reviews| Index: chrome/browser/ui/sync/one_click_signin_helper_unittest.cc |
| =================================================================== |
| --- chrome/browser/ui/sync/one_click_signin_helper_unittest.cc (revision 144169) |
| +++ chrome/browser/ui/sync/one_click_signin_helper_unittest.cc (working copy) |
| @@ -4,9 +4,12 @@ |
| #include "chrome/browser/content_settings/cookie_settings.h" |
| #include "chrome/browser/prefs/pref_service.h" |
| +#include "chrome/browser/prefs/scoped_user_pref_update.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/signin/signin_manager_factory.h" |
| #include "chrome/browser/signin/signin_manager_fake.h" |
| +#include "chrome/browser/sync/profile_sync_service_mock.h" |
| +#include "chrome/browser/sync/profile_sync_service_factory.h" |
| #include "chrome/browser/ui/sync/one_click_signin_helper.h" |
| #include "chrome/common/pref_names.h" |
| #include "chrome/test/base/testing_profile.h" |
| @@ -16,8 +19,20 @@ |
| #include "content/public/test/test_renderer_host.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +using ::testing::_; |
| +using ::testing::Mock; |
| +using ::testing::Return; |
| +using ::testing::ReturnRef; |
| +using ::testing::Values; |
| + |
| namespace { |
| +class SigninManagerMock : public FakeSigninManager { |
| + public: |
| + SigninManagerMock() {} |
| + MOCK_CONST_METHOD1(IsAllowedUsername, bool(const std::string& username)); |
| +}; |
| + |
| class OneClickSigninHelperTest : public content::RenderViewHostTestHarness { |
| public: |
| OneClickSigninHelperTest(); |
| @@ -32,10 +47,13 @@ |
| content::WebContents* CreateMockWebContents(bool use_incognito, |
| const std::string& username); |
| + void AddEmailToOneClickRejectedList(const std::string& email); |
| void EnableOneClick(bool enable); |
| void AllowSigninCookies(bool enable); |
| + SigninManagerMock* signin_manager_; |
| + |
| private: |
| // Members to fake that we are on the UI thread. |
| content::TestBrowserThread ui_thread_; |
| @@ -53,6 +71,10 @@ |
| // as needed. |
| } |
| +static ProfileKeyedService* BuildSigninManagerMock(Profile* profile) { |
| + return new SigninManagerMock(); |
| +} |
| + |
| content::WebContents* OneClickSigninHelperTest::CreateMockWebContents( |
| bool use_incognito, |
| const std::string& username) { |
| @@ -60,11 +82,12 @@ |
| browser_context_.reset(testing_profile); |
| testing_profile->set_incognito(use_incognito); |
| - SigninManager* signin_manager = static_cast<SigninManager*>( |
| + signin_manager_ = static_cast<SigninManagerMock*>( |
| SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse( |
| - testing_profile, FakeSigninManager::Build)); |
| + testing_profile, BuildSigninManagerMock)); |
| + |
| if (!username.empty()) { |
| - signin_manager->StartSignIn(username, std::string(), std::string(), |
| + signin_manager_->StartSignIn(username, std::string(), std::string(), |
| std::string()); |
| } |
| @@ -77,6 +100,15 @@ |
| pref_service->SetBoolean(prefs::kReverseAutologinEnabled, enable); |
| } |
| +void OneClickSigninHelperTest::AddEmailToOneClickRejectedList( |
| + const std::string& email) { |
| + PrefService* pref_service = Profile::FromBrowserContext( |
| + browser_context_.get())->GetPrefs(); |
| + ListPrefUpdate updater(pref_service, |
| + prefs::kReverseAutologinRejectedEmailList); |
| + updater->AppendIfNotPresent(Value::CreateStringValue(email)); |
| +} |
| + |
| void OneClickSigninHelperTest::AllowSigninCookies(bool enable) { |
| CookieSettings* cookie_settings = |
| CookieSettings::Factory::GetForProfile( |
| @@ -85,44 +117,95 @@ |
| enable ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK); |
| } |
| -} // namespace |
| +} // namespace |
| TEST_F(OneClickSigninHelperTest, CanOfferNoContents) { |
| - EXPECT_FALSE(OneClickSigninHelper::CanOffer(NULL, true)); |
| - EXPECT_FALSE(OneClickSigninHelper::CanOffer(NULL, false)); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(NULL, "user@gmail.com", true)); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(NULL, "", false)); |
| } |
| TEST_F(OneClickSigninHelperTest, CanOffer) { |
| content::WebContents* web_contents = CreateMockWebContents(false, ""); |
| + EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
| + WillRepeatedly(Return(true)); |
| + |
| EnableOneClick(true); |
| - EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, true)); |
| - EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, false)); |
| + EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, "user@gmail.com", |
| + true)); |
| + EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, "", false)); |
| EnableOneClick(false); |
| - EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true)); |
| - EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, false)); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, "user@gmail.com", |
| + true)); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, "", false)); |
| } |
| TEST_F(OneClickSigninHelperTest, CanOfferProfileConnected) { |
| content::WebContents* web_contents = CreateMockWebContents(false, |
| "foo@gmail.com"); |
| - EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true)); |
| - EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, false)); |
| + EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
| + WillRepeatedly(Return(true)); |
| + |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, |
| + "foo@gmail.com", |
| + true)); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, |
| + "user@gmail.com", |
| + true)); |
| + EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, |
| + "", |
| + false)); |
| } |
| +TEST_F(OneClickSigninHelperTest, CanOfferUsernameNotAllowed) { |
| + content::WebContents* web_contents = CreateMockWebContents(false, |
| + "foo@gmail.com"); |
| + |
| + EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
| + WillRepeatedly(Return(false)); |
| + |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, |
| + "foo@gmail.com", |
| + true)); |
| + EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, |
| + "foo@gmail.com", |
|
Roger Tawa OOO till Jul 10th
2012/06/27 21:17:08
pass an empty string for email?
mathp
2012/06/29 13:44:00
Done.
|
| + false)); |
| +} |
| + |
| +TEST_F(OneClickSigninHelperTest, CanOfferWithRejectedEmail) { |
| + content::WebContents* web_contents = CreateMockWebContents(false, ""); |
| + |
| + EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
| + WillRepeatedly(Return(true)); |
| + |
| + AddEmailToOneClickRejectedList("foo@gmail.com"); |
| + AddEmailToOneClickRejectedList("user@gmail.com"); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, "foo@gmail.com", |
| + true)); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, "user@gmail.com", |
| + true)); |
| + EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, "john@gmail.com", |
| + true)); |
| +} |
| + |
| TEST_F(OneClickSigninHelperTest, CanOfferIncognito) { |
| content::WebContents* web_contents = CreateMockWebContents(true, ""); |
| - EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true)); |
| - EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, false)); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, "user@gmail.com", |
| + true)); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, "", false)); |
| } |
| TEST_F(OneClickSigninHelperTest, CanOfferNoSigninCookies) { |
| content::WebContents* web_contents = CreateMockWebContents(false, ""); |
| AllowSigninCookies(false); |
| - EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true)); |
| - EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, false)); |
| + EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
| + WillRepeatedly(Return(true)); |
| + |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, "user@gmail.com", |
| + true)); |
| + EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, "", false)); |
| } |