#include "base/base_paths.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
-#include "base/file_util.h"
#include "base/files/file_path.h"
+#include "base/files/file_util.h"
#include "base/json/json_writer.h"
#include "base/logging.h"
#include "base/memory/linked_ptr.h"
namespace {
+const char kTestAuthCode[] = "fake-auth-code";
+const char kTestGaiaUberToken[] = "fake-uber-token";
+const char kTestAuthLoginAccessToken[] = "fake-access-token";
+const char kTestRefreshToken[] = "fake-refresh-token";
+const char kTestSessionSIDCookie[] = "fake-session-SID-cookie";
+const char kTestSessionLSIDCookie[] = "fake-session-LSID-cookie";
+const char kTestOAuthLoginSID[] = "fake-oauth-SID-cookie";
+const char kTestOAuthLoginLSID[] = "fake-oauth-LSID-cookie";
+const char kTestOAuthLoginAuthCode[] = "fake-oauth-auth-code";
+
const base::FilePath::CharType kServiceLogin[] =
FILE_PATH_LITERAL("google_apis/test/service_login.html");
FakeGaia::~FakeGaia() {}
+void FakeGaia::SetFakeMergeSessionParams(
+ const std::string& email,
+ const std::string& auth_sid_cookie,
+ const std::string& auth_lsid_cookie) {
+ FakeGaia::MergeSessionParams params;
+ params.auth_sid_cookie = auth_sid_cookie;
+ params.auth_lsid_cookie = auth_lsid_cookie;
+ params.auth_code = kTestAuthCode;
+ params.refresh_token = kTestRefreshToken;
+ params.access_token = kTestAuthLoginAccessToken;
+ params.gaia_uber_token = kTestGaiaUberToken;
+ params.session_sid_cookie = kTestSessionSIDCookie;
+ params.session_lsid_cookie = kTestSessionLSIDCookie;
+ params.email = email;
+ SetMergeSessionParams(params);
+}
+
void FakeGaia::SetMergeSessionParams(
const MergeSessionParams& params) {
merge_session_params_ = params;
// Handles /ListAccounts GAIA call.
REGISTER_RESPONSE_HANDLER(
gaia_urls->list_accounts_url(), HandleListAccounts);
+
+ // Handles /GetUserInfo GAIA call.
+ REGISTER_RESPONSE_HANDLER(
+ gaia_urls->get_user_info_url(), HandleGetUserInfo);
}
scoped_ptr<HttpResponse> FakeGaia::HandleRequest(const HttpRequest& request) {
}
std::string access_token;
- if (!GetAccessToken(request, kAuthHeaderOAuth, &access_token)) {
+ if (!GetAccessToken(request, kAuthHeaderBearer, &access_token) &&
+ !GetAccessToken(request, kAuthHeaderOAuth, &access_token)) {
LOG(ERROR) << "/OAuthLogin missing access token in the header";
return;
}
std::string request_query = request_url.query();
std::string source;
- if (!GetQueryParameter(request_query, "source", &source)) {
+ if (!GetQueryParameter(request_query, "source", &source) &&
+ !GetQueryParameter(request.content, "source", &source)) {
LOG(ERROR) << "Missing 'source' param in /OAuthLogin call";
return;
}
http_response->set_code(net::HTTP_OK);
// Issue GAIA uber token.
} else {
- LOG(FATAL) << "/OAuthLogin for SID/LSID is not supported";
+ http_response->set_content(base::StringPrintf(
+ "SID=%s\nLSID=%s\nAuth=%s",
+ kTestOAuthLoginSID, kTestOAuthLoginLSID, kTestOAuthLoginAuthCode));
+ http_response->set_code(net::HTTP_OK);
}
}
http_response->set_code(net::HTTP_TEMPORARY_REDIRECT);
http_response->AddCustomHeader("Location", redirect_url);
+ http_response->AddCustomHeader("google-accounts-signin",
+ base::StringPrintf("email=\"%s\", sessionindex=0", email.c_str()));
}
void FakeGaia::HandleSSO(const HttpRequest& request,
}
void FakeGaia::HandleListAccounts(const HttpRequest& request,
- BasicHttpResponse* http_response) {
+ BasicHttpResponse* http_response) {
http_response->set_content(base::StringPrintf(
kListAccountsResponseFormat, merge_session_params_.email.c_str()));
http_response->set_code(net::HTTP_OK);
}
+
+void FakeGaia::HandleGetUserInfo(const HttpRequest& request,
+ BasicHttpResponse* http_response) {
+ http_response->set_content(base::StringPrintf(
+ "email=%s\ndisplayEmail=%s",
+ merge_session_params_.email.c_str(),
+ merge_session_params_.email.c_str()));
+ http_response->set_code(net::HTTP_OK);
+}