- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / signin / ubertoken_fetcher_unittest.cc
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 "base/memory/scoped_ptr.h"
8 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h"
9 #include "chrome/browser/signin/fake_signin_manager.h"
10 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
11 #include "chrome/browser/signin/signin_manager_factory.h"
12 #include "chrome/browser/signin/token_service_unittest.h"
13 #include "google_apis/gaia/gaia_constants.h"
14 #include "net/url_request/test_url_fetcher_factory.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16
17 namespace {
18
19 class MockUbertokenConsumer : public UbertokenConsumer {
20  public:
21   MockUbertokenConsumer()
22       : nb_correct_token_(0),
23         last_error_(GoogleServiceAuthError::AuthErrorNone()),
24         nb_error_(0) {
25   }
26   virtual ~MockUbertokenConsumer() {}
27
28   virtual void OnUbertokenSuccess(const std::string& token) OVERRIDE {
29     last_token_ = token;
30     ++ nb_correct_token_;
31   }
32
33   virtual void OnUbertokenFailure(const GoogleServiceAuthError& error)
34       OVERRIDE {
35     last_error_ = error;
36     ++nb_error_;
37   }
38
39   std::string last_token_;
40   int nb_correct_token_;
41   GoogleServiceAuthError last_error_;
42   int nb_error_;
43 };
44
45 }  // namespace
46
47 class UbertokenFetcherTest : public TokenServiceTestHarness {
48  public:
49   virtual void SetUp() OVERRIDE {
50     TokenServiceTestHarness::SetUp();
51     UpdateCredentialsOnService();
52     fetcher_.reset(new UbertokenFetcher(profile(), &consumer_));
53     CreateSigninManager("test@gmail.com");
54   }
55
56   virtual scoped_ptr<TestingProfile> CreateProfile() OVERRIDE {
57     TestingProfile::Builder builder;
58     builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(),
59                               &FakeProfileOAuth2TokenService::Build);
60     return builder.Build().Pass();
61   }
62
63   virtual void TearDown() OVERRIDE {
64     fetcher_.reset();
65     TokenServiceTestHarness::TearDown();
66   }
67
68  protected:
69   net::TestURLFetcherFactory factory_;
70   MockUbertokenConsumer consumer_;
71   scoped_ptr<UbertokenFetcher> fetcher_;
72 };
73
74 TEST_F(UbertokenFetcherTest, Basic) {
75 }
76
77 TEST_F(UbertokenFetcherTest, Success) {
78   service()->IssueAuthTokenForTest(GaiaConstants::kGaiaOAuth2LoginRefreshToken,
79                                    "refreshToken");
80   fetcher_->StartFetchingToken();
81   fetcher_->OnGetTokenSuccess(NULL, "accessToken", base::Time());
82   fetcher_->OnUberAuthTokenSuccess("uberToken");
83   EXPECT_EQ(0, consumer_.nb_error_);
84   EXPECT_EQ(1, consumer_.nb_correct_token_);
85   EXPECT_EQ("uberToken", consumer_.last_token_);
86 }
87
88 TEST_F(UbertokenFetcherTest, NoRefreshToken) {
89   fetcher_->StartFetchingToken();
90   GoogleServiceAuthError error(GoogleServiceAuthError::USER_NOT_SIGNED_UP);
91   fetcher_->OnGetTokenFailure(NULL, error);
92   EXPECT_EQ(1, consumer_.nb_error_);
93   EXPECT_EQ(0, consumer_.nb_correct_token_);
94 }
95
96 TEST_F(UbertokenFetcherTest, FailureToGetAccessToken) {
97   GoogleServiceAuthError error(GoogleServiceAuthError::USER_NOT_SIGNED_UP);
98
99   service()->IssueAuthTokenForTest(GaiaConstants::kGaiaOAuth2LoginRefreshToken,
100                                    "refreshToken");
101   fetcher_->StartFetchingToken();
102   fetcher_->OnGetTokenFailure(NULL, error);
103
104   EXPECT_EQ(1, consumer_.nb_error_);
105   EXPECT_EQ(0, consumer_.nb_correct_token_);
106   EXPECT_EQ("", consumer_.last_token_);
107 }
108
109 TEST_F(UbertokenFetcherTest, FailureToGetUberToken) {
110   GoogleServiceAuthError error(GoogleServiceAuthError::USER_NOT_SIGNED_UP);
111
112   service()->IssueAuthTokenForTest(GaiaConstants::kGaiaOAuth2LoginRefreshToken,
113                                    "refreshToken");
114   fetcher_->StartFetchingToken();
115   fetcher_->OnGetTokenSuccess(NULL, "accessToken", base::Time());
116   fetcher_->OnUberAuthTokenFailure(error);
117
118   EXPECT_EQ(1, consumer_.nb_error_);
119   EXPECT_EQ(0, consumer_.nb_correct_token_);
120   EXPECT_EQ("", consumer_.last_token_);
121 }