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

Side by Side 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, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/signin/ubertoken_fetcher.h"
6
7 #include "chrome/browser/signin/token_service.h"
8 #include "chrome/browser/signin/token_service_unittest.h"
9 #include "chrome/common/chrome_notification_types.h"
10 #include "chrome/common/net/gaia/gaia_constants.h"
11 #include "content/test/test_url_fetcher_factory.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 class MockUbertokenConsumer : public UbertokenConsumer {
15 public:
16 MockUbertokenConsumer()
17 : nb_correct_token_(0),
18 last_error_(GoogleServiceAuthError::None()),
19 nb_error_(0) {
20 }
21 virtual ~MockUbertokenConsumer() {}
22
23 virtual void OnUbertokenSuccess(const std::string& token) OVERRIDE {
24 last_token_ = token;
25 ++ nb_correct_token_;
26 }
27
28 virtual void OnUbertokenFailure(const GoogleServiceAuthError& error)
29 OVERRIDE {
30 last_error_ = error;
31 ++nb_error_;
32 }
33
34 std::string last_token_;
35 int nb_correct_token_;
36 GoogleServiceAuthError last_error_;
37 int nb_error_;
38 };
39
40 class UbertokenFetcherTest : public TokenServiceTestHarness {
41 public:
42 virtual void SetUp() OVERRIDE {
43 TokenServiceTestHarness::SetUp();
44 service_->UpdateCredentials(credentials_);
45 fetcher_.reset(new UbertokenFetcher(profile_.get(), &consumer_));
46 }
47
48 virtual void TearDown() OVERRIDE {
49 TokenServiceTestHarness::TearDown();
50 }
51
52 protected:
53 TestURLFetcherFactory factory_;
54 MockUbertokenConsumer consumer_;
55 scoped_ptr<UbertokenFetcher> fetcher_;
56 };
57
58 TEST_F(UbertokenFetcherTest, TestSuccessWithoutRefreshToken) {
59 fetcher_->StartFetchingToken();
60 TokenService::TokenAvailableDetails
61 details(GaiaConstants::kGaiaOAuth2LoginRefreshToken, "refreshToken");
62 service_->IssueAuthTokenForTest(GaiaConstants::kGaiaOAuth2LoginRefreshToken,
63 "refreshToken");
64 fetcher_->Observe(chrome::NOTIFICATION_TOKEN_AVAILABLE,
65 content::Source<TokenService>(service_),
66 content::Details<const TokenService::TokenAvailableDetails>(
67 &details));
68 fetcher_->OnRefreshTokenResponse("accessToken", 3600);
69 TestURLFetcher* url_fetcher = factory_.GetFetcherByID(0);
70 url_fetcher->set_status(net::URLRequestStatus());
71 url_fetcher->set_response_code(200);
72 url_fetcher->SetResponseString("uberToken");
73 fetcher_->OnURLFetchComplete(url_fetcher);
74 EXPECT_EQ(0, consumer_.nb_error_);
75 EXPECT_EQ(1, consumer_.nb_correct_token_);
76 EXPECT_EQ("uberToken", consumer_.last_token_);
77 }
78
79 TEST_F(UbertokenFetcherTest, TestSuccessWithRefreshToken) {
80 service_->IssueAuthTokenForTest(GaiaConstants::kGaiaOAuth2LoginRefreshToken,
81 "refreshToken");
82 fetcher_->StartFetchingToken();
83 fetcher_->OnRefreshTokenResponse("accessToken", 3600);
84 TestURLFetcher* url_fetcher = factory_.GetFetcherByID(0);
85 url_fetcher->set_status(net::URLRequestStatus());
86 url_fetcher->set_response_code(200);
87 url_fetcher->SetResponseString("uberToken");
88 fetcher_->OnURLFetchComplete(url_fetcher);
89 EXPECT_EQ(0, consumer_.nb_error_);
90 EXPECT_EQ(1, consumer_.nb_correct_token_);
91 EXPECT_EQ("uberToken", consumer_.last_token_);
92 }
93
94
95 TEST_F(UbertokenFetcherTest, TestFailures) {
96 GoogleServiceAuthError error(GoogleServiceAuthError::USER_NOT_SIGNED_UP);
97 EXPECT_EQ(0, consumer_.nb_error_);
98 TokenService::TokenRequestFailedDetails
99 details(GaiaConstants::kGaiaOAuth2LoginRefreshToken, error);
100 fetcher_->Observe(
101 chrome::NOTIFICATION_TOKEN_REQUEST_FAILED,
102 content::Source<TokenService>(service_),
103 content::Details<const TokenService::TokenRequestFailedDetails>(
104 &details));
105 EXPECT_EQ(1, consumer_.nb_error_);
106 fetcher_->OnOAuthError();
107 EXPECT_EQ(2, consumer_.nb_error_);
108 fetcher_->OnNetworkError(401);
109 EXPECT_EQ(3, consumer_.nb_error_);
110 fetcher_->OnRefreshTokenResponse("accessToken", 3600);
111 TestURLFetcher* url_fetcher = factory_.GetFetcherByID(0);
112 url_fetcher->set_status(net::URLRequestStatus());
113 url_fetcher->set_response_code(401);
114 fetcher_->OnURLFetchComplete(url_fetcher);
115 EXPECT_EQ(4, consumer_.nb_error_);
116 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698