| Index: chrome/browser/signin/oauth2_token_service_unittest.cc
|
| diff --git a/chrome/browser/signin/oauth2_token_service_unittest.cc b/chrome/browser/signin/oauth2_token_service_unittest.cc
|
| index 730c30365c6d8d4a32e7501e22b1c7e89ad6e326..39a807e636f2b9ae3e4dc6bacc69b024c49c6020 100644
|
| --- a/chrome/browser/signin/oauth2_token_service_unittest.cc
|
| +++ b/chrome/browser/signin/oauth2_token_service_unittest.cc
|
| @@ -16,6 +16,7 @@
|
| #include "google_apis/gaia/gaia_constants.h"
|
| #include "google_apis/gaia/google_service_auth_error.h"
|
| #include "google_apis/gaia/oauth2_access_token_consumer.h"
|
| +#include "google_apis/gaia/oauth2_access_token_fetcher.h"
|
| #include "net/http/http_status_code.h"
|
| #include "net/url_request/test_url_fetcher_factory.h"
|
| #include "net/url_request/url_request_status.h"
|
| @@ -84,6 +85,10 @@ class OAuth2TokenServiceTest : public TokenServiceTestHarness {
|
| BrowserThread::IO))));
|
| }
|
|
|
| + virtual void TearDown() OVERRIDE {
|
| + OAuth2AccessTokenFetcher::ResetLastFetcherIdForTest();
|
| + }
|
| +
|
| protected:
|
| net::TestURLFetcherFactory factory_;
|
| scoped_ptr<TestOAuth2TokenService> oauth2_service_;
|
| @@ -108,7 +113,7 @@ TEST_F(OAuth2TokenServiceTest, FailureShouldNotRetry) {
|
| EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
|
| fetcher->SetResponseString(std::string());
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -126,7 +131,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithoutCaching) {
|
| EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -155,7 +160,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
|
| EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -170,7 +175,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
|
| base::RunLoop().RunUntilIdle();
|
|
|
| // No new network fetcher.
|
| - EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
|
| + EXPECT_FALSE(factory_.GetFetcherByID(1));
|
| EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| EXPECT_EQ("token", consumer_.last_token_);
|
| @@ -181,8 +186,8 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| - fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + fetcher = factory_.GetFetcherByID(1);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -201,7 +206,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) {
|
| EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token", 0));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -217,8 +222,8 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) {
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
|
|
| // Network failure.
|
| - fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + fetcher = factory_.GetFetcherByID(1);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
|
| fetcher->SetResponseString(std::string());
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -236,7 +241,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) {
|
| EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token", 0));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -251,8 +256,8 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) {
|
| EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
|
|
| - fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + fetcher = factory_.GetFetcherByID(1);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("another token", 0));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -270,7 +275,7 @@ TEST_F(OAuth2TokenServiceTest, RequestDeletedBeforeCompletion) {
|
| EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
|
|
| request.reset();
|
|
|
| @@ -340,7 +345,7 @@ TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
|
| oauth2_service_->set_refresh_token("");
|
| request = oauth2_service_->StartRequest(std::set<std::string>(), &consumer_);
|
| base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
|
| + EXPECT_FALSE(factory_.GetFetcherByID(1));
|
| EXPECT_EQ(1, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(1, consumer_.number_of_errors_);
|
| }
|
| @@ -367,7 +372,7 @@ TEST_F(OAuth2TokenServiceTest,
|
| oauth2_service_->StartRequest(scopes, &consumer2));
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(0);
|
| + net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(1);
|
| fetcher2->set_response_code(net::HTTP_OK);
|
| fetcher2->SetResponseString(GetValidTokenResponse("second token", 3600));
|
| fetcher2->delegate()->OnURLFetchComplete(fetcher2);
|
| @@ -415,7 +420,7 @@ TEST_F(OAuth2TokenServiceTest, RetryingConsumer) {
|
| EXPECT_EQ(0, consumer.number_of_successful_tokens_);
|
| EXPECT_EQ(1, consumer.number_of_errors_);
|
|
|
| - fetcher = factory_.GetFetcherByID(0);
|
| + fetcher = factory_.GetFetcherByID(1);
|
| ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
|
| fetcher->SetResponseString(std::string());
|
| @@ -436,7 +441,7 @@ TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
|
| EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -451,7 +456,7 @@ TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
|
| base::RunLoop().RunUntilIdle();
|
|
|
| // No new network fetcher.
|
| - EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
|
| + EXPECT_FALSE(factory_.GetFetcherByID(1));
|
| EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| EXPECT_EQ("token", consumer_.last_token_);
|
| @@ -463,8 +468,8 @@ TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| - fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + fetcher = factory_.GetFetcherByID(1);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -523,3 +528,56 @@ TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) {
|
| EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(3, consumer_.number_of_errors_);
|
| }
|
| +
|
| +#if defined(OS_CHROMEOS)
|
| +TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) {
|
| + std::string client_id_1("client1");
|
| + std::string client_secret_1("secret1");
|
| + std::string client_id_2("client2");
|
| + std::string client_secret_2("secret2");
|
| + std::set<std::string> scope_set;
|
| + scope_set.insert("scope1");
|
| + scope_set.insert("scope2");
|
| +
|
| + oauth2_service_->set_refresh_token("refreshToken");
|
| +
|
| + scoped_ptr<OAuth2TokenService::Request> request1(
|
| + oauth2_service_->StartRequestForClient(std::string(),
|
| + client_id_1,
|
| + client_secret_1,
|
| + scope_set,
|
| + &consumer_));
|
| + scoped_ptr<OAuth2TokenService::Request> request2(
|
| + oauth2_service_->StartRequestForClient(std::string(),
|
| + client_id_2,
|
| + client_secret_2,
|
| + scope_set,
|
| + &consumer_));
|
| + // Start a request that should be duplicate of |request1|.
|
| + scoped_ptr<OAuth2TokenService::Request> request3(
|
| + oauth2_service_->StartRequestForClient(std::string(),
|
| + client_id_1,
|
| + client_secret_1,
|
| + scope_set,
|
| + &consumer_));
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // Check to make sure we have started exactly two fetchers.
|
| + net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0);
|
| + ASSERT_TRUE(fetcher1);
|
| + net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(1);
|
| + ASSERT_TRUE(fetcher2);
|
| + EXPECT_FALSE(factory_.GetFetcherByID(2));
|
| +
|
| + fetcher1->set_response_code(net::HTTP_OK);
|
| + fetcher1->SetResponseString(GetValidTokenResponse("token1", 3600));
|
| + fetcher1->delegate()->OnURLFetchComplete(fetcher1);
|
| +
|
| + fetcher2->set_response_code(net::HTTP_OK);
|
| + fetcher2->SetResponseString(GetValidTokenResponse("token2", 3600));
|
| + fetcher2->delegate()->OnURLFetchComplete(fetcher2);
|
| +
|
| + EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
|
| + EXPECT_EQ(0, consumer_.number_of_errors_);
|
| +}
|
| +#endif
|
|
|