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