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

Unified Diff: chrome/browser/signin/ubertoken_fetcher_unittest.cc

Issue 9301003: Change X-Auto-Login implementation to use OAuth token. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: With comments. Created 8 years, 11 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: chrome/browser/signin/ubertoken_fetcher_unittest.cc
diff --git a/chrome/browser/signin/ubertoken_fetcher_unittest.cc b/chrome/browser/signin/ubertoken_fetcher_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cd547783e37c26b34927e2a99ca11e7ddbce7759
--- /dev/null
+++ b/chrome/browser/signin/ubertoken_fetcher_unittest.cc
@@ -0,0 +1,116 @@
+// Copyright (c) 2012 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/ubertoken_fetcher.h"
+
+#include "chrome/browser/signin/token_service.h"
+#include "chrome/browser/signin/token_service_unittest.h"
+#include "chrome/common/chrome_notification_types.h"
+#include "chrome/common/net/gaia/gaia_constants.h"
+#include "content/test/test_url_fetcher_factory.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class MockUbertokenConsumer : public UbertokenConsumer {
+ public:
+ MockUbertokenConsumer()
+ : nb_correct_token_(0),
+ last_error_(GoogleServiceAuthError::None()),
+ nb_error_(0) {
+ }
+ virtual ~MockUbertokenConsumer() {}
+
+ virtual void OnUbertokenSuccess(const std::string& token) OVERRIDE {
+ last_token_ = token;
+ ++ nb_correct_token_;
+ }
+
+ virtual void OnUbertokenFailure(const GoogleServiceAuthError& error)
+ OVERRIDE {
+ last_error_ = error;
+ ++nb_error_;
+ }
+
+ std::string last_token_;
+ int nb_correct_token_;
+ GoogleServiceAuthError last_error_;
+ int nb_error_;
+};
+
+class UbertokenFetcherTest : public TokenServiceTestHarness {
+ public:
+ virtual void SetUp() OVERRIDE {
+ TokenServiceTestHarness::SetUp();
+ service_->UpdateCredentials(credentials_);
+ fetcher_.reset(new UbertokenFetcher(profile_.get(), &consumer_));
+ }
+
+ virtual void TearDown() OVERRIDE {
+ TokenServiceTestHarness::TearDown();
+ }
+
+ protected:
+ TestURLFetcherFactory factory_;
+ MockUbertokenConsumer consumer_;
+ scoped_ptr<UbertokenFetcher> fetcher_;
+};
+
+TEST_F(UbertokenFetcherTest, TestSuccessWithoutRefreshToken) {
+ fetcher_->StartFetchingToken();
+ TokenService::TokenAvailableDetails
+ details(GaiaConstants::kGaiaOAuth2LoginRefreshToken, "refreshToken");
+ service_->IssueAuthTokenForTest(GaiaConstants::kGaiaOAuth2LoginRefreshToken,
+ "refreshToken");
+ fetcher_->Observe(chrome::NOTIFICATION_TOKEN_AVAILABLE,
+ content::Source<TokenService>(service_),
+ content::Details<const TokenService::TokenAvailableDetails>(
+ &details));
+ fetcher_->OnRefreshTokenResponse("accessToken", 3600);
+ TestURLFetcher* url_fetcher = factory_.GetFetcherByID(0);
+ url_fetcher->set_status(net::URLRequestStatus());
+ url_fetcher->set_response_code(200);
+ url_fetcher->SetResponseString("uberToken");
+ fetcher_->OnURLFetchComplete(url_fetcher);
+ EXPECT_EQ(0, consumer_.nb_error_);
+ EXPECT_EQ(1, consumer_.nb_correct_token_);
+ EXPECT_EQ("uberToken", consumer_.last_token_);
+}
+
+TEST_F(UbertokenFetcherTest, TestSuccessWithRefreshToken) {
+ service_->IssueAuthTokenForTest(GaiaConstants::kGaiaOAuth2LoginRefreshToken,
+ "refreshToken");
+ fetcher_->StartFetchingToken();
+ fetcher_->OnRefreshTokenResponse("accessToken", 3600);
+ TestURLFetcher* url_fetcher = factory_.GetFetcherByID(0);
+ url_fetcher->set_status(net::URLRequestStatus());
+ url_fetcher->set_response_code(200);
+ url_fetcher->SetResponseString("uberToken");
+ fetcher_->OnURLFetchComplete(url_fetcher);
+ EXPECT_EQ(0, consumer_.nb_error_);
+ EXPECT_EQ(1, consumer_.nb_correct_token_);
+ EXPECT_EQ("uberToken", consumer_.last_token_);
+}
+
+
+TEST_F(UbertokenFetcherTest, TestFailures) {
+ GoogleServiceAuthError error(GoogleServiceAuthError::USER_NOT_SIGNED_UP);
+ EXPECT_EQ(0, consumer_.nb_error_);
+ TokenService::TokenRequestFailedDetails
+ details(GaiaConstants::kGaiaOAuth2LoginRefreshToken, error);
+ fetcher_->Observe(
+ chrome::NOTIFICATION_TOKEN_REQUEST_FAILED,
+ content::Source<TokenService>(service_),
+ content::Details<const TokenService::TokenRequestFailedDetails>(
+ &details));
+ EXPECT_EQ(1, consumer_.nb_error_);
+ fetcher_->OnOAuthError();
+ EXPECT_EQ(2, consumer_.nb_error_);
+ fetcher_->OnNetworkError(401);
+ EXPECT_EQ(3, consumer_.nb_error_);
+ fetcher_->OnRefreshTokenResponse("accessToken", 3600);
+ TestURLFetcher* url_fetcher = factory_.GetFetcherByID(0);
+ url_fetcher->set_status(net::URLRequestStatus());
+ url_fetcher->set_response_code(401);
+ fetcher_->OnURLFetchComplete(url_fetcher);
+ EXPECT_EQ(4, consumer_.nb_error_);
+}

Powered by Google App Engine
This is Rietveld 408576698