Add a minor text member to ui::MenuModel.
[chromium-blink-merge.git] / chrome / browser / net / gaia / gaia_oauth_fetcher_unittest.cc
blobd8ab2c762f3e80ddd8c62b52b7fd52d333022807
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 // A complete set of unit tests for GaiaOAuthFetcher.
6 // Originally ported from GaiaAuthFetcher tests.
8 #include <string>
10 #include "base/memory/scoped_ptr.h"
11 #include "chrome/browser/net/gaia/gaia_oauth_consumer.h"
12 #include "chrome/browser/net/gaia/gaia_oauth_fetcher.h"
13 #include "chrome/test/base/testing_profile.h"
14 #include "content/public/test/test_browser_thread_bundle.h"
15 #include "google_apis/gaia/gaia_constants.h"
16 #include "google_apis/gaia/gaia_urls.h"
17 #include "google_apis/gaia/google_service_auth_error.h"
18 #include "net/base/net_errors.h"
19 #include "net/http/http_status_code.h"
20 #include "net/url_request/test_url_fetcher_factory.h"
21 #include "net/url_request/url_request_status.h"
22 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h"
24 #include "url/gurl.h"
26 class MockGaiaOAuthConsumer : public GaiaOAuthConsumer {
27 public:
28 MockGaiaOAuthConsumer() {}
29 ~MockGaiaOAuthConsumer() {}
31 MOCK_METHOD1(OnGetOAuthTokenSuccess, void(const std::string& oauth_token));
32 MOCK_METHOD1(OnGetOAuthTokenFailure,
33 void(const GoogleServiceAuthError& error));
35 MOCK_METHOD2(OnOAuthGetAccessTokenSuccess, void(const std::string& token,
36 const std::string& secret));
37 MOCK_METHOD1(OnOAuthGetAccessTokenFailure,
38 void(const GoogleServiceAuthError& error));
40 MOCK_METHOD3(OnOAuthWrapBridgeSuccess,
41 void(const std::string& service_scope,
42 const std::string& token,
43 const std::string& expires_in));
44 MOCK_METHOD2(OnOAuthWrapBridgeFailure,
45 void(const std::string& service_scope,
46 const GoogleServiceAuthError& error));
48 MOCK_METHOD1(OnUserInfoSuccess, void(const std::string& email));
49 MOCK_METHOD1(OnUserInfoFailure, void(const GoogleServiceAuthError& error));
51 MOCK_METHOD0(OnOAuthRevokeTokenSuccess, void());
52 MOCK_METHOD1(OnOAuthRevokeTokenFailure,
53 void(const GoogleServiceAuthError& error));
56 class MockGaiaOAuthFetcher : public GaiaOAuthFetcher {
57 public:
58 MockGaiaOAuthFetcher(GaiaOAuthConsumer* consumer,
59 net::URLRequestContextGetter* getter,
60 const std::string& service_scope)
61 : GaiaOAuthFetcher(
62 consumer, getter, service_scope) {}
64 ~MockGaiaOAuthFetcher() {}
66 void set_request_type(RequestType type) {
67 request_type_ = type;
70 MOCK_METHOD1(StartOAuthGetAccessToken,
71 void(const std::string& oauth1_request_token));
73 MOCK_METHOD4(StartOAuthWrapBridge,
74 void(const std::string& oauth1_access_token,
75 const std::string& oauth1_access_token_secret,
76 const std::string& wrap_token_duration,
77 const std::string& oauth2_scope));
79 MOCK_METHOD1(StartUserInfo, void(const std::string& oauth2_access_token));
82 #if 0 // Suppressing for now
83 TEST(GaiaOAuthFetcherTest, GetOAuthToken) {
84 const std::string oauth_token = "4/OAuth1-Request_Token-1234567";
85 base::Time creation = base::Time::Now();
86 base::Time expiration = base::Time::Time();
88 scoped_ptr<net::CanonicalCookie> canonical_cookie;
89 canonical_cookie.reset(
90 new net::CanonicalCookie(
91 GURL("http://www.google.com/"), // url
92 "oauth_token", // name
93 oauth_token, // value
94 "www.google.com", // domain
95 "/accounts/o8/GetOAuthToken", // path
96 "", // mac_key
97 "", // mac_algorithm
98 creation, // creation
99 expiration, // expiration
100 creation, // last_access
101 true, // secure
102 true, // httponly
103 false)); // has_expires
105 scoped_ptr<ChromeCookieDetails::ChromeCookieDetails> cookie_details;
106 cookie_details.reset(
107 new ChromeCookieDetails::ChromeCookieDetails(
108 canonical_cookie.get(),
109 false,
110 net::CookieMonster::Delegate::CHANGE_COOKIE_EXPLICIT));
112 MockGaiaOAuthConsumer consumer;
113 EXPECT_CALL(consumer, OnGetOAuthTokenSuccess(oauth_token)).Times(1);
115 TestingProfile profile;
117 MockGaiaOAuthFetcher oauth_fetcher(&consumer,
118 profile.GetRequestContext(),
119 std::string());
120 EXPECT_CALL(oauth_fetcher, StartOAuthGetAccessToken(oauth_token)).Times(1);
122 #endif // 0 // Suppressing for now
124 class GaiaOAuthFetcherTest : public testing::Test {
125 private:
126 content::TestBrowserThreadBundle thread_bundle_;
129 TEST_F(GaiaOAuthFetcherTest, OAuthGetAccessToken) {
130 const std::string oauth_token =
131 "1/OAuth1-Access_Token-1234567890abcdefghijklm";
132 const std::string oauth_token_secret = "Dont_tell_the_secret-123";
133 const std::string data("oauth_token="
134 "1%2FOAuth1-Access_Token-1234567890abcdefghijklm"
135 "&oauth_token_secret=Dont_tell_the_secret-123");
137 MockGaiaOAuthConsumer consumer;
138 EXPECT_CALL(consumer,
139 OnOAuthGetAccessTokenSuccess(oauth_token,
140 oauth_token_secret)).Times(1);
142 TestingProfile profile;
143 MockGaiaOAuthFetcher oauth_fetcher(&consumer,
144 profile.GetRequestContext(),
145 "service_scope-JnG18MEE");
146 oauth_fetcher.set_request_type(GaiaOAuthFetcher::OAUTH1_ALL_ACCESS_TOKEN);
147 EXPECT_CALL(oauth_fetcher,
148 StartOAuthWrapBridge(oauth_token,
149 oauth_token_secret,
150 "3600",
151 "service_scope-JnG18MEE")).Times(1);
153 net::ResponseCookies cookies;
154 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
155 GURL url(GaiaUrls::GetInstance()->oauth_get_access_token_url());
157 net::TestURLFetcher test_fetcher(0, GURL(), &oauth_fetcher);
158 test_fetcher.set_url(url);
159 test_fetcher.set_status(status);
160 test_fetcher.set_response_code(net::HTTP_OK);
161 test_fetcher.set_cookies(cookies);
162 test_fetcher.SetResponseString(data);
163 oauth_fetcher.OnURLFetchComplete(&test_fetcher);
166 TEST_F(GaiaOAuthFetcherTest, OAuthWrapBridge) {
167 const std::string wrap_token =
168 "1/OAuth2-Access_Token-nopqrstuvwxyz1234567890";
169 const std::string expires_in = "3600";
171 const std::string data("wrap_access_token="
172 "1%2FOAuth2-Access_Token-nopqrstuvwxyz1234567890"
173 "&wrap_access_token_expires_in=3600");
175 MockGaiaOAuthConsumer consumer;
176 EXPECT_CALL(consumer,
177 OnOAuthWrapBridgeSuccess("service_scope-0fL85iOi",
178 wrap_token,
179 expires_in)).Times(1);
181 TestingProfile profile;
182 MockGaiaOAuthFetcher oauth_fetcher(&consumer,
183 profile.GetRequestContext(),
184 "service_scope-0fL85iOi");
185 oauth_fetcher.set_request_type(GaiaOAuthFetcher::OAUTH2_SERVICE_ACCESS_TOKEN);
186 EXPECT_CALL(oauth_fetcher, StartUserInfo(wrap_token)).Times(1);
188 net::ResponseCookies cookies;
189 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
190 GURL url(GaiaUrls::GetInstance()->oauth_wrap_bridge_url());
192 net::TestURLFetcher test_fetcher(0, GURL(), &oauth_fetcher);
193 test_fetcher.set_url(url);
194 test_fetcher.set_status(status);
195 test_fetcher.set_response_code(net::HTTP_OK);
196 test_fetcher.set_cookies(cookies);
197 test_fetcher.SetResponseString(data);
198 oauth_fetcher.OnURLFetchComplete(&test_fetcher);
201 TEST_F(GaiaOAuthFetcherTest, UserInfo) {
202 const std::string email_address = "someone@somewhere.net";
203 const std::string wrap_token =
204 "1/OAuth2-Access_Token-nopqrstuvwxyz1234567890";
205 const std::string expires_in = "3600";
206 const std::string data("{\n \"email\": \"someone@somewhere.net\",\n"
207 " \"verified_email\": true\n}\n");
208 MockGaiaOAuthConsumer consumer;
209 EXPECT_CALL(consumer,
210 OnUserInfoSuccess(email_address)).Times(1);
212 TestingProfile profile;
213 MockGaiaOAuthFetcher oauth_fetcher(&consumer,
214 profile.GetRequestContext(),
215 "service_scope-Nrj4LmgU");
216 oauth_fetcher.set_request_type(GaiaOAuthFetcher::USER_INFO);
218 net::ResponseCookies cookies;
219 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
220 GURL url(GaiaUrls::GetInstance()->oauth_user_info_url());
222 net::TestURLFetcher test_fetcher(0, GURL(), &oauth_fetcher);
223 test_fetcher.set_url(url);
224 test_fetcher.set_status(status);
225 test_fetcher.set_response_code(net::HTTP_OK);
226 test_fetcher.set_cookies(cookies);
227 test_fetcher.SetResponseString(data);
228 oauth_fetcher.OnURLFetchComplete(&test_fetcher);
231 TEST_F(GaiaOAuthFetcherTest, OAuthRevokeToken) {
232 const std::string token = "1/OAuth2-Access_Token-nopqrstuvwxyz1234567890";
233 MockGaiaOAuthConsumer consumer;
234 EXPECT_CALL(consumer,
235 OnOAuthRevokeTokenSuccess()).Times(1);
237 TestingProfile profile;
238 MockGaiaOAuthFetcher oauth_fetcher(&consumer,
239 profile.GetRequestContext(),
240 "service_scope-Nrj4LmgU");
241 oauth_fetcher.set_request_type(GaiaOAuthFetcher::OAUTH2_REVOKE_TOKEN);
243 net::ResponseCookies cookies;
244 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
245 GURL url(GaiaUrls::GetInstance()->oauth_revoke_token_url());
247 net::TestURLFetcher test_fetcher(0, GURL(), &oauth_fetcher);
248 test_fetcher.set_url(url);
249 test_fetcher.set_status(status);
250 test_fetcher.set_response_code(net::HTTP_OK);
251 test_fetcher.set_cookies(cookies);
252 oauth_fetcher.OnURLFetchComplete(&test_fetcher);