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

Unified Diff: google_apis/gaia/oauth2_token_service_request_unittest.cc

Issue 299943003: Refactor ProfileOAuth2TokenServiceRequest into OAuth2TokenServiceRequest (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update comments referring to ProfileOAuth2TokenServiceRequest. Created 6 years, 7 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: google_apis/gaia/oauth2_token_service_request_unittest.cc
diff --git a/chrome/browser/signin/profile_oauth2_token_service_request_unittest.cc b/google_apis/gaia/oauth2_token_service_request_unittest.cc
similarity index 21%
rename from chrome/browser/signin/profile_oauth2_token_service_request_unittest.cc
rename to google_apis/gaia/oauth2_token_service_request_unittest.cc
index 0ada8e84fb0281d16e9f6631af31f035f813a04b..b6a62a38f0b1fccbe7344a350720f98b7999413a 100644
--- a/chrome/browser/signin/profile_oauth2_token_service_request_unittest.cc
+++ b/google_apis/gaia/oauth2_token_service_request_unittest.cc
@@ -1,17 +1,14 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/signin/profile_oauth2_token_service_request.h"
+
+#include "google_apis/gaia/oauth2_token_service_request.h"
#include <set>
#include <string>
#include <vector>
#include "base/threading/thread.h"
-#include "chrome/browser/signin/fake_profile_oauth2_token_service.h"
-#include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h"
-#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
-#include "chrome/test/base/testing_profile.h"
-#include "content/public/test/test_browser_thread.h"
+#include "google_apis/gaia/fake_oauth2_token_service.h"
#include "google_apis/gaia/google_service_auth_error.h"
#include "google_apis/gaia/oauth2_token_service.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -20,7 +17,6 @@ namespace {
const char kAccessToken[] = "access_token";
const char kAccountId[] = "test_user@gmail.com";
-const char kRefreshToken[] = "refresh_token";
class TestingOAuth2TokenServiceConsumer : public OAuth2TokenService::Consumer {
public:
@@ -33,17 +29,17 @@ class TestingOAuth2TokenServiceConsumer : public OAuth2TokenService::Consumer {
virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request,
const GoogleServiceAuthError& error) OVERRIDE;
+ int num_get_token_success_;
+ int num_get_token_failure_;
std::string last_token_;
- int number_of_successful_tokens_;
GoogleServiceAuthError last_error_;
- int number_of_errors_;
};
TestingOAuth2TokenServiceConsumer::TestingOAuth2TokenServiceConsumer()
: OAuth2TokenService::Consumer("test"),
- number_of_successful_tokens_(0),
- last_error_(GoogleServiceAuthError::AuthErrorNone()),
- number_of_errors_(0) {
+ num_get_token_success_(0),
+ num_get_token_failure_(0),
+ last_error_(GoogleServiceAuthError::AuthErrorNone()) {
}
TestingOAuth2TokenServiceConsumer::~TestingOAuth2TokenServiceConsumer() {
@@ -54,106 +50,237 @@ void TestingOAuth2TokenServiceConsumer::OnGetTokenSuccess(
const std::string& token,
const base::Time& expiration_date) {
last_token_ = token;
- ++number_of_successful_tokens_;
+ ++num_get_token_success_;
}
void TestingOAuth2TokenServiceConsumer::OnGetTokenFailure(
const OAuth2TokenService::Request* request,
const GoogleServiceAuthError& error) {
last_error_ = error;
- ++number_of_errors_;
+ ++num_get_token_failure_;
+}
+
+// A mock implementation of an OAuth2TokenService.
+//
+// Use SetResponse to vary the response to token requests.
+class MockOAuth2TokenService : public FakeOAuth2TokenService {
+ public:
+ MockOAuth2TokenService();
+ virtual ~MockOAuth2TokenService();
+
+ void SetResponse(const GoogleServiceAuthError& error,
+ const std::string& access_token,
+ const base::Time& expiration);
+ int num_invalidate_token() const;
msarda 2014/05/30 14:37:31 Simple accessor methods should be inlined.
maniscalco 2014/05/30 17:48:08 Done.
+ const std::string& last_token_invalidated() const;
+
+ protected:
+ virtual void FetchOAuth2Token(RequestImpl* request,
+ const std::string& account_id,
+ net::URLRequestContextGetter* getter,
+ const std::string& client_id,
+ const std::string& client_secret,
+ const ScopeSet& scopes) OVERRIDE;
+
+ virtual void InvalidateOAuth2Token(const std::string& account_id,
+ const std::string& client_id,
+ const ScopeSet& scopes,
+ const std::string& access_token) OVERRIDE;
+
+ private:
+ GoogleServiceAuthError response_error_;
+ std::string response_access_token_;
+ base::Time response_expiration_;
+ int num_invalidate_token_;
+ std::string last_token_invalidated_;
+};
+
+MockOAuth2TokenService::MockOAuth2TokenService()
+ : response_error_(GoogleServiceAuthError::AuthErrorNone()),
+ response_access_token_(kAccessToken),
+ response_expiration_(base::Time::Max()),
+ num_invalidate_token_(0) {
+}
+
+MockOAuth2TokenService::~MockOAuth2TokenService() {
+}
+
+void MockOAuth2TokenService::SetResponse(const GoogleServiceAuthError& error,
+ const std::string& access_token,
+ const base::Time& expiration) {
+ response_error_ = error;
+ response_access_token_ = access_token;
+ response_expiration_ = expiration;
+}
+
+int MockOAuth2TokenService::num_invalidate_token() const {
+ return num_invalidate_token_;
+}
+
+const std::string& MockOAuth2TokenService::last_token_invalidated() const {
+ return last_token_invalidated_;
+}
+
+void MockOAuth2TokenService::FetchOAuth2Token(
+ RequestImpl* request,
+ const std::string& account_id,
+ net::URLRequestContextGetter* getter,
+ const std::string& client_id,
+ const std::string& client_secret,
+ const ScopeSet& scopes) {
+ base::MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::Bind(&OAuth2TokenService::RequestImpl::InformConsumer,
+ request->AsWeakPtr(),
+ response_error_,
+ response_access_token_,
+ response_expiration_));
}
-class ProfileOAuth2TokenServiceRequestTest : public testing::Test {
+void MockOAuth2TokenService::InvalidateOAuth2Token(
+ const std::string& account_id,
+ const std::string& client_id,
+ const ScopeSet& scopes,
+ const std::string& access_token) {
+ ++num_invalidate_token_;
+ last_token_invalidated_ = access_token;
+}
+
+class OAuth2TokenServiceRequestTest : public testing::Test {
public:
virtual void SetUp() OVERRIDE;
protected:
- base::MessageLoop ui_loop_;
- scoped_ptr<content::TestBrowserThread> ui_thread_;
+ class Provider : public OAuth2TokenServiceRequest::TokenServiceProvider {
+ public:
+ Provider(const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ OAuth2TokenService* token_service);
- scoped_ptr<Profile> profile_;
- TestingOAuth2TokenServiceConsumer consumer_;
- FakeProfileOAuth2TokenService* oauth2_service_;
+ virtual scoped_refptr<base::SingleThreadTaskRunner>
+ GetTokenServiceTaskRunner() OVERRIDE;
+ virtual OAuth2TokenService* GetTokenService() OVERRIDE;
+
+ private:
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ OAuth2TokenService* token_service_;
+ };
- scoped_ptr<ProfileOAuth2TokenServiceRequest> request_;
+ base::MessageLoop ui_loop_;
+ scoped_ptr<MockOAuth2TokenService> oauth2_service_;
+ scoped_ptr<OAuth2TokenServiceRequest::TokenServiceProvider> provider_;
+ TestingOAuth2TokenServiceConsumer consumer_;
};
-void ProfileOAuth2TokenServiceRequestTest::SetUp() {
- ui_thread_.reset(new content::TestBrowserThread(content::BrowserThread::UI,
- &ui_loop_));
- TestingProfile::Builder builder;
- builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(),
- &BuildFakeProfileOAuth2TokenService);
- profile_ = builder.Build();
+void OAuth2TokenServiceRequestTest::SetUp() {
+ oauth2_service_.reset(new MockOAuth2TokenService);
+ oauth2_service_->AddAccount(kAccountId);
+ provider_.reset(
+ new Provider(base::MessageLoopProxy::current(), oauth2_service_.get()));
+}
- oauth2_service_ = (FakeProfileOAuth2TokenService*)
- ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get());
+OAuth2TokenServiceRequestTest::Provider::Provider(
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ OAuth2TokenService* token_service)
+ : task_runner_(task_runner), token_service_(token_service) {
}
-TEST_F(ProfileOAuth2TokenServiceRequestTest,
- Failure) {
- scoped_ptr<ProfileOAuth2TokenServiceRequest> request(
- ProfileOAuth2TokenServiceRequest::CreateAndStart(
- profile_.get(),
- std::string(),
- OAuth2TokenService::ScopeSet(),
- &consumer_));
- oauth2_service_->IssueErrorForAllPendingRequests(
- GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_UNAVAILABLE));
+scoped_refptr<base::SingleThreadTaskRunner>
+OAuth2TokenServiceRequestTest::Provider::GetTokenServiceTaskRunner() {
+ return task_runner_;
+}
+
+OAuth2TokenService* OAuth2TokenServiceRequestTest::Provider::GetTokenService() {
+ return token_service_;
+}
+
+TEST_F(OAuth2TokenServiceRequestTest, CreateAndStart_Failure) {
+ oauth2_service_->SetResponse(
+ GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_UNAVAILABLE),
+ std::string(),
+ base::Time());
+ scoped_ptr<OAuth2TokenServiceRequest> request(
+ OAuth2TokenServiceRequest::CreateAndStart(provider_.get(),
+ kAccountId,
+ OAuth2TokenService::ScopeSet(),
+ &consumer_));
ui_loop_.RunUntilIdle();
- EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
- EXPECT_EQ(1, consumer_.number_of_errors_);
+ EXPECT_EQ(0, consumer_.num_get_token_success_);
+ EXPECT_EQ(1, consumer_.num_get_token_failure_);
+ EXPECT_EQ(GoogleServiceAuthError::SERVICE_UNAVAILABLE,
+ consumer_.last_error_.state());
+ EXPECT_EQ(0, oauth2_service_->num_invalidate_token());
}
-TEST_F(ProfileOAuth2TokenServiceRequestTest, Success) {
- oauth2_service_->UpdateCredentials(kAccountId, kRefreshToken);
- scoped_ptr<ProfileOAuth2TokenServiceRequest> request(
- ProfileOAuth2TokenServiceRequest::CreateAndStart(
- profile_.get(),
- kAccountId,
- OAuth2TokenService::ScopeSet(),
- &consumer_));
- oauth2_service_->IssueTokenForAllPendingRequests(kAccessToken,
- base::Time::Max());
+TEST_F(OAuth2TokenServiceRequestTest, CreateAndStart_Success) {
+ scoped_ptr<OAuth2TokenServiceRequest> request(
+ OAuth2TokenServiceRequest::CreateAndStart(provider_.get(),
+ kAccountId,
+ OAuth2TokenService::ScopeSet(),
+ &consumer_));
ui_loop_.RunUntilIdle();
- EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
+ EXPECT_EQ(1, consumer_.num_get_token_success_);
+ EXPECT_EQ(0, consumer_.num_get_token_failure_);
EXPECT_EQ(kAccessToken, consumer_.last_token_);
- EXPECT_EQ(0, consumer_.number_of_errors_);
+ EXPECT_EQ(0, oauth2_service_->num_invalidate_token());
}
-TEST_F(ProfileOAuth2TokenServiceRequestTest,
- RequestDeletionBeforeServiceComplete) {
- oauth2_service_->UpdateCredentials(kAccountId, kRefreshToken);
- scoped_ptr<ProfileOAuth2TokenServiceRequest> request(
- ProfileOAuth2TokenServiceRequest::CreateAndStart(
- profile_.get(),
- kAccountId,
- OAuth2TokenService::ScopeSet(),
- &consumer_));
+TEST_F(OAuth2TokenServiceRequestTest,
+ CreateAndStart_DestroyRequestBeforeCompletes) {
+ scoped_ptr<OAuth2TokenServiceRequest> request(
+ OAuth2TokenServiceRequest::CreateAndStart(provider_.get(),
+ kAccountId,
+ OAuth2TokenService::ScopeSet(),
+ &consumer_));
request.reset();
- oauth2_service_->IssueTokenForAllPendingRequests(kAccessToken,
- base::Time::Max());
ui_loop_.RunUntilIdle();
- EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
- EXPECT_EQ(0, consumer_.number_of_errors_);
+ EXPECT_EQ(0, consumer_.num_get_token_success_);
+ EXPECT_EQ(0, consumer_.num_get_token_failure_);
+ EXPECT_EQ(0, oauth2_service_->num_invalidate_token());
+}
+
+TEST_F(OAuth2TokenServiceRequestTest,
+ CreateAndStart_DestroyRequestAfterCompletes) {
+ scoped_ptr<OAuth2TokenServiceRequest> request(
+ OAuth2TokenServiceRequest::CreateAndStart(provider_.get(),
+ kAccountId,
+ OAuth2TokenService::ScopeSet(),
+ &consumer_));
+ ui_loop_.RunUntilIdle();
+ request.reset();
+ EXPECT_EQ(1, consumer_.num_get_token_success_);
+ EXPECT_EQ(0, consumer_.num_get_token_failure_);
+ EXPECT_EQ(kAccessToken, consumer_.last_token_);
+ EXPECT_EQ(0, oauth2_service_->num_invalidate_token());
}
-TEST_F(ProfileOAuth2TokenServiceRequestTest,
- RequestDeletionAfterServiceComplete) {
- oauth2_service_->UpdateCredentials(kAccountId, kRefreshToken);
- scoped_ptr<ProfileOAuth2TokenServiceRequest> request(
- ProfileOAuth2TokenServiceRequest::CreateAndStart(
- profile_.get(),
+TEST_F(OAuth2TokenServiceRequestTest, CreateAndStartInvalidate) {
+ scoped_ptr<OAuth2TokenServiceRequest> request(
+ OAuth2TokenServiceRequest::CreateAndStartInvalidate(
+ provider_.get(),
kAccountId,
OAuth2TokenService::ScopeSet(),
- &consumer_));
- oauth2_service_->IssueTokenForAllPendingRequests(kAccessToken,
- base::Time::Max());
+ kAccessToken));
ui_loop_.RunUntilIdle();
+ EXPECT_EQ(0, consumer_.num_get_token_success_);
+ EXPECT_EQ(0, consumer_.num_get_token_failure_);
+ EXPECT_EQ(kAccessToken, oauth2_service_->last_token_invalidated());
+ EXPECT_EQ(1, oauth2_service_->num_invalidate_token());
+}
+
+TEST_F(OAuth2TokenServiceRequestTest,
+ CreateAndStartInvalidate_DestroyBeforeCompletes) {
+ scoped_ptr<OAuth2TokenServiceRequest> request(
+ OAuth2TokenServiceRequest::CreateAndStartInvalidate(
+ provider_.get(),
+ kAccountId,
+ OAuth2TokenService::ScopeSet(),
+ kAccessToken));
request.reset();
- EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
- EXPECT_EQ(0, consumer_.number_of_errors_);
+ ui_loop_.RunUntilIdle();
+ EXPECT_EQ(0, consumer_.num_get_token_success_);
+ EXPECT_EQ(0, consumer_.num_get_token_failure_);
+ EXPECT_EQ(kAccessToken, oauth2_service_->last_token_invalidated());
+ EXPECT_EQ(1, oauth2_service_->num_invalidate_token());
}
} // namespace

Powered by Google App Engine
This is Rietveld 408576698