1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "components/autofill/content/browser/wallet/wallet_signin_helper.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/bind.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/bind_helpers.h" 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/run_loop.h" 10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h" 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "components/autofill/content/browser/wallet/wallet_service_url.h" 13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "components/autofill/content/browser/wallet/wallet_signin_helper_delegate.h" 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/public/test/test_browser_thread_bundle.h" 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "google_apis/gaia/gaia_constants.h" 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "google_apis/gaia/gaia_urls.h" 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "google_apis/gaia/google_service_auth_error.h" 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "net/cookies/canonical_cookie.h" 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "net/cookies/cookie_monster.h" 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "net/cookies/cookie_options.h" 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "net/http/http_status_code.h" 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/url_request/test_url_fetcher_factory.h" 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/url_request/url_request.h" 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "net/url_request/url_request_context.h" 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/url_request/url_request_context_getter.h" 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/url_request/url_request_status.h" 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using testing::_; 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace autofill { 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace wallet { 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kGetTokenPairValidResponse[] = 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "{" 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " \"refresh_token\": \"rt1\"," 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " \"access_token\": \"at1\"," 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " \"expires_in\": 3600," 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) " \"token_type\": \"Bearer\"" 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "}"; 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const char kGetAccountInfoValidResponseFormat[] = 46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) "{\"user_info\":[" 47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) " {" 48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) " \"email\": \"%s\"" 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) " }" 50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) "]}"; 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class MockWalletSigninHelperDelegate : public WalletSigninHelperDelegate { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD1(OnPassiveSigninSuccess, void(const std::string& username)); 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD1(OnUserNameFetchSuccess, void(const std::string& username)); 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD1(OnPassiveSigninFailure, 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void(const GoogleServiceAuthError& error)); 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MOCK_METHOD1(OnUserNameFetchFailure, 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void(const GoogleServiceAuthError& error)); 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch MOCK_METHOD1(OnDidFetchWalletCookieValue, 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void(const std::string& cookie_value)); 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class WalletSigninHelperForTesting : public WalletSigninHelper { 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WalletSigninHelperForTesting(WalletSigninHelperDelegate* delegate, 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::URLRequestContextGetter* getter) 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : WalletSigninHelper(delegate, getter) { 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Bring in the test-only getters. 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) using WalletSigninHelper::GetGetAccountInfoUrlForTesting; 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) using WalletSigninHelper::state; 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Bring in the State enum. 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) using WalletSigninHelper::State; 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) using WalletSigninHelper::IDLE; 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class WalletSigninHelperTest : public testing::Test { 83a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch protected: 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUp() OVERRIDE { 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signin_helper_.reset(new WalletSigninHelperForTesting( 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &mock_delegate_, 87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch browser_context_.GetRequestContext())); 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(WalletSigninHelperForTesting::IDLE, state()); 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void TearDown() OVERRIDE { 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signin_helper_.reset(); 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Sets up a response for the mock URLFetcher and completes the request. 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetUpFetcherResponseAndCompleteRequest( 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& url, 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int response_code, 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const net::ResponseCookies& cookies, 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& response_string) { 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(fetcher); 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(fetcher->delegate()); 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->set_url(GURL(url)); 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->set_status(net::URLRequestStatus()); 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->set_response_code(response_code); 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->SetResponseString(response_string); 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->set_cookies(cookies); 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) fetcher->delegate()->OnURLFetchComplete(fetcher); 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void MockSuccessfulGetAccountInfoResponse(const std::string& username) { 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpFetcherResponseAndCompleteRequest( 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch signin_helper_->GetGetAccountInfoUrlForTesting(), net::HTTP_OK, 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::ResponseCookies(), 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::StringPrintf( 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) kGetAccountInfoValidResponseFormat, 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) username.c_str())); 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void MockFailedGetAccountInfoResponse404() { 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpFetcherResponseAndCompleteRequest( 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signin_helper_->GetGetAccountInfoUrlForTesting(), 125eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch net::HTTP_NOT_FOUND, 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::ResponseCookies(), 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string()); 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 130eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void MockSuccessfulPassiveSignInResponse() { 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpFetcherResponseAndCompleteRequest(wallet::GetPassiveAuthUrl().spec(), 132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch net::HTTP_OK, 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::ResponseCookies(), 134eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch "YES"); 135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 136eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void MockFailedPassiveSignInResponseNo() { 138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetUpFetcherResponseAndCompleteRequest(wallet::GetPassiveAuthUrl().spec(), 139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch net::HTTP_OK, 140eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch net::ResponseCookies(), 141eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch "NOOOOOOOOOOOOOOO"); 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 144eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void MockFailedPassiveSignInResponse404() { 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetUpFetcherResponseAndCompleteRequest(wallet::GetPassiveAuthUrl().spec(), 146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch net::HTTP_NOT_FOUND, 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::ResponseCookies(), 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string()); 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WalletSigninHelperForTesting::State state() const { 152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return signin_helper_->state(); 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 155a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) content::TestBrowserThreadBundle thread_bundle_; 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<WalletSigninHelperForTesting> signin_helper_; 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MockWalletSigninHelperDelegate mock_delegate_; 158a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) TestingProfile browser_context_; 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 161a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch net::TestURLFetcherFactory factory_; 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(WalletSigninHelperTest, PassiveSigninSuccessful) { 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_CALL(mock_delegate_, OnPassiveSigninSuccess("user@gmail.com")); 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signin_helper_->StartPassiveSignin(); 167eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MockSuccessfulPassiveSignInResponse(); 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MockSuccessfulGetAccountInfoResponse("user@gmail.com"); 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 171eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(WalletSigninHelperTest, PassiveSigninFailedSignin404) { 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_CALL(mock_delegate_, OnPassiveSigninFailure(_)); 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signin_helper_->StartPassiveSignin(); 174eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MockFailedPassiveSignInResponse404(); 175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 176eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 177eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(WalletSigninHelperTest, PassiveSigninFailedSigninNo) { 178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_CALL(mock_delegate_, OnPassiveSigninFailure(_)); 179eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch signin_helper_->StartPassiveSignin(); 180eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MockFailedPassiveSignInResponseNo(); 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(WalletSigninHelperTest, PassiveSigninFailedUserInfo) { 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_CALL(mock_delegate_, OnPassiveSigninFailure(_)); 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signin_helper_->StartPassiveSignin(); 186eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MockSuccessfulPassiveSignInResponse(); 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MockFailedGetAccountInfoResponse404(); 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(WalletSigninHelperTest, PassiveUserInfoSuccessful) { 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_CALL(mock_delegate_, OnUserNameFetchSuccess("user@gmail.com")); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signin_helper_->StartUserNameFetch(); 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MockSuccessfulGetAccountInfoResponse("user@gmail.com"); 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(WalletSigninHelperTest, PassiveUserInfoFailedUserInfo) { 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_CALL(mock_delegate_, OnUserNameFetchFailure(_)); 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signin_helper_->StartUserNameFetch(); 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MockFailedGetAccountInfoResponse404(); 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2027dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(WalletSigninHelperTest, GetWalletCookieValueWhenPresent) { 2037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_CALL(mock_delegate_, OnDidFetchWalletCookieValue("gdToken")); 2047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch net::CookieMonster* cookie_monster = new net::CookieMonster(NULL, NULL); 2057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch net::CookieOptions httponly_options; 2067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch httponly_options.set_include_httponly(); 2077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<net::CanonicalCookie> cookie( 2087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch net::CanonicalCookie::Create(GetPassiveAuthUrl().GetWithEmptyPath(), 2097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "gdToken=gdToken; HttpOnly", 2107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Time::Now(), 2117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch httponly_options)); 2127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch net::CookieList cookie_list; 2147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch cookie_list.push_back(*cookie); 2157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch cookie_monster->InitializeFrom(cookie_list); 2167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch browser_context_.GetRequestContext()->GetURLRequestContext() 2177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ->set_cookie_store(cookie_monster); 2187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch signin_helper_->StartWalletCookieValueFetch(); 2197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::RunLoop().RunUntilIdle(); 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2227dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(WalletSigninHelperTest, GetWalletCookieValueWhenMissing) { 2237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_CALL(mock_delegate_, OnDidFetchWalletCookieValue(std::string())); 2247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch net::CookieMonster* cookie_monster = new net::CookieMonster(NULL, NULL); 2257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch net::CookieOptions httponly_options; 2267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch httponly_options.set_include_httponly(); 2277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<net::CanonicalCookie> cookie( 2287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch net::CanonicalCookie::Create(GetPassiveAuthUrl().GetWithEmptyPath(), 2297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "fake_cookie=monkeys; HttpOnly", 2307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Time::Now(), 2317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch httponly_options)); 2327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch net::CookieList cookie_list; 2347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch cookie_list.push_back(*cookie); 2357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch cookie_monster->InitializeFrom(cookie_list); 2367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch browser_context_.GetRequestContext()->GetURLRequestContext() 2377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ->set_cookie_store(cookie_monster); 2387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch signin_helper_->StartWalletCookieValueFetch(); 2397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::RunLoop().RunUntilIdle(); 240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// TODO(aruslan): http://crbug.com/188317 Need more tests. 243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace wallet 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace autofill 246