| Index: google_apis/gaia/oauth2_token_service_unittest.cc
|
| diff --git a/google_apis/gaia/oauth2_token_service_unittest.cc b/google_apis/gaia/oauth2_token_service_unittest.cc
|
| index 9937268bde2cf433bc1d21a2d6966d31ced9a9f5..979b6166d05e34494cbd75c2add32ac653d9543d 100644
|
| --- a/google_apis/gaia/oauth2_token_service_unittest.cc
|
| +++ b/google_apis/gaia/oauth2_token_service_unittest.cc
|
| @@ -9,6 +9,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 "google_apis/gaia/oauth2_token_service.h"
|
| #include "google_apis/gaia/oauth2_token_service_test_util.h"
|
| #include "net/http/http_status_code.h"
|
| @@ -105,7 +106,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);
|
| @@ -123,7 +124,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);
|
| @@ -152,7 +153,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);
|
| @@ -167,7 +168,6 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
|
| base::RunLoop().RunUntilIdle();
|
|
|
| // No new network fetcher.
|
| - EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
|
| EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| EXPECT_EQ("token", consumer_.last_token_);
|
| @@ -179,7 +179,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessWithCaching) {
|
| EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -198,7 +198,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);
|
| @@ -215,7 +215,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndFailure) {
|
|
|
| // Network failure.
|
| 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);
|
| @@ -233,7 +233,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);
|
| @@ -249,7 +249,7 @@ TEST_F(OAuth2TokenServiceTest, SuccessAndExpirationAndSuccess) {
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
|
|
| fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("another token", 0));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -267,7 +267,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();
|
|
|
| @@ -285,6 +285,7 @@ TEST_F(OAuth2TokenServiceTest, RequestDeletedAfterCompletion) {
|
| std::set<std::string>(), &consumer_));
|
| base::RunLoop().RunUntilIdle();
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -312,6 +313,7 @@ TEST_F(OAuth2TokenServiceTest, MultipleRequestsForTheSameScopesWithOneDeleted) {
|
| request.reset();
|
|
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -326,6 +328,7 @@ TEST_F(OAuth2TokenServiceTest, ClearedRefreshTokenFailsSubsequentRequests) {
|
| std::set<std::string>(), &consumer_));
|
| base::RunLoop().RunUntilIdle();
|
| net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -337,7 +340,6 @@ 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_EQ(1, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(1, consumer_.number_of_errors_);
|
| }
|
| @@ -353,6 +355,7 @@ TEST_F(OAuth2TokenServiceTest,
|
| scopes, &consumer_));
|
| base::RunLoop().RunUntilIdle();
|
| net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0);
|
| + ASSERT_TRUE(fetcher1);
|
|
|
| // Note |request| is still pending when the refresh token changes.
|
| oauth2_service_->set_refresh_token("second refreshToken");
|
| @@ -433,7 +436,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);
|
| @@ -448,7 +451,6 @@ TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
|
| base::RunLoop().RunUntilIdle();
|
|
|
| // No new network fetcher.
|
| - EXPECT_EQ(fetcher, factory_.GetFetcherByID(0));
|
| EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| EXPECT_EQ("token", consumer_.last_token_);
|
| @@ -461,7 +463,7 @@ TEST_F(OAuth2TokenServiceTest, InvalidateToken) {
|
| EXPECT_EQ(2, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(0, consumer_.number_of_errors_);
|
| fetcher = factory_.GetFetcherByID(0);
|
| - EXPECT_TRUE(fetcher);
|
| + ASSERT_TRUE(fetcher);
|
| fetcher->set_response_code(net::HTTP_OK);
|
| fetcher->SetResponseString(GetValidTokenResponse("token2", 3600));
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| @@ -520,3 +522,105 @@ TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) {
|
| EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
|
| EXPECT_EQ(3, consumer_.number_of_errors_);
|
| }
|
| +
|
| +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");
|
| +
|
| + std::string refresh_token("refreshToken");
|
| + oauth2_service_->set_refresh_token(refresh_token);
|
| +
|
| + scoped_ptr<OAuth2TokenService::Request> request1(
|
| + oauth2_service_->StartRequestForClient(client_id_1,
|
| + client_secret_1,
|
| + scope_set,
|
| + &consumer_));
|
| + scoped_ptr<OAuth2TokenService::Request> request2(
|
| + oauth2_service_->StartRequestForClient(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(client_id_1,
|
| + client_secret_1,
|
| + scope_set,
|
| + &consumer_));
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + ASSERT_EQ(2U,
|
| + oauth2_service_->GetNumPendingRequestsForTesting(
|
| + client_id_1,
|
| + refresh_token,
|
| + scope_set));
|
| + ASSERT_EQ(1U,
|
| + oauth2_service_->GetNumPendingRequestsForTesting(
|
| + client_id_2,
|
| + refresh_token,
|
| + scope_set));
|
| +}
|
| +
|
| +TEST_F(OAuth2TokenServiceTest, ClientScopeSetOrderTest) {
|
| + OAuth2TokenService::ScopeSet set_0;
|
| + OAuth2TokenService::ScopeSet set_1;
|
| + set_1.insert("1");
|
| +
|
| + OAuth2TokenService::ClientScopeSet sets[] = {
|
| + OAuth2TokenService::ClientScopeSet("0", set_0),
|
| + OAuth2TokenService::ClientScopeSet("0", set_1),
|
| + OAuth2TokenService::ClientScopeSet("1", set_0),
|
| + OAuth2TokenService::ClientScopeSet("1", set_1),
|
| + };
|
| +
|
| + for (size_t i = 0; i < arraysize(sets); i++) {
|
| + for (size_t j = 0; j < arraysize(sets); j++) {
|
| + if (i == j) {
|
| + EXPECT_FALSE(sets[i] < sets[j]) << " i=" << i << ", j=" << j;
|
| + EXPECT_FALSE(sets[j] < sets[i]) << " i=" << i << ", j=" << j;
|
| + } else if (i < j) {
|
| + EXPECT_TRUE(sets[i] < sets[j]) << " i=" << i << ", j=" << j;
|
| + EXPECT_FALSE(sets[j] < sets[i]) << " i=" << i << ", j=" << j;
|
| + } else {
|
| + EXPECT_TRUE(sets[j] < sets[i]) << " i=" << i << ", j=" << j;
|
| + EXPECT_FALSE(sets[i] < sets[j]) << " i=" << i << ", j=" << j;
|
| + }
|
| + }
|
| + }
|
| +}
|
| +
|
| +TEST_F(OAuth2TokenServiceTest, FetchParametersOrderTest) {
|
| + OAuth2TokenService::ScopeSet set_0;
|
| + OAuth2TokenService::ScopeSet set_1;
|
| + set_1.insert("1");
|
| +
|
| + OAuth2TokenService::FetchParameters params[] = {
|
| + OAuth2TokenService::FetchParameters("0", "0", set_0),
|
| + OAuth2TokenService::FetchParameters("0", "0", set_1),
|
| + OAuth2TokenService::FetchParameters("0", "1", set_0),
|
| + OAuth2TokenService::FetchParameters("0", "1", set_1),
|
| + OAuth2TokenService::FetchParameters("1", "0", set_0),
|
| + OAuth2TokenService::FetchParameters("1", "0", set_1),
|
| + OAuth2TokenService::FetchParameters("1", "1", set_0),
|
| + OAuth2TokenService::FetchParameters("1", "1", set_1),
|
| + };
|
| +
|
| + for (size_t i = 0; i < arraysize(params); i++) {
|
| + for (size_t j = 0; j < arraysize(params); j++) {
|
| + if (i == j) {
|
| + EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j;
|
| + EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j;
|
| + } else if (i < j) {
|
| + EXPECT_TRUE(params[i] < params[j]) << " i=" << i << ", j=" << j;
|
| + EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j;
|
| + } else {
|
| + EXPECT_TRUE(params[j] < params[i]) << " i=" << i << ", j=" << j;
|
| + EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j;
|
| + }
|
| + }
|
| + }
|
| +}
|
|
|