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

Side by Side Diff: chrome/common/net/gaia/oauth2_access_token_fetcher_unittest.cc

Issue 8728038: Allow passing in a list of scopes to the access token fetcher class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years 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
« no previous file with comments | « chrome/common/net/gaia/oauth2_access_token_fetcher.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // A complete set of unit tests for OAuth2AccessTokenFetcher. 5 // A complete set of unit tests for OAuth2AccessTokenFetcher.
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 17 matching lines...) Expand all
28 using content::BrowserThread; 28 using content::BrowserThread;
29 using content::URLFetcher; 29 using content::URLFetcher;
30 using content::URLFetcherDelegate; 30 using content::URLFetcherDelegate;
31 using content::URLFetcherFactory; 31 using content::URLFetcherFactory;
32 using net::ResponseCookies; 32 using net::ResponseCookies;
33 using net::URLRequestStatus; 33 using net::URLRequestStatus;
34 using testing::_; 34 using testing::_;
35 using testing::Return; 35 using testing::Return;
36 36
37 namespace { 37 namespace {
38 typedef std::vector<std::string> ScopeList;
39
38 static const char kValidTokenResponse[] = 40 static const char kValidTokenResponse[] =
39 "{" 41 "{"
40 " \"access_token\": \"at1\"," 42 " \"access_token\": \"at1\","
41 " \"expires_in\": 3600," 43 " \"expires_in\": 3600,"
42 " \"token_type\": \"Bearer\"" 44 " \"token_type\": \"Bearer\""
43 "}"; 45 "}";
44 static const char kTokenResponseNoAccessToken[] = 46 static const char kTokenResponseNoAccessToken[] =
45 "{" 47 "{"
46 " \"expires_in\": 3600," 48 " \"expires_in\": 3600,"
47 " \"token_type\": \"Bearer\"" 49 " \"token_type\": \"Bearer\""
(...skipping 23 matching lines...) Expand all
71 73
72 MOCK_METHOD1(OnGetTokenSuccess, void(const std::string& access_token)); 74 MOCK_METHOD1(OnGetTokenSuccess, void(const std::string& access_token));
73 MOCK_METHOD1(OnGetTokenFailure, 75 MOCK_METHOD1(OnGetTokenFailure,
74 void(const GoogleServiceAuthError& error)); 76 void(const GoogleServiceAuthError& error));
75 }; 77 };
76 78
77 class OAuth2AccessTokenFetcherTest : public testing::Test { 79 class OAuth2AccessTokenFetcherTest : public testing::Test {
78 public: 80 public:
79 OAuth2AccessTokenFetcherTest() 81 OAuth2AccessTokenFetcherTest()
80 : ui_thread_(BrowserThread::UI, &message_loop_), 82 : ui_thread_(BrowserThread::UI, &message_loop_),
81 fetcher_(&consumer_, profile_.GetRequestContext(), "test") { 83 fetcher_(&consumer_, profile_.GetRequestContext()) {
82 } 84 }
83 85
84 virtual ~OAuth2AccessTokenFetcherTest() { } 86 virtual ~OAuth2AccessTokenFetcherTest() { }
85 87
86 virtual TestURLFetcher* SetupGetAccessToken( 88 virtual TestURLFetcher* SetupGetAccessToken(
87 bool fetch_succeeds, int response_code, const std::string& body) { 89 bool fetch_succeeds, int response_code, const std::string& body) {
88 GURL url(GaiaUrls::GetInstance()->oauth2_token_url()); 90 GURL url(GaiaUrls::GetInstance()->oauth2_token_url());
89 TestURLFetcher* url_fetcher = new TestURLFetcher(0, url, &fetcher_); 91 TestURLFetcher* url_fetcher = new TestURLFetcher(0, url, &fetcher_);
90 URLRequestStatus::Status status = 92 URLRequestStatus::Status status =
91 fetch_succeeds ? URLRequestStatus::SUCCESS : URLRequestStatus::FAILED; 93 fetch_succeeds ? URLRequestStatus::SUCCESS : URLRequestStatus::FAILED;
(...skipping 15 matching lines...) Expand all
107 content::TestBrowserThread ui_thread_; 109 content::TestBrowserThread ui_thread_;
108 MockUrlFetcherFactory factory_; 110 MockUrlFetcherFactory factory_;
109 MockOAuth2AccessTokenConsumer consumer_; 111 MockOAuth2AccessTokenConsumer consumer_;
110 TestingProfile profile_; 112 TestingProfile profile_;
111 OAuth2AccessTokenFetcher fetcher_; 113 OAuth2AccessTokenFetcher fetcher_;
112 }; 114 };
113 115
114 TEST_F(OAuth2AccessTokenFetcherTest, GetAccessTokenRequestFailure) { 116 TEST_F(OAuth2AccessTokenFetcherTest, GetAccessTokenRequestFailure) {
115 TestURLFetcher* url_fetcher = SetupGetAccessToken(false, 0, ""); 117 TestURLFetcher* url_fetcher = SetupGetAccessToken(false, 0, "");
116 EXPECT_CALL(consumer_, OnGetTokenFailure(_)).Times(1); 118 EXPECT_CALL(consumer_, OnGetTokenFailure(_)).Times(1);
117 fetcher_.Start("client_id", "client_secret", "refresh_token"); 119 fetcher_.Start("client_id", "client_secret", "refresh_token", ScopeList());
118 fetcher_.OnURLFetchComplete(url_fetcher); 120 fetcher_.OnURLFetchComplete(url_fetcher);
119 } 121 }
120 122
121 TEST_F(OAuth2AccessTokenFetcherTest, GetAccessTokenResponseCodeFailure) { 123 TEST_F(OAuth2AccessTokenFetcherTest, GetAccessTokenResponseCodeFailure) {
122 TestURLFetcher* url_fetcher = SetupGetAccessToken(true, RC_FORBIDDEN, ""); 124 TestURLFetcher* url_fetcher = SetupGetAccessToken(true, RC_FORBIDDEN, "");
123 EXPECT_CALL(consumer_, OnGetTokenFailure(_)).Times(1); 125 EXPECT_CALL(consumer_, OnGetTokenFailure(_)).Times(1);
124 fetcher_.Start("client_id", "client_secret", "refresh_token"); 126 fetcher_.Start("client_id", "client_secret", "refresh_token", ScopeList());
125 fetcher_.OnURLFetchComplete(url_fetcher); 127 fetcher_.OnURLFetchComplete(url_fetcher);
126 } 128 }
127 129
128 TEST_F(OAuth2AccessTokenFetcherTest, Success) { 130 TEST_F(OAuth2AccessTokenFetcherTest, Success) {
129 TestURLFetcher* url_fetcher = SetupGetAccessToken( 131 TestURLFetcher* url_fetcher = SetupGetAccessToken(
130 true, RC_REQUEST_OK, kValidTokenResponse); 132 true, RC_REQUEST_OK, kValidTokenResponse);
131 EXPECT_CALL(consumer_, OnGetTokenSuccess("at1")).Times(1); 133 EXPECT_CALL(consumer_, OnGetTokenSuccess("at1")).Times(1);
132 fetcher_.Start("client_id", "client_secret", "refresh_token"); 134 fetcher_.Start("client_id", "client_secret", "refresh_token", ScopeList());
133 fetcher_.OnURLFetchComplete(url_fetcher); 135 fetcher_.OnURLFetchComplete(url_fetcher);
134 } 136 }
135 137
138 TEST_F(OAuth2AccessTokenFetcherTest, MakeGetAccessTokenBody) {
139 { // No scope.
140 std::string body =
141 "client_id=cid1&"
142 "client_secret=cs1&"
143 "grant_type=refresh_token&"
144 "refresh_token=rt1";
145 EXPECT_EQ(body, OAuth2AccessTokenFetcher::MakeGetAccessTokenBody(
146 "cid1", "cs1", "rt1", ScopeList()));
147 }
148
149 { // One scope.
150 std::string body =
151 "client_id=cid1&"
152 "client_secret=cs1&"
153 "grant_type=refresh_token&"
154 "refresh_token=rt1&"
155 "scope=https://www.googleapis.com/foo";
156 ScopeList scopes;
157 scopes.push_back("https://www.googleapis.com/foo");
158 EXPECT_EQ(body, OAuth2AccessTokenFetcher::MakeGetAccessTokenBody(
159 "cid1", "cs1", "rt1", scopes));
160 }
161
162 { // Multiple scopes.
163 std::string body =
164 "client_id=cid1&"
165 "client_secret=cs1&"
166 "grant_type=refresh_token&"
167 "refresh_token=rt1&"
168 "scope=https://www.googleapis.com/foo,"
169 "https://www.googleapis.com/bar,"
170 "https://www.googleapis.com/baz";
171 ScopeList scopes;
172 scopes.push_back("https://www.googleapis.com/foo");
173 scopes.push_back("https://www.googleapis.com/bar");
174 scopes.push_back("https://www.googleapis.com/baz");
175 EXPECT_EQ(body, OAuth2AccessTokenFetcher::MakeGetAccessTokenBody(
176 "cid1", "cs1", "rt1", scopes));
177 }
178 }
179
136 TEST_F(OAuth2AccessTokenFetcherTest, ParseGetAccessTokenResponse) { 180 TEST_F(OAuth2AccessTokenFetcherTest, ParseGetAccessTokenResponse) {
137 { // No body. 181 { // No body.
138 TestURLFetcher url_fetcher(0, GURL("www.google.com"), NULL); 182 TestURLFetcher url_fetcher(0, GURL("www.google.com"), NULL);
139 183
140 std::string at; 184 std::string at;
141 EXPECT_FALSE(OAuth2AccessTokenFetcher::ParseGetAccessTokenResponse( 185 EXPECT_FALSE(OAuth2AccessTokenFetcher::ParseGetAccessTokenResponse(
142 &url_fetcher, &at)); 186 &url_fetcher, &at));
143 EXPECT_TRUE(at.empty()); 187 EXPECT_TRUE(at.empty());
144 } 188 }
145 { // Bad json. 189 { // Bad json.
(...skipping 17 matching lines...) Expand all
163 { // Valid json: all good. 207 { // Valid json: all good.
164 TestURLFetcher url_fetcher(0, GURL("www.google.com"), NULL); 208 TestURLFetcher url_fetcher(0, GURL("www.google.com"), NULL);
165 url_fetcher.SetResponseString(kValidTokenResponse); 209 url_fetcher.SetResponseString(kValidTokenResponse);
166 210
167 std::string at; 211 std::string at;
168 EXPECT_TRUE(OAuth2AccessTokenFetcher::ParseGetAccessTokenResponse( 212 EXPECT_TRUE(OAuth2AccessTokenFetcher::ParseGetAccessTokenResponse(
169 &url_fetcher, &at)); 213 &url_fetcher, &at));
170 EXPECT_EQ("at1", at); 214 EXPECT_EQ("at1", at);
171 } 215 }
172 } 216 }
OLDNEW
« no previous file with comments | « chrome/common/net/gaia/oauth2_access_token_fetcher.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698