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)); |
} |