#include "google_apis/gaia/fake_gaia.h"
#include <string_view>
#include <utility>
#include <vector>
#include "base/base64.h"
#include "base/base_paths.h"
#include "base/containers/contains.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/json/json_writer.h"
#include "base/logging.h"
#include "base/path_service.h"
#include "base/ranges/algorithm.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/values.h"
#include "google_apis/gaia/gaia_auth_consumer.h"
#include "google_apis/gaia/gaia_constants.h"
#include "google_apis/gaia/gaia_urls.h"
#include "net/base/url_util.h"
#include "net/cookies/parsed_cookie.h"
#include "net/http/http_status_code.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/http_response.h"
#include "url/third_party/mozilla/url_parse.h"
#define REGISTER_RESPONSE_HANDLER(url, method) …
#define REGISTER_PATH_RESPONSE_HANDLER(path, method) …
BasicHttpResponse;
HttpRequest;
namespace {
const char kTestAuthCode[] = …;
const char kTestAuthLoginAccessToken[] = …;
const char kTestRefreshToken[] = …;
const char kTestSessionSIDCookie[] = …;
const char kTestSessionLSIDCookie[] = …;
const char kTestReauthProofToken[] = …;
const char kTestCookieAttributes[] = …;
const char kDefaultEmail[] = …;
const base::FilePath::CharType kEmbeddedSetupChromeos[] = …);
const char kAuthHeaderBearer[] = …;
const char kAuthHeaderOAuth[] = …;
const char kIndividualListedAccountResponseFormat[] = …;
const char kListAccountsResponseFormat[] = …;
const char kFakeRemoveLocalAccountPath[] = …;
const char kFakeSAMLContinuePath[] = …;
CookieMap;
bool GetAccessToken(const HttpRequest& request,
const char* auth_token_prefix,
std::string* access_token) { … }
void SetCookies(BasicHttpResponse* http_response,
const std::string& sid_cookie,
const std::string& lsid_cookie) { … }
std::string FormatCookieForMultilogin(std::string name, std::string value) { … }
std::string FormatSyncTrustedRecoveryMethods(
const std::vector<std::vector<uint8_t>>& public_keys) { … }
std::string FormatSyncTrustedVaultKeysHeader(
const std::string& gaia_id,
const FakeGaia::SyncTrustedVaultKeys& sync_trusted_vault_keys) { … }
}
FakeGaia::AccessTokenInfo::AccessTokenInfo() = default;
FakeGaia::AccessTokenInfo::AccessTokenInfo(const AccessTokenInfo& other) =
default;
FakeGaia::AccessTokenInfo::~AccessTokenInfo() = default;
FakeGaia::Configuration::Configuration() = default;
FakeGaia::Configuration::~Configuration() = default;
void FakeGaia::Configuration::Update(const Configuration& update) { … }
FakeGaia::SyncTrustedVaultKeys::SyncTrustedVaultKeys() = default;
FakeGaia::SyncTrustedVaultKeys::~SyncTrustedVaultKeys() = default;
FakeGaia::FakeGaia() : … { … }
FakeGaia::~FakeGaia() = default;
void FakeGaia::SetConfigurationHelper(const std::string& email,
const std::string& auth_sid_cookie,
const std::string& auth_lsid_cookie) { … }
void FakeGaia::SetConfiguration(const Configuration& params) { … }
void FakeGaia::UpdateConfiguration(const Configuration& params) { … }
void FakeGaia::MapEmailToGaiaId(const std::string& email,
const std::string& gaia_id) { … }
void FakeGaia::SetSyncTrustedVaultKeys(
const std::string& email,
const SyncTrustedVaultKeys& sync_trusted_vault_keys) { … }
std::string FakeGaia::GetGaiaIdOfEmail(const std::string& email) const { … }
std::string FakeGaia::GetEmailOfGaiaId(const std::string& gaia_id) const { … }
void FakeGaia::AddGoogleAccountsSigninHeader(BasicHttpResponse* http_response,
const std::string& email) const { … }
void FakeGaia::SetOAuthCodeCookie(BasicHttpResponse* http_response) const { … }
void FakeGaia::AddSyncTrustedKeysHeader(BasicHttpResponse* http_response,
const std::string& email) const { … }
void FakeGaia::Initialize() { … }
FakeGaia::RequestHandlerMap::iterator FakeGaia::FindHandlerByPathPrefix(
const std::string& request_path) { … }
std::unique_ptr<net::test_server::HttpResponse> FakeGaia::HandleRequest(
const HttpRequest& request) { … }
void FakeGaia::IssueOAuthToken(const std::string& auth_token,
const AccessTokenInfo& token_info) { … }
void FakeGaia::RegisterSamlUser(const std::string& account_id,
const GURL& saml_idp) { … }
void FakeGaia::RemoveSamlIdpForUser(const std::string& account_id) { … }
void FakeGaia::RegisterSamlDomainRedirectUrl(const std::string& domain,
const GURL& saml_redirect_url) { … }
void FakeGaia::RegisterSamlSsoProfileRedirectUrl(
const std::string& sso_profile,
const GURL& saml_redirect_url) { … }
bool FakeGaia::GetQueryParameter(const std::string& query,
const std::string& key,
std::string* value) { … }
std::string FakeGaia::GetDeviceIdByRefreshToken(
const std::string& refresh_token) const { … }
void FakeGaia::SetFixedResponse(const GURL& gaia_url,
net::HttpStatusCode http_status_code,
const std::string& http_response_body) { … }
GURL FakeGaia::GetFakeRemoveLocalAccountURL(const std::string& gaia_id) const { … }
void FakeGaia::SetRefreshTokenToDeviceIdMap(
const RefreshTokenToDeviceIdMap& refresh_token_to_device_id_map) { … }
void FakeGaia::FormatOkJSONResponse(const base::ValueView& value,
BasicHttpResponse* http_response) { … }
void FakeGaia::FormatJSONResponse(const base::ValueView& value,
net::HttpStatusCode status,
BasicHttpResponse* http_response) { … }
const FakeGaia::AccessTokenInfo* FakeGaia::FindAccessTokenInfo(
const std::string& auth_token,
const std::string& client_id,
const std::string& scope_string) const { … }
const FakeGaia::AccessTokenInfo* FakeGaia::GetAccessTokenInfo(
const std::string& access_token) const { … }
void FakeGaia::HandleEmbeddedSetupChromeos(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleEmbeddedReauthChromeos(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleEmbeddedLookupAccountLookup(
const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleEmbeddedSigninChallenge(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleSSO(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleFakeSAMLContinue(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleAuthToken(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleTokenInfo(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleIssueToken(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleListAccounts(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleOAuthUserInfo(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleSAMLRedirect(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleGetCheckConnectionInfo(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleGetReAuthProofToken(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleMultilogin(const HttpRequest& request,
BasicHttpResponse* http_response) { … }
void FakeGaia::HandleFakeRemoveLocalAccount(
const net::test_server::HttpRequest& request,
net::test_server::BasicHttpResponse* http_response) { … }
std::string FakeGaia::GetEmbeddedSetupChromeosResponseContent() const { … }
std::optional<GURL> FakeGaia::GetSamlRedirectUrl(
const GURL& request_url) const { … }