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

Unified Diff: chrome/browser/signin/signin_tracker_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, 3 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
« no previous file with comments | « chrome/browser/signin/signin_tracker.cc ('k') | chrome/browser/ui/sync/one_click_signin_helper.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/signin/signin_tracker_unittest.cc
diff --git a/chrome/browser/signin/signin_tracker_unittest.cc b/chrome/browser/signin/signin_tracker_unittest.cc
index ac2d366ebb4d258f28c09441b6afc3c23bef7f3b..11bef684736cc343a93b98118a2e130c9e1092da 100644
--- a/chrome/browser/signin/signin_tracker_unittest.cc
+++ b/chrome/browser/signin/signin_tracker_unittest.cc
@@ -10,13 +10,15 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/fake_auth_status_provider.h"
+#include "chrome/browser/signin/fake_profile_oauth2_token_service.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/token_service.h"
-#include "chrome/browser/signin/token_service_factory.h"
#include "chrome/browser/sync/profile_sync_service_factory.h"
#include "chrome/browser/sync/profile_sync_service_mock.h"
+#include "chrome/test/base/testing_profile.h"
#include "content/public/browser/notification_service.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "google_apis/gaia/gaia_constants.h"
@@ -33,19 +35,6 @@ using ::testing::ReturnRef;
namespace {
-class MockTokenService : public TokenService {
- public:
- MockTokenService() { }
- virtual ~MockTokenService() { }
-
- MOCK_CONST_METHOD1(HasTokenForService, bool(const char*));
-};
-
-BrowserContextKeyedService* BuildMockTokenService(
- content::BrowserContext* profile) {
- return new MockTokenService;
-}
-
class MockObserver : public SigninTracker::Observer {
public:
MockObserver() {}
@@ -61,15 +50,21 @@ class SigninTrackerTest : public testing::Test {
public:
SigninTrackerTest() {}
virtual void SetUp() OVERRIDE {
- profile_.reset(new TestingProfile());
- mock_token_service_ = static_cast<MockTokenService*>(
- TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse(
- profile_.get(), BuildMockTokenService));
+ TestingProfile::Builder builder;
+ builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(),
+ FakeProfileOAuth2TokenService::Build);
+
+ profile_ = builder.Build();
+
+ fake_oauth2_token_service_ =
+ static_cast<FakeProfileOAuth2TokenService*>(
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get()));
mock_signin_manager_ = static_cast<FakeSigninManagerBase*>(
SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse(
profile_.get(), FakeSigninManagerBase::Build));
mock_signin_manager_->Initialize(profile_.get(), NULL);
+
tracker_.reset(new SigninTracker(profile_.get(), &observer_));
}
virtual void TearDown() OVERRIDE {
@@ -77,101 +72,31 @@ class SigninTrackerTest : public testing::Test {
profile_.reset();
}
- void SendSigninSuccessful() {
- mock_signin_manager_->SetAuthenticatedUsername("username@gmail.com");
- GoogleServiceSigninSuccessDetails details("username@gmail.com", "password");
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
- content::Source<Profile>(profile_.get()),
- content::Details<const GoogleServiceSigninSuccessDetails>(&details));
- }
-
content::TestBrowserThreadBundle thread_bundle_;
scoped_ptr<SigninTracker> tracker_;
scoped_ptr<TestingProfile> profile_;
FakeSigninManagerBase* mock_signin_manager_;
- MockTokenService* mock_token_service_;
+ FakeProfileOAuth2TokenService* fake_oauth2_token_service_;
MockObserver observer_;
};
-TEST_F(SigninTrackerTest, GaiaSignInFailed) {
+TEST_F(SigninTrackerTest, SignInFails) {
// SIGNIN_FAILED notification should result in a SigninFailed callback.
- GoogleServiceAuthError error(
+ const GoogleServiceAuthError error(
GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS);
+ EXPECT_CALL(observer_, SigninSuccess()).Times(0);
EXPECT_CALL(observer_, SigninFailed(error));
+
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_GOOGLE_SIGNIN_FAILED,
content::Source<Profile>(profile_.get()),
content::Details<const GoogleServiceAuthError>(&error));
}
-TEST_F(SigninTrackerTest, GaiaSignInSucceeded) {
- // SIGNIN_SUCCEEDED notification should lead us to get a SigninSuccess()
- // callback.
+TEST_F(SigninTrackerTest, SignInSucceeds) {
EXPECT_CALL(observer_, SigninSuccess());
- EXPECT_CALL(*mock_token_service_, HasTokenForService(_))
- .WillRepeatedly(Return(true));
- SendSigninSuccessful();
-}
-
-TEST_F(SigninTrackerTest, NoGaiaSigninWhenOAuthTokensNotAvailable) {
- // SIGNIN_SUCCESSFUL notification should not result in a SigninSuccess()
- // callback if our oauth token hasn't been fetched.
- EXPECT_CALL(observer_, SigninSuccess()).Times(0);
EXPECT_CALL(observer_, SigninFailed(_)).Times(0);
- EXPECT_CALL(*mock_token_service_,
- HasTokenForService(GaiaConstants::kSyncService))
- .WillRepeatedly(Return(true));
- EXPECT_CALL(*mock_token_service_,
- HasTokenForService(GaiaConstants::kGaiaOAuth2LoginRefreshToken))
- .WillRepeatedly(Return(false));
- SendSigninSuccessful();
-}
-TEST_F(SigninTrackerTest, GaiaSigninAfterOAuthTokenBecomesAvailable) {
- // SIGNIN_SUCCESSFUL notification should not result in a SigninSuccess()
- // callback until after our oauth token has been fetched.
- EXPECT_CALL(observer_, SigninSuccess()).Times(0);
- EXPECT_CALL(*mock_token_service_,
- HasTokenForService(GaiaConstants::kSyncService))
- .WillRepeatedly(Return(true));
- EXPECT_CALL(*mock_token_service_,
- HasTokenForService(GaiaConstants::kGaiaOAuth2LoginRefreshToken))
- .WillRepeatedly(Return(false));
- SendSigninSuccessful();
- Mock::VerifyAndClearExpectations(mock_token_service_);
- EXPECT_CALL(observer_, SigninSuccess());
- TokenService::TokenAvailableDetails available(
- GaiaConstants::kGaiaOAuth2LoginRefreshToken, "foo_token");
- EXPECT_CALL(*mock_token_service_, HasTokenForService(_))
- .WillRepeatedly(Return(true));
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_TOKEN_AVAILABLE,
- content::Source<TokenService>(mock_token_service_),
- content::Details<const TokenService::TokenAvailableDetails>(&available));
-}
-
-TEST_F(SigninTrackerTest, SigninFailedWhenTokenFetchFails) {
- // TOKEN_REQUEST_FAILED notification should result in SigninFailed() callback.
- // We should not get any SigninFailed() callbacks until we issue the
- // TOKEN_REQUEST_FAILED notification.
- EXPECT_CALL(observer_, SigninFailed(_)).Times(0);
- EXPECT_CALL(*mock_token_service_,
- HasTokenForService(GaiaConstants::kSyncService))
- .WillRepeatedly(Return(true));
- EXPECT_CALL(*mock_token_service_,
- HasTokenForService(GaiaConstants::kGaiaOAuth2LoginRefreshToken))
- .WillRepeatedly(Return(false));
- SendSigninSuccessful();
-
- Mock::VerifyAndClearExpectations(&observer_);
- GoogleServiceAuthError error(
- GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS);
- EXPECT_CALL(observer_, SigninFailed(error));
- TokenService::TokenRequestFailedDetails failed(
- GaiaConstants::kGaiaOAuth2LoginRefreshToken, error);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_TOKEN_REQUEST_FAILED,
- content::Source<TokenService>(mock_token_service_),
- content::Details<const TokenService::TokenRequestFailedDetails>(&failed));
+ mock_signin_manager_->SetAuthenticatedUsername("user@gmail.com");
+ fake_oauth2_token_service_->IssueRefreshToken("refresh_token");
}
« no previous file with comments | « chrome/browser/signin/signin_tracker.cc ('k') | chrome/browser/ui/sync/one_click_signin_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698