OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/stringprintf.h" | 7 #include "base/stringprintf.h" |
8 #include "chrome/browser/signin/oauth2_token_service.h" | 8 #include "chrome/browser/signin/oauth2_token_service.h" |
9 #include "chrome/browser/signin/oauth2_token_service_test_util.h" | 9 #include "chrome/browser/signin/oauth2_token_service_test_util.h" |
10 #include "chrome/browser/signin/token_service_factory.h" | 10 #include "chrome/browser/signin/token_service_factory.h" |
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { | 397 TEST_F(OAuth2TokenServiceTest, RetryingConsumer) { |
398 oauth2_service_->set_refresh_token("refreshToken"); | 398 oauth2_service_->set_refresh_token("refreshToken"); |
399 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); | 399 RetryingTestingOAuth2TokenServiceConsumer consumer(oauth2_service_.get()); |
400 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( | 400 scoped_ptr<OAuth2TokenService::Request> request(oauth2_service_->StartRequest( |
401 std::set<std::string>(), &consumer)); | 401 std::set<std::string>(), &consumer)); |
402 message_loop_.RunUntilIdle(); | 402 message_loop_.RunUntilIdle(); |
403 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 403 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
404 EXPECT_EQ(0, consumer.number_of_errors_); | 404 EXPECT_EQ(0, consumer.number_of_errors_); |
405 | 405 |
406 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 406 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
407 EXPECT_TRUE(fetcher); | 407 ASSERT_TRUE(fetcher); |
408 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 408 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
409 fetcher->SetResponseString(std::string()); | 409 fetcher->SetResponseString(std::string()); |
410 fetcher->delegate()->OnURLFetchComplete(fetcher); | 410 fetcher->delegate()->OnURLFetchComplete(fetcher); |
411 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 411 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
412 EXPECT_EQ(1, consumer.number_of_errors_); | 412 EXPECT_EQ(1, consumer.number_of_errors_); |
413 | 413 |
414 fetcher = factory_.GetFetcherByID(0); | 414 fetcher = factory_.GetFetcherByID(0); |
415 EXPECT_TRUE(fetcher); | 415 ASSERT_TRUE(fetcher); |
416 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); | 416 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); |
417 fetcher->SetResponseString(std::string()); | 417 fetcher->SetResponseString(std::string()); |
418 fetcher->delegate()->OnURLFetchComplete(fetcher); | 418 fetcher->delegate()->OnURLFetchComplete(fetcher); |
419 EXPECT_EQ(0, consumer.number_of_successful_tokens_); | 419 EXPECT_EQ(0, consumer.number_of_successful_tokens_); |
420 EXPECT_EQ(2, consumer.number_of_errors_); | 420 EXPECT_EQ(2, consumer.number_of_errors_); |
421 } | 421 } |
| 422 |
| 423 TEST_F(OAuth2TokenServiceTest, InvalidateToken) { |
| 424 std::set<std::string> scopes; |
| 425 oauth2_service_->set_refresh_token("refreshToken"); |
| 426 |
| 427 // First request. |
| 428 scoped_ptr<OAuth2TokenService::Request> request( |
| 429 oauth2_service_->StartRequest(scopes, &consumer_)); |
| 430 message_loop_.RunUntilIdle(); |
| 431 |
| 432 EXPECT_EQ(0, consumer_.number_of_successful_tokens_); |
| 433 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 434 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 435 EXPECT_TRUE(fetcher); |
| 436 fetcher->set_response_code(net::HTTP_OK); |
| 437 fetcher->SetResponseString(GetValidTokenResponse("token", 3600)); |
| 438 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 439 EXPECT_EQ(1, consumer_.number_of_successful_tokens_); |
| 440 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 441 EXPECT_EQ("token", consumer_.last_token_); |
| 442 |
| 443 // Second request, should return the same token without needing a network |
| 444 // request. |
| 445 scoped_ptr<OAuth2TokenService::Request> request2( |
| 446 oauth2_service_->StartRequest(scopes, &consumer_)); |
| 447 message_loop_.RunUntilIdle(); |
| 448 |
| 449 // No new network fetcher. |
| 450 EXPECT_EQ(fetcher, factory_.GetFetcherByID(0)); |
| 451 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 452 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 453 EXPECT_EQ("token", consumer_.last_token_); |
| 454 |
| 455 // Invalidating the token should return a new token on the next request. |
| 456 oauth2_service_->InvalidateToken(scopes, consumer_.last_token_); |
| 457 scoped_ptr<OAuth2TokenService::Request> request3( |
| 458 oauth2_service_->StartRequest(scopes, &consumer_)); |
| 459 message_loop_.RunUntilIdle(); |
| 460 EXPECT_EQ(2, consumer_.number_of_successful_tokens_); |
| 461 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 462 fetcher = factory_.GetFetcherByID(0); |
| 463 EXPECT_TRUE(fetcher); |
| 464 fetcher->set_response_code(net::HTTP_OK); |
| 465 fetcher->SetResponseString(GetValidTokenResponse("token2", 3600)); |
| 466 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 467 EXPECT_EQ(3, consumer_.number_of_successful_tokens_); |
| 468 EXPECT_EQ(0, consumer_.number_of_errors_); |
| 469 EXPECT_EQ("token2", consumer_.last_token_); |
| 470 } |
OLD | NEW |