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

Side by Side Diff: google_apis/gaia/fake_gaia.cc

Issue 1054403002: Basic tests for new webview based signin flow (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove flaky back-button check Created 5 years, 8 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
« no previous file with comments | « google_apis/gaia/fake_gaia.h ('k') | google_apis/test/embedded_setup_chromeos.html » ('j') | 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 #include "google_apis/gaia/fake_gaia.h" 5 #include "google_apis/gaia/fake_gaia.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/base_paths.h" 9 #include "base/base_paths.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 const char kTestSessionLSIDCookie[] = "fake-session-LSID-cookie"; 49 const char kTestSessionLSIDCookie[] = "fake-session-LSID-cookie";
50 const char kTestOAuthLoginSID[] = "fake-oauth-SID-cookie"; 50 const char kTestOAuthLoginSID[] = "fake-oauth-SID-cookie";
51 const char kTestOAuthLoginLSID[] = "fake-oauth-LSID-cookie"; 51 const char kTestOAuthLoginLSID[] = "fake-oauth-LSID-cookie";
52 const char kTestOAuthLoginAuthCode[] = "fake-oauth-auth-code"; 52 const char kTestOAuthLoginAuthCode[] = "fake-oauth-auth-code";
53 53
54 const char kDefaultGaiaId[] ="12345"; 54 const char kDefaultGaiaId[] ="12345";
55 55
56 const base::FilePath::CharType kServiceLogin[] = 56 const base::FilePath::CharType kServiceLogin[] =
57 FILE_PATH_LITERAL("google_apis/test/service_login.html"); 57 FILE_PATH_LITERAL("google_apis/test/service_login.html");
58 58
59 const base::FilePath::CharType kEmbeddedSetupChromeos[] =
60 FILE_PATH_LITERAL("google_apis/test/embedded_setup_chromeos.html");
61
59 // OAuth2 Authentication header value prefix. 62 // OAuth2 Authentication header value prefix.
60 const char kAuthHeaderBearer[] = "Bearer "; 63 const char kAuthHeaderBearer[] = "Bearer ";
61 const char kAuthHeaderOAuth[] = "OAuth "; 64 const char kAuthHeaderOAuth[] = "OAuth ";
62 65
63 const char kListAccountsResponseFormat[] = 66 const char kListAccountsResponseFormat[] =
64 "[\"gaia.l.a.r\",[[\"gaia.l.a\",1,\"\",\"%s\",\"\",1,1,0]]]"; 67 "[\"gaia.l.a.r\",[[\"gaia.l.a\",1,\"\",\"%s\",\"\",1,1,0]]]";
65 68
66 typedef std::map<std::string, std::string> CookieMap; 69 typedef std::map<std::string, std::string> CookieMap;
67 70
68 // Parses cookie name-value map our of |request|. 71 // Parses cookie name-value map our of |request|.
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 135
133 FakeGaia::MergeSessionParams::~MergeSessionParams() { 136 FakeGaia::MergeSessionParams::~MergeSessionParams() {
134 } 137 }
135 138
136 FakeGaia::FakeGaia() : issue_oauth_code_cookie_(false) { 139 FakeGaia::FakeGaia() : issue_oauth_code_cookie_(false) {
137 base::FilePath source_root_dir; 140 base::FilePath source_root_dir;
138 PathService::Get(base::DIR_SOURCE_ROOT, &source_root_dir); 141 PathService::Get(base::DIR_SOURCE_ROOT, &source_root_dir);
139 CHECK(base::ReadFileToString( 142 CHECK(base::ReadFileToString(
140 source_root_dir.Append(base::FilePath(kServiceLogin)), 143 source_root_dir.Append(base::FilePath(kServiceLogin)),
141 &service_login_response_)); 144 &service_login_response_));
145 CHECK(base::ReadFileToString(
146 source_root_dir.Append(base::FilePath(kEmbeddedSetupChromeos)),
147 &embedded_setup_chromeos_response_));
142 } 148 }
143 149
144 FakeGaia::~FakeGaia() {} 150 FakeGaia::~FakeGaia() {}
145 151
146 void FakeGaia::SetFakeMergeSessionParams( 152 void FakeGaia::SetFakeMergeSessionParams(
147 const std::string& email, 153 const std::string& email,
148 const std::string& auth_sid_cookie, 154 const std::string& auth_sid_cookie,
149 const std::string& auth_lsid_cookie) { 155 const std::string& auth_lsid_cookie) {
150 FakeGaia::MergeSessionParams params; 156 FakeGaia::MergeSessionParams params;
151 params.auth_sid_cookie = auth_sid_cookie; 157 params.auth_sid_cookie = auth_sid_cookie;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 212
207 // Handles /o/oauth2/programmatic_auth GAIA call. 213 // Handles /o/oauth2/programmatic_auth GAIA call.
208 REGISTER_RESPONSE_HANDLER( 214 REGISTER_RESPONSE_HANDLER(
209 gaia_urls->client_login_to_oauth2_url(), HandleProgramaticAuth); 215 gaia_urls->client_login_to_oauth2_url(), HandleProgramaticAuth);
210 216
211 // Handles /ServiceLogin GAIA call. 217 // Handles /ServiceLogin GAIA call.
212 REGISTER_RESPONSE_HANDLER( 218 REGISTER_RESPONSE_HANDLER(
213 gaia_urls->service_login_url(), HandleServiceLogin); 219 gaia_urls->service_login_url(), HandleServiceLogin);
214 220
215 // Handles /embedded/setup/chromeos GAIA call. 221 // Handles /embedded/setup/chromeos GAIA call.
216 // Same handler as for /ServiceLogin is used for now. 222 REGISTER_RESPONSE_HANDLER(gaia_urls->embedded_setup_chromeos_url(),
217 REGISTER_RESPONSE_HANDLER( 223 HandleEmbeddedSetupChromeos);
218 gaia_urls->embedded_setup_chromeos_url(), HandleServiceLogin);
219 224
220 // Handles /OAuthLogin GAIA call. 225 // Handles /OAuthLogin GAIA call.
221 REGISTER_RESPONSE_HANDLER( 226 REGISTER_RESPONSE_HANDLER(
222 gaia_urls->oauth1_login_url(), HandleOAuthLogin); 227 gaia_urls->oauth1_login_url(), HandleOAuthLogin);
223 228
224 // Handles /ServiceLoginAuth GAIA call. 229 // Handles /ServiceLoginAuth GAIA call.
225 REGISTER_RESPONSE_HANDLER( 230 REGISTER_RESPONSE_HANDLER(
226 gaia_urls->service_login_auth_url(), HandleServiceLoginAuth); 231 gaia_urls->service_login_auth_url(), HandleServiceLoginAuth);
227 232
233 // Handles /_/embedded/lookup/accountlookup for /embedded/setup/chromeos
234 // authentication request.
235 REGISTER_PATH_RESPONSE_HANDLER("/_/embedded/lookup/accountlookup",
236 HandleEmbeddedLookupAccountLookup);
237
238 // Handles /_/embedded/signin/challenge for /embedded/setup/chromeos
239 // authentication request.
240 REGISTER_PATH_RESPONSE_HANDLER("/_/embedded/signin/challenge",
241 HandleEmbeddedSigninChallenge);
242
228 // Handles /SSO GAIA call (not GAIA, made up for SAML tests). 243 // Handles /SSO GAIA call (not GAIA, made up for SAML tests).
229 REGISTER_PATH_RESPONSE_HANDLER("/SSO", HandleSSO); 244 REGISTER_PATH_RESPONSE_HANDLER("/SSO", HandleSSO);
230 245
231 // Handles /o/oauth2/token GAIA call. 246 // Handles /o/oauth2/token GAIA call.
232 REGISTER_RESPONSE_HANDLER( 247 REGISTER_RESPONSE_HANDLER(
233 gaia_urls->oauth2_token_url(), HandleAuthToken); 248 gaia_urls->oauth2_token_url(), HandleAuthToken);
234 249
235 // Handles /oauth2/v2/tokeninfo GAIA call. 250 // Handles /oauth2/v2/tokeninfo GAIA call.
236 REGISTER_RESPONSE_HANDLER( 251 REGISTER_RESPONSE_HANDLER(
237 gaia_urls->oauth2_token_info_url(), HandleTokenInfo); 252 gaia_urls->oauth2_token_info_url(), HandleTokenInfo);
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 return NULL; 432 return NULL;
418 } 433 }
419 434
420 void FakeGaia::HandleServiceLogin(const HttpRequest& request, 435 void FakeGaia::HandleServiceLogin(const HttpRequest& request,
421 BasicHttpResponse* http_response) { 436 BasicHttpResponse* http_response) {
422 http_response->set_code(net::HTTP_OK); 437 http_response->set_code(net::HTTP_OK);
423 http_response->set_content(service_login_response_); 438 http_response->set_content(service_login_response_);
424 http_response->set_content_type("text/html"); 439 http_response->set_content_type("text/html");
425 } 440 }
426 441
442 void FakeGaia::HandleEmbeddedSetupChromeos(const HttpRequest& request,
443 BasicHttpResponse* http_response) {
444 http_response->set_code(net::HTTP_OK);
445 http_response->set_content(embedded_setup_chromeos_response_);
446 http_response->set_content_type("text/html");
447 }
448
427 void FakeGaia::HandleOAuthLogin(const HttpRequest& request, 449 void FakeGaia::HandleOAuthLogin(const HttpRequest& request,
428 BasicHttpResponse* http_response) { 450 BasicHttpResponse* http_response) {
429 http_response->set_code(net::HTTP_UNAUTHORIZED); 451 http_response->set_code(net::HTTP_UNAUTHORIZED);
430 if (merge_session_params_.gaia_uber_token.empty()) { 452 if (merge_session_params_.gaia_uber_token.empty()) {
431 http_response->set_code(net::HTTP_FORBIDDEN); 453 http_response->set_code(net::HTTP_FORBIDDEN);
432 return; 454 return;
433 } 455 }
434 456
435 std::string access_token; 457 std::string access_token;
436 if (!GetAccessToken(request, kAuthHeaderBearer, &access_token) && 458 if (!GetAccessToken(request, kAuthHeaderBearer, &access_token) &&
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 516
495 // SAML sign-ins complete in HandleSSO(). 517 // SAML sign-ins complete in HandleSSO().
496 if (is_saml) 518 if (is_saml)
497 return; 519 return;
498 520
499 AddGoogleAccountsSigninHeader(http_response, email); 521 AddGoogleAccountsSigninHeader(http_response, email);
500 if (issue_oauth_code_cookie_) 522 if (issue_oauth_code_cookie_)
501 SetOAuthCodeCookie(http_response); 523 SetOAuthCodeCookie(http_response);
502 } 524 }
503 525
526 void FakeGaia::HandleEmbeddedLookupAccountLookup(
527 const net::test_server::HttpRequest& request,
528 net::test_server::BasicHttpResponse* http_response) {
529 std::string email;
530 const bool is_saml =
531 GetQueryParameter(request.content, "identifier", &email) &&
532 saml_account_idp_map_.find(email) != saml_account_idp_map_.end();
533
534 if (!is_saml)
535 return;
536
537 GURL url(saml_account_idp_map_[email]);
538 url = net::AppendQueryParameter(url, "SAMLRequest", "fake_request");
539 url = net::AppendQueryParameter(
540 url, "RelayState",
541 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/success.html");
542 std::string redirect_url = url.spec();
543 http_response->AddCustomHeader("Google-Accounts-SAML", "Start");
544
545 http_response->AddCustomHeader("continue", redirect_url);
546 }
547
548 void FakeGaia::HandleEmbeddedSigninChallenge(const HttpRequest& request,
549 BasicHttpResponse* http_response) {
550 std::string email;
551 GetQueryParameter(request.content, "identifier", &email);
552
553 if (!merge_session_params_.auth_sid_cookie.empty() &&
554 !merge_session_params_.auth_lsid_cookie.empty()) {
555 SetCookies(http_response, merge_session_params_.auth_sid_cookie,
556 merge_session_params_.auth_lsid_cookie);
557 }
558
559 AddGoogleAccountsSigninHeader(http_response, email);
560
561 if (issue_oauth_code_cookie_)
562 SetOAuthCodeCookie(http_response);
563 }
564
504 void FakeGaia::HandleSSO(const HttpRequest& request, 565 void FakeGaia::HandleSSO(const HttpRequest& request,
505 BasicHttpResponse* http_response) { 566 BasicHttpResponse* http_response) {
506 if (!merge_session_params_.auth_sid_cookie.empty() && 567 if (!merge_session_params_.auth_sid_cookie.empty() &&
507 !merge_session_params_.auth_lsid_cookie.empty()) { 568 !merge_session_params_.auth_lsid_cookie.empty()) {
508 SetCookies(http_response, 569 SetCookies(http_response,
509 merge_session_params_.auth_sid_cookie, 570 merge_session_params_.auth_sid_cookie,
510 merge_session_params_.auth_lsid_cookie); 571 merge_session_params_.auth_lsid_cookie);
511 } 572 }
512 std::string relay_state; 573 std::string relay_state;
513 GetQueryParameter(request.content, "RelayState", &relay_state); 574 GetQueryParameter(request.content, "RelayState", &relay_state);
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 if (token_info) { 712 if (token_info) {
652 base::DictionaryValue response_dict; 713 base::DictionaryValue response_dict;
653 response_dict.SetString("id", GetGaiaIdOfEmail(token_info->email)); 714 response_dict.SetString("id", GetGaiaIdOfEmail(token_info->email));
654 response_dict.SetString("email", token_info->email); 715 response_dict.SetString("email", token_info->email);
655 response_dict.SetString("verified_email", token_info->email); 716 response_dict.SetString("verified_email", token_info->email);
656 FormatJSONResponse(response_dict, http_response); 717 FormatJSONResponse(response_dict, http_response);
657 } else { 718 } else {
658 http_response->set_code(net::HTTP_BAD_REQUEST); 719 http_response->set_code(net::HTTP_BAD_REQUEST);
659 } 720 }
660 } 721 }
OLDNEW
« no previous file with comments | « google_apis/gaia/fake_gaia.h ('k') | google_apis/test/embedded_setup_chromeos.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698