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

Side by Side Diff: components/autofill/content/browser/wallet/wallet_signin_helper_unittest.cc

Issue 1288093004: rAc Wallet extirpation round 4: clean out RPC code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix gn Created 5 years, 4 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
OLDNEW
(Empty)
1 // Copyright 2013 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 #include "components/autofill/content/browser/wallet/wallet_signin_helper.h"
6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9 #include "base/run_loop.h"
10 #include "base/strings/stringprintf.h"
11 #include "base/thread_task_runner_handle.h"
12 #include "components/autofill/content/browser/wallet/wallet_service_url.h"
13 #include "components/autofill/content/browser/wallet/wallet_signin_helper_delega te.h"
14 #include "content/public/browser/cookie_store_factory.h"
15 #include "content/public/test/test_browser_thread_bundle.h"
16 #include "google_apis/gaia/gaia_constants.h"
17 #include "google_apis/gaia/gaia_urls.h"
18 #include "google_apis/gaia/google_service_auth_error.h"
19 #include "net/cookies/canonical_cookie.h"
20 #include "net/cookies/cookie_monster.h"
21 #include "net/cookies/cookie_options.h"
22 #include "net/http/http_status_code.h"
23 #include "net/url_request/test_url_fetcher_factory.h"
24 #include "net/url_request/url_request.h"
25 #include "net/url_request/url_request_context.h"
26 #include "net/url_request/url_request_context_getter.h"
27 #include "net/url_request/url_request_status.h"
28 #include "net/url_request/url_request_test_util.h"
29 #include "testing/gmock/include/gmock/gmock.h"
30 #include "testing/gtest/include/gtest/gtest.h"
31
32 using testing::_;
33
34 namespace autofill {
35 namespace wallet {
36
37 namespace {
38
39 class MockWalletSigninHelperDelegate : public WalletSigninHelperDelegate {
40 public:
41 MOCK_METHOD0(OnPassiveSigninSuccess, void());
42 MOCK_METHOD1(OnPassiveSigninFailure,
43 void(const GoogleServiceAuthError& error));
44 MOCK_METHOD1(OnDidFetchWalletCookieValue,
45 void(const std::string& cookie_value));
46 };
47
48 } // namespace
49
50 class WalletSigninHelperTest : public testing::Test {
51 protected:
52 WalletSigninHelperTest()
53 : request_context_(new net::TestURLRequestContextGetter(
54 base::ThreadTaskRunnerHandle::Get())) {}
55 ~WalletSigninHelperTest() override {}
56
57 void SetUp() override {
58 signin_helper_.reset(
59 new WalletSigninHelper(&mock_delegate_, request_context_.get()));
60 }
61
62 void TearDown() override { signin_helper_.reset(); }
63
64 // Sets up a response for the mock URLFetcher and completes the request.
65 void SetUpFetcherResponseAndCompleteRequest(
66 const std::string& url,
67 int response_code,
68 const net::ResponseCookies& cookies,
69 const std::string& response_string) {
70 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
71 ASSERT_TRUE(fetcher);
72 ASSERT_TRUE(fetcher->delegate());
73
74 fetcher->set_url(GURL(url));
75 fetcher->set_status(net::URLRequestStatus());
76 fetcher->set_response_code(response_code);
77 fetcher->SetResponseString(response_string);
78 fetcher->set_cookies(cookies);
79 fetcher->delegate()->OnURLFetchComplete(fetcher);
80 }
81
82 void MockSuccessfulPassiveSignInResponse() {
83 SetUpFetcherResponseAndCompleteRequest(wallet::GetPassiveAuthUrl(0).spec(),
84 net::HTTP_OK,
85 net::ResponseCookies(),
86 "YES");
87 }
88
89 void MockFailedPassiveSignInResponseNo() {
90 SetUpFetcherResponseAndCompleteRequest(wallet::GetPassiveAuthUrl(0).spec(),
91 net::HTTP_OK,
92 net::ResponseCookies(),
93 "NOOOOOOOOOOOOOOO");
94 }
95
96 void MockFailedPassiveSignInResponse404() {
97 SetUpFetcherResponseAndCompleteRequest(wallet::GetPassiveAuthUrl(0).spec(),
98 net::HTTP_NOT_FOUND,
99 net::ResponseCookies(),
100 std::string());
101 }
102
103 content::TestBrowserThreadBundle thread_bundle_;
104 scoped_ptr<WalletSigninHelper> signin_helper_;
105 MockWalletSigninHelperDelegate mock_delegate_;
106 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
107
108 private:
109 net::TestURLFetcherFactory factory_;
110 };
111
112 TEST_F(WalletSigninHelperTest, PassiveSigninSuccessful) {
113 EXPECT_CALL(mock_delegate_, OnPassiveSigninSuccess());
114 signin_helper_->StartPassiveSignin(0);
115 MockSuccessfulPassiveSignInResponse();
116 }
117
118 TEST_F(WalletSigninHelperTest, PassiveSigninFailedSignin404) {
119 EXPECT_CALL(mock_delegate_, OnPassiveSigninFailure(_));
120 signin_helper_->StartPassiveSignin(0);
121 MockFailedPassiveSignInResponse404();
122 }
123
124 TEST_F(WalletSigninHelperTest, PassiveSigninFailedSigninNo) {
125 EXPECT_CALL(mock_delegate_, OnPassiveSigninFailure(_));
126 signin_helper_->StartPassiveSignin(0);
127 MockFailedPassiveSignInResponseNo();
128 }
129
130 TEST_F(WalletSigninHelperTest, GetWalletCookieValueWhenPresent) {
131 EXPECT_CALL(mock_delegate_, OnDidFetchWalletCookieValue("gdToken"));
132 net::CookieMonster* cookie_monster =
133 content::CreateCookieStore(content::CookieStoreConfig())->
134 GetCookieMonster();
135 net::CookieOptions httponly_options;
136 httponly_options.set_include_httponly();
137 scoped_ptr<net::CanonicalCookie> cookie(
138 net::CanonicalCookie::Create(GetPassiveAuthUrl(0).GetWithEmptyPath(),
139 "gdToken=gdToken; HttpOnly",
140 base::Time::Now(),
141 httponly_options));
142
143 net::CookieList cookie_list;
144 cookie_list.push_back(*cookie);
145 cookie_monster->ImportCookies(cookie_list);
146 request_context_->GetURLRequestContext()
147 ->set_cookie_store(cookie_monster);
148 signin_helper_->StartWalletCookieValueFetch();
149 base::RunLoop().RunUntilIdle();
150 }
151
152 TEST_F(WalletSigninHelperTest, GetWalletCookieValueWhenMissing) {
153 EXPECT_CALL(mock_delegate_, OnDidFetchWalletCookieValue(std::string()));
154 net::CookieMonster* cookie_monster =
155 content::CreateCookieStore(content::CookieStoreConfig())->
156 GetCookieMonster();
157 net::CookieOptions httponly_options;
158 httponly_options.set_include_httponly();
159 scoped_ptr<net::CanonicalCookie> cookie(
160 net::CanonicalCookie::Create(GetPassiveAuthUrl(0).GetWithEmptyPath(),
161 "fake_cookie=monkeys; HttpOnly",
162 base::Time::Now(),
163 httponly_options));
164
165 net::CookieList cookie_list;
166 cookie_list.push_back(*cookie);
167 cookie_monster->ImportCookies(cookie_list);
168 request_context_->GetURLRequestContext()
169 ->set_cookie_store(cookie_monster);
170 signin_helper_->StartWalletCookieValueFetch();
171 base::RunLoop().RunUntilIdle();
172 }
173
174 // TODO(aruslan): http://crbug.com/188317 Need more tests.
175
176 } // namespace wallet
177 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698