Roll src/third_party/WebKit f36d5e0:68b67cd (svn 193299:193303)
[chromium-blink-merge.git] / components / proximity_auth / cryptauth / cryptauth_account_token_fetcher_unittest.cc
blob74fb5a352a66e5dc9dedfd59eb100c901fc71527
1 // Copyright 2014 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.
5 #include "components/proximity_auth/cryptauth/cryptauth_account_token_fetcher.h"
7 #include <string>
9 #include "base/bind.h"
10 #include "google_apis/gaia/fake_oauth2_token_service.h"
11 #include "testing/gtest/include/gtest/gtest.h"
13 namespace proximity_auth {
15 namespace {
17 const char kAccountId[] = "account_id";
18 const char kAccessToken[] = "access_token";
19 const char kInvalidResult[] = "invalid_result";
21 // Callback that saves the fetched access token to the first argument.
22 void SaveAccessToken(std::string* out_token, const std::string& in_token) {
23 *out_token = in_token;
26 } // namespace
28 class ProximityAuthCryptAuthAccountTokenFetcherTest : public testing::Test {
29 protected:
30 ProximityAuthCryptAuthAccountTokenFetcherTest()
31 : fetcher_(&token_service_, kAccountId) {
32 token_service_.AddAccount(kAccountId);
35 FakeOAuth2TokenService token_service_;
36 CryptAuthAccountTokenFetcher fetcher_;
38 DISALLOW_COPY_AND_ASSIGN(ProximityAuthCryptAuthAccountTokenFetcherTest);
41 TEST_F(ProximityAuthCryptAuthAccountTokenFetcherTest, FetchSuccess) {
42 std::string result;
43 fetcher_.FetchAccessToken(base::Bind(SaveAccessToken, &result));
44 token_service_.IssueAllTokensForAccount(kAccountId, kAccessToken,
45 base::Time::Max());
47 EXPECT_EQ(kAccessToken, result);
50 TEST_F(ProximityAuthCryptAuthAccountTokenFetcherTest, FetchFailure) {
51 std::string result(kInvalidResult);
52 fetcher_.FetchAccessToken(base::Bind(SaveAccessToken, &result));
53 token_service_.IssueErrorForAllPendingRequestsForAccount(
54 kAccountId,
55 GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_ERROR));
57 EXPECT_EQ(std::string(), result);
60 TEST_F(ProximityAuthCryptAuthAccountTokenFetcherTest, FetcherReuse) {
61 std::string result1;
62 fetcher_.FetchAccessToken(base::Bind(SaveAccessToken, &result1));
65 std::string result2(kInvalidResult);
66 fetcher_.FetchAccessToken(base::Bind(SaveAccessToken, &result2));
67 EXPECT_EQ(std::string(), result2);
70 token_service_.IssueAllTokensForAccount(kAccountId, kAccessToken,
71 base::Time::Max());
72 EXPECT_EQ(kAccessToken, result1);
75 } // namespace proximity_auth