Chromium Code Reviews| Index: chrome/browser/managed_mode/managed_user_refresh_token_fetcher_unittest.cc |
| diff --git a/chrome/browser/managed_mode/managed_user_refresh_token_fetcher_unittest.cc b/chrome/browser/managed_mode/managed_user_refresh_token_fetcher_unittest.cc |
| index 75608a6ae3260804f662a93ae64b9bcc266f3c55..93c8edf031492dd6f89fc8644a5a722ecc012096 100644 |
| --- a/chrome/browser/managed_mode/managed_user_refresh_token_fetcher_unittest.cc |
| +++ b/chrome/browser/managed_mode/managed_user_refresh_token_fetcher_unittest.cc |
| @@ -6,6 +6,7 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/strings/stringprintf.h" |
| #include "chrome/browser/managed_mode/managed_user_refresh_token_fetcher.h" |
| +#include "chrome/browser/signin/fake_profile_oauth2_token_service.h" |
| #include "chrome/browser/signin/oauth2_token_service.h" |
| #include "chrome/test/base/testing_profile.h" |
| #include "content/public/test/test_browser_thread_bundle.h" |
| @@ -25,6 +26,7 @@ namespace { |
| const char kManagedUserId[] = "abcdef"; |
| const char kDeviceName[] = "Compy"; |
| +const char kOAuth2RefreshToken[] = "refreshtoken"; |
|
Bernhard Bauer
2013/08/19 14:00:06
Could you move this after kManagedUserToken?
Andrew T Wilson (Slow)
2013/08/20 09:28:35
Done.
|
| const char kAccessToken[] = "accesstoken"; |
| const char kAuthorizationCode[] = "authorizationcode"; |
| const char kManagedUserToken[] = "managedusertoken"; |
| @@ -41,100 +43,6 @@ const char kGetRefreshTokenResponseFormat[] = |
| " \"refresh_token\": \"%s\"" |
| "}"; |
| -// MockOAuth2TokenService --------------------------------------------- |
| - |
| -class MockOAuth2TokenService : public OAuth2TokenService { |
| - public: |
| - class Request : public OAuth2TokenService::Request { |
| - public: |
| - Request(const OAuth2TokenService::ScopeSet& scopes, |
| - OAuth2TokenService::Consumer* consumer, |
| - MockOAuth2TokenService* owner); |
| - virtual ~Request(); |
| - |
| - void Succeed(); |
| - void Fail(GoogleServiceAuthError::State error); |
| - |
| - const OAuth2TokenService::ScopeSet& scopes() const { return scopes_; } |
| - |
| - private: |
| - OAuth2TokenService::ScopeSet scopes_; |
| - |
| - OAuth2TokenService::Consumer* consumer_; |
| - |
| - MockOAuth2TokenService* owner_; |
| - }; |
| - |
| - MockOAuth2TokenService(); |
| - virtual ~MockOAuth2TokenService(); |
| - |
| - Request* request() const { return request_; } |
| - |
| - void ClearRequest(Request* request); |
| - |
| - private: |
| - // OAuth2TokenService overrides: |
| - virtual scoped_ptr<OAuth2TokenService::Request> StartRequest( |
| - const OAuth2TokenService::ScopeSet& scopes, |
| - OAuth2TokenService::Consumer* consumer) OVERRIDE; |
| - virtual std::string GetRefreshToken() OVERRIDE; |
| - virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE { |
| - return NULL; |
| - } |
| - |
| - Request* request_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(MockOAuth2TokenService); |
| -}; |
| - |
| -MockOAuth2TokenService::Request::Request( |
| - const OAuth2TokenService::ScopeSet& scopes, |
| - OAuth2TokenService::Consumer* consumer, |
| - MockOAuth2TokenService* owner) |
| - : scopes_(scopes), |
| - consumer_(consumer), |
| - owner_(owner) {} |
| - |
| -MockOAuth2TokenService::Request::~Request() { |
| - owner_->ClearRequest(this); |
| -} |
| - |
| -void MockOAuth2TokenService::Request::Succeed() { |
| - base::Time expiration_date = base::Time::Now() + |
| - base::TimeDelta::FromHours(1); |
| - consumer_->OnGetTokenSuccess(this, kAccessToken, expiration_date); |
| -} |
| - |
| -void MockOAuth2TokenService::Request::Fail( |
| - GoogleServiceAuthError::State error) { |
| - consumer_->OnGetTokenFailure(this, GoogleServiceAuthError(error)); |
| -} |
| - |
| -MockOAuth2TokenService::MockOAuth2TokenService() : request_(NULL) {} |
| - |
| -MockOAuth2TokenService::~MockOAuth2TokenService() { |
| - EXPECT_FALSE(request_); |
| -} |
| - |
| -void MockOAuth2TokenService::ClearRequest( |
| - MockOAuth2TokenService::Request* request) { |
| - if (request_ == request) |
| - request_ = NULL; |
| -} |
| - |
| -scoped_ptr<OAuth2TokenService::Request> MockOAuth2TokenService::StartRequest( |
| - const OAuth2TokenService::ScopeSet& scopes, |
| - OAuth2TokenService::Consumer* consumer) { |
| - scoped_ptr<Request> request(new Request(scopes, consumer, this)); |
| - request_ = request.get(); |
| - return request.PassAs<OAuth2TokenService::Request>(); |
| -} |
| - |
| -std::string MockOAuth2TokenService::GetRefreshToken() { |
| - NOTREACHED(); |
| - return std::string(); |
| -} |
| - |
| // Utility methods -------------------------------------------------- |
| // Slightly hacky way to extract a value from a URL-encoded POST request body. |
| @@ -176,10 +84,11 @@ class ManagedUserRefreshTokenFetcherTest : public testing::Test { |
| protected: |
| void StartFetching(); |
| - MockOAuth2TokenService::Request* GetOAuth2TokenServiceRequest(); |
| net::TestURLFetcher* GetIssueTokenRequest(); |
| net::TestURLFetcher* GetRefreshTokenRequest(); |
| + void MakeOAuth2TokenServiceRequestSucceed(); |
| + void MakeOAuth2TokenServiceRequestFail(GoogleServiceAuthError::State error); |
| void MakeIssueTokenRequestSucceed(); |
| void MakeRefreshTokenFetchSucceed(); |
| @@ -194,7 +103,7 @@ class ManagedUserRefreshTokenFetcherTest : public testing::Test { |
| content::TestBrowserThreadBundle thread_bundle_; |
| TestingProfile profile_; |
| - MockOAuth2TokenService oauth2_token_service_; |
| + FakeProfileOAuth2TokenService oauth2_token_service_; |
| net::TestURLFetcherFactory url_fetcher_factory_; |
| scoped_ptr<ManagedUserRefreshTokenFetcher> token_fetcher_; |
| @@ -211,22 +120,13 @@ ManagedUserRefreshTokenFetcherTest::ManagedUserRefreshTokenFetcherTest() |
| weak_ptr_factory_(this) {} |
| void ManagedUserRefreshTokenFetcherTest::StartFetching() { |
| + oauth2_token_service_.IssueRefreshToken(kOAuth2RefreshToken); |
| token_fetcher_->Start(kManagedUserId, kDeviceName, |
| base::Bind( |
| &ManagedUserRefreshTokenFetcherTest::OnTokenFetched, |
| weak_ptr_factory_.GetWeakPtr())); |
| } |
| -MockOAuth2TokenService::Request* |
| -ManagedUserRefreshTokenFetcherTest::GetOAuth2TokenServiceRequest() { |
| - MockOAuth2TokenService::Request* request = oauth2_token_service_.request(); |
| - |
| - OAuth2TokenService::ScopeSet scopes = request->scopes(); |
| - EXPECT_EQ(1u, scopes.size()); |
| - EXPECT_EQ(1u, scopes.count(GaiaUrls::GetInstance()->oauth1_login_scope())); |
| - return request; |
| -} |
| - |
| net::TestURLFetcher* |
| ManagedUserRefreshTokenFetcherTest::GetIssueTokenRequest() { |
| net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID(1); |
| @@ -265,6 +165,34 @@ ManagedUserRefreshTokenFetcherTest::GetRefreshTokenRequest() { |
| return url_fetcher; |
| } |
| +void |
| +ManagedUserRefreshTokenFetcherTest::MakeOAuth2TokenServiceRequestSucceed() { |
| + std::vector<FakeProfileOAuth2TokenService::PendingRequest> requests = |
| + oauth2_token_service_.GetPendingRequests(); |
| + ASSERT_GE(1u, requests.size()); |
|
Bernhard Bauer
2013/08/19 14:00:06
This asserts that 1 >= requests.size(). I think yo
Andrew T Wilson (Slow)
2013/08/20 09:28:35
OK, changed it to the stricter EQ instead.
|
| + OAuth2TokenService::ScopeSet scopes = requests[0].scopes; |
| + EXPECT_EQ(1u, scopes.size()); |
| + EXPECT_EQ(1u, scopes.count(GaiaUrls::GetInstance()->oauth1_login_scope())); |
|
Bernhard Bauer
2013/08/19 14:00:06
Would it make sense to extract the code up until h
Andrew T Wilson (Slow)
2013/08/20 09:28:35
Done.
|
| + base::Time expiration_date = base::Time::Now() + |
| + base::TimeDelta::FromHours(1); |
| + oauth2_token_service_.IssueTokenForScope(scopes, |
| + kAccessToken, |
| + expiration_date); |
| +} |
| + |
| +void |
| +ManagedUserRefreshTokenFetcherTest::MakeOAuth2TokenServiceRequestFail( |
| + GoogleServiceAuthError::State error) { |
| + std::vector<FakeProfileOAuth2TokenService::PendingRequest> requests = |
| + oauth2_token_service_.GetPendingRequests(); |
| + ASSERT_GE(1u, requests.size()); |
| + OAuth2TokenService::ScopeSet scopes = requests[0].scopes; |
| + EXPECT_EQ(1u, scopes.size()); |
| + EXPECT_EQ(1u, scopes.count(GaiaUrls::GetInstance()->oauth1_login_scope())); |
| + oauth2_token_service_.IssueErrorForScope(scopes, |
| + GoogleServiceAuthError(error)); |
| +} |
| + |
| void ManagedUserRefreshTokenFetcherTest::MakeIssueTokenRequestSucceed() { |
| SendResponse(GetIssueTokenRequest(), |
| base::StringPrintf(kIssueTokenResponseFormat, |
| @@ -292,7 +220,7 @@ void ManagedUserRefreshTokenFetcherTest::OnTokenFetched( |
| TEST_F(ManagedUserRefreshTokenFetcherTest, Success) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| MakeIssueTokenRequestSucceed(); |
| MakeRefreshTokenFetchSucceed(); |
| @@ -302,9 +230,9 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, Success) { |
| TEST_F(ManagedUserRefreshTokenFetcherTest, ExpiredAccessToken) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| SetHttpError(GetIssueTokenRequest(), net::HTTP_UNAUTHORIZED); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| MakeIssueTokenRequestSucceed(); |
| MakeRefreshTokenFetchSucceed(); |
| @@ -316,9 +244,9 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, ExpiredAccessTokenRetry) { |
| // If we get a 401 error for the second time, we should give up instead of |
| // retrying again. |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| SetHttpError(GetIssueTokenRequest(), net::HTTP_UNAUTHORIZED); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| SetHttpError(GetIssueTokenRequest(), net::HTTP_UNAUTHORIZED); |
| EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); |
| @@ -328,7 +256,7 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, ExpiredAccessTokenRetry) { |
| TEST_F(ManagedUserRefreshTokenFetcherTest, MalformedIssueTokenResponse) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| SendResponse(GetIssueTokenRequest(), "choke"); |
| EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); |
| @@ -338,7 +266,7 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, MalformedIssueTokenResponse) { |
| TEST_F(ManagedUserRefreshTokenFetcherTest, FetchAccessTokenFailure) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Fail( |
| + MakeOAuth2TokenServiceRequestFail( |
| GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); |
| EXPECT_EQ(GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS, error().state()); |
| @@ -347,7 +275,7 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, FetchAccessTokenFailure) { |
| TEST_F(ManagedUserRefreshTokenFetcherTest, IssueTokenNetworkError) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| SetNetworkError(GetIssueTokenRequest(), net::ERR_SSL_PROTOCOL_ERROR); |
| EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); |
| @@ -357,7 +285,7 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, IssueTokenNetworkError) { |
| TEST_F(ManagedUserRefreshTokenFetcherTest, FetchRefreshTokenNetworkError) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| MakeIssueTokenRequestSucceed(); |
| SetNetworkError(GetRefreshTokenRequest(), net::ERR_CONNECTION_REFUSED); |
| EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| @@ -371,7 +299,7 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, FetchRefreshTokenNetworkError) { |
| TEST_F(ManagedUserRefreshTokenFetcherTest, |
| FetchRefreshTokenTransientNetworkError) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| MakeIssueTokenRequestSucceed(); |
| SetNetworkError(GetRefreshTokenRequest(), net::ERR_CONNECTION_REFUSED); |
| @@ -384,7 +312,7 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, |
| TEST_F(ManagedUserRefreshTokenFetcherTest, FetchRefreshTokenBadRequest) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| MakeIssueTokenRequestSucceed(); |
| SetHttpError(GetRefreshTokenRequest(), net::HTTP_BAD_REQUEST); |
| @@ -403,7 +331,7 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, CancelWhileFetchingAccessToken) { |
| TEST_F(ManagedUserRefreshTokenFetcherTest, CancelWhileCallingIssueToken) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| Reset(); |
| EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| @@ -412,7 +340,7 @@ TEST_F(ManagedUserRefreshTokenFetcherTest, CancelWhileCallingIssueToken) { |
| TEST_F(ManagedUserRefreshTokenFetcherTest, CancelWhileFetchingRefreshToken) { |
| StartFetching(); |
| - GetOAuth2TokenServiceRequest()->Succeed(); |
| + MakeOAuth2TokenServiceRequestSucceed(); |
| MakeIssueTokenRequestSucceed(); |
| Reset(); |