Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4150)

Unified Diff: chrome/browser/ui/sync/one_click_signin_helper_unittest.cc

Issue 19567004: Convert SigninTracker to use OAuth2TokenService notifications (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/sync/one_click_signin_helper_unittest.cc
diff --git a/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc b/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc
index c61d8065496d26dcd26630d8c41a265cc8731273..17dca514c5940b2a6f09b1f7ff75241ba53dce71 100644
--- a/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc
+++ b/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc
@@ -5,6 +5,7 @@
#include "base/prefs/pref_service.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
+#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/content_settings/cookie_settings.h"
#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
@@ -13,6 +14,8 @@
#include "chrome/browser/profiles/profile_io_data.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/signin/fake_signin_manager.h"
+#include "chrome/browser/signin/profile_oauth2_token_service.h"
+#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/signin/signin_names_io_thread.h"
@@ -21,6 +24,8 @@
#include "chrome/browser/sync/profile_sync_service_mock.h"
#include "chrome/browser/sync/test_profile_sync_service.h"
#include "chrome/browser/ui/sync/one_click_signin_helper.h"
+#include "chrome/browser/ui/webui/signin/login_ui_service.h"
+#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "chrome/test/base/testing_browser_process.h"
@@ -62,6 +67,42 @@ class SigninManagerMock : public FakeSigninManager {
MOCK_CONST_METHOD1(IsAllowedUsername, bool(const std::string& username));
};
+static BrowserContextKeyedService* BuildSigninManagerMock(
+ content::BrowserContext* profile) {
+ return new SigninManagerMock(static_cast<Profile*>(profile));
+}
+
+class OAuth2TokenServiceMock : public ProfileOAuth2TokenService {
Andrew T Wilson (Slow) 2013/08/19 15:23:06 Technically this isn't a Mock, it's a Fake. Again,
Roger Tawa OOO till Jul 10th 2013/08/29 19:28:41 Done.
+ public:
+ // For testing: set the refresh token to be used.
+ void set_refresh_token(const std::string& refresh_token) {
+ refresh_token_ = refresh_token;
+ }
+
+ protected:
+ virtual std::string GetRefreshToken() OVERRIDE { return refresh_token_; }
+
+ private:
+ // OAuth2TokenService implementation.
+ virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE {
+ return NULL;
+ }
+
+ std::string refresh_token_;
+};
+
+static BrowserContextKeyedService* BuildOAuth2TokenServiceMock(
+ content::BrowserContext* profile) {
+ OAuth2TokenServiceMock* token_service = new OAuth2TokenServiceMock;
+ token_service->Initialize(static_cast<Profile*>(profile));
+ return token_service;
+}
+
+class FakeLoginUI : public LoginUIService::LoginUI {
+ virtual void FocusUI() OVERRIDE {}
+ virtual void CloseUI() OVERRIDE {}
+};
+
class TestProfileIOData : public ProfileIOData {
public:
TestProfileIOData(bool is_incognito, PrefService* pref_service,
@@ -191,11 +232,6 @@ class OneClickTestProfileSyncService : public TestProfileSyncService {
bool first_setup_in_progress_;
};
-static BrowserContextKeyedService* BuildSigninManagerMock(
- content::BrowserContext* profile) {
- return new SigninManagerMock(static_cast<Profile*>(profile));
-}
-
} // namespace
class OneClickSigninHelperTest : public ChromeRenderViewHostTestHarness {
@@ -211,6 +247,10 @@ class OneClickSigninHelperTest : public ChromeRenderViewHostTestHarness {
// the given account.
void CreateSigninManager(bool use_incognito, const std::string& username);
+ // Creates the oauth2 token service, and provides a way to fire a dummy
+ // fresh token available event.
+ void CreateOAuth2TokenService();
+
// Set the ID of the signin process that the test will assume to be the
// only process allowed to sign the user in to Chrome.
void SetTrustedSigninProcessID(int id);
@@ -224,6 +264,7 @@ class OneClickSigninHelperTest : public ChromeRenderViewHostTestHarness {
OneClickSigninHelper* SetupHelperForSignin();
SigninManagerMock* signin_manager_;
+ OAuth2TokenServiceMock* token_service_;
protected:
GoogleServiceAuthError no_error_;
@@ -238,7 +279,9 @@ class OneClickSigninHelperTest : public ChromeRenderViewHostTestHarness {
};
OneClickSigninHelperTest::OneClickSigninHelperTest()
- : no_error_(GoogleServiceAuthError::NONE),
+ : signin_manager_(NULL),
+ token_service_(NULL),
+ no_error_(GoogleServiceAuthError::NONE),
trusted_signin_process_id_(-1) {
}
@@ -273,6 +316,12 @@ void OneClickSigninHelperTest::CreateSigninManager(
}
}
+void OneClickSigninHelperTest::CreateOAuth2TokenService() {
+ token_service_ = static_cast<OAuth2TokenServiceMock*>(
+ ProfileOAuth2TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse(
+ profile(), BuildOAuth2TokenServiceMock));
+}
+
void OneClickSigninHelperTest::EnableOneClick(bool enable) {
PrefService* pref_service = profile()->GetPrefs();
pref_service->SetBoolean(prefs::kReverseAutologinEnabled, enable);
@@ -642,6 +691,7 @@ TEST_F(OneClickSigninHelperTest, ShowInfoBarUIThreadIncognito) {
// config sync, then Chrome should redirect immediately to sync settings page,
// and upon successful setup, redirect back to webstore.
TEST_F(OneClickSigninHelperTest, SigninFromWebstoreWithConfigSyncfirst) {
+ CreateOAuth2TokenService();
CreateSigninManager(false, std::string());
EXPECT_CALL(*signin_manager_, IsAllowedUsername(_))
.WillRepeatedly(Return(true));
@@ -667,6 +717,17 @@ TEST_F(OneClickSigninHelperTest, SigninFromWebstoreWithConfigSyncfirst) {
NavigateAndCommit(GURL("https://chrome.google.com/webstore?source=3"));
helper->DidStopLoading(rvh());
+ token_service_->set_refresh_token("refresh_token");
+ FakeLoginUI fake_login_ui;
+ LoginUIServiceFactory::GetForProfile(profile())->SetLoginUI(&fake_login_ui);
+ GoogleServiceSigninSuccessDetails details("user@gmail.com", "password");
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
+ content::Source<Profile>(profile()),
+ content::Details<const GoogleServiceSigninSuccessDetails>(&details));
+ LoginUIServiceFactory::GetForProfile(profile())->
+ LoginUIClosed(&fake_login_ui);
+
helper->OnStateChanged();
EXPECT_EQ(GURL(continueUrl), contents->GetURL());
EXPECT_EQ("user@gmail.com", signin_manager_->GetAuthenticatedUsername());

Powered by Google App Engine
This is Rietveld 408576698