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

Side by Side Diff: components/autofill/content/browser/payments/payments_client_unittest.cc

Issue 2349033002: Include addresses with the getdetailsforsavecard Payments RPC. (Closed)
Patch Set: Add tests to verify whether or not address names are sent. Created 4 years, 3 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 | « no previous file | components/autofill/core/browser/autofill_manager.cc » ('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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <utility> 5 #include <utility>
6 #include <vector>
6 7
7 #include "base/command_line.h" 8 #include "base/command_line.h"
8 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/string_piece.h"
9 #include "base/threading/thread_task_runner_handle.h" 11 #include "base/threading/thread_task_runner_handle.h"
10 #include "base/values.h" 12 #include "base/values.h"
11 #include "components/autofill/core/browser/autofill_test_utils.h" 13 #include "components/autofill/core/browser/autofill_test_utils.h"
12 #include "components/autofill/core/browser/payments/payments_client.h" 14 #include "components/autofill/core/browser/payments/payments_client.h"
13 #include "components/autofill/core/common/autofill_switches.h" 15 #include "components/autofill/core/common/autofill_switches.h"
14 #include "content/public/test/test_browser_thread_bundle.h" 16 #include "content/public/test/test_browser_thread_bundle.h"
15 #include "google_apis/gaia/fake_identity_provider.h" 17 #include "google_apis/gaia/fake_identity_provider.h"
16 #include "google_apis/gaia/fake_oauth2_token_service.h" 18 #include "google_apis/gaia/fake_oauth2_token_service.h"
17 #include "net/url_request/test_url_fetcher_factory.h" 19 #include "net/url_request/test_url_fetcher_factory.h"
18 #include "net/url_request/url_request_test_util.h" 20 #include "net/url_request/url_request_test_util.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 PaymentsClient::UnmaskRequestDetails request_details; 77 PaymentsClient::UnmaskRequestDetails request_details;
76 request_details.card = test::GetMaskedServerCard(); 78 request_details.card = test::GetMaskedServerCard();
77 request_details.user_response.cvc = base::ASCIIToUTF16("123"); 79 request_details.user_response.cvc = base::ASCIIToUTF16("123");
78 request_details.risk_data = "some risk data"; 80 request_details.risk_data = "some risk data";
79 client_->UnmaskCard(request_details); 81 client_->UnmaskCard(request_details);
80 } 82 }
81 83
82 void StartGettingUploadDetails() { 84 void StartGettingUploadDetails() {
83 token_service_->AddAccount("example@gmail.com"); 85 token_service_->AddAccount("example@gmail.com");
84 identity_provider_->LogIn("example@gmail.com"); 86 identity_provider_->LogIn("example@gmail.com");
85 client_->GetUploadDetails("language-LOCALE"); 87 client_->GetUploadDetails(BuildTestProfiles(), "language-LOCALE");
86 } 88 }
87 89
88 void StartUploading() { 90 void StartUploading() {
89 token_service_->AddAccount("example@gmail.com"); 91 token_service_->AddAccount("example@gmail.com");
90 identity_provider_->LogIn("example@gmail.com"); 92 identity_provider_->LogIn("example@gmail.com");
91 PaymentsClient::UploadRequestDetails request_details; 93 PaymentsClient::UploadRequestDetails request_details;
92 request_details.card = test::GetCreditCard(); 94 request_details.card = test::GetCreditCard();
93 request_details.cvc = base::ASCIIToUTF16("123"); 95 request_details.cvc = base::ASCIIToUTF16("123");
94 request_details.context_token = base::ASCIIToUTF16("context token"); 96 request_details.context_token = base::ASCIIToUTF16("context token");
95 request_details.risk_data = "some risk data"; 97 request_details.risk_data = "some risk data";
96 request_details.app_locale = "language-LOCALE"; 98 request_details.app_locale = "language-LOCALE";
99 request_details.profiles = BuildTestProfiles();
97 client_->UploadCard(request_details); 100 client_->UploadCard(request_details);
98 } 101 }
99 102
103 const std::string& GetUploadData() {
104 return factory_.GetFetcherByID(0)->upload_data();
105 }
106
100 void IssueOAuthToken() { 107 void IssueOAuthToken() {
101 token_service_->IssueAllTokensForAccount( 108 token_service_->IssueAllTokensForAccount(
102 "example@gmail.com", "totally_real_token", 109 "example@gmail.com", "totally_real_token",
103 base::Time::Now() + base::TimeDelta::FromDays(10)); 110 base::Time::Now() + base::TimeDelta::FromDays(10));
104 111
105 // Verify the auth header. 112 // Verify the auth header.
106 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 113 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
107 net::HttpRequestHeaders request_headers; 114 net::HttpRequestHeaders request_headers;
108 fetcher->GetExtraRequestHeaders(&request_headers); 115 fetcher->GetExtraRequestHeaders(&request_headers);
109 std::string auth_header_value; 116 std::string auth_header_value;
(...skipping 18 matching lines...) Expand all
128 135
129 content::TestBrowserThreadBundle thread_bundle_; 136 content::TestBrowserThreadBundle thread_bundle_;
130 net::TestURLFetcherFactory factory_; 137 net::TestURLFetcherFactory factory_;
131 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 138 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
132 std::unique_ptr<FakeOAuth2TokenService> token_service_; 139 std::unique_ptr<FakeOAuth2TokenService> token_service_;
133 std::unique_ptr<FakeIdentityProvider> identity_provider_; 140 std::unique_ptr<FakeIdentityProvider> identity_provider_;
134 std::unique_ptr<PaymentsClient> client_; 141 std::unique_ptr<PaymentsClient> client_;
135 142
136 private: 143 private:
137 DISALLOW_COPY_AND_ASSIGN(PaymentsClientTest); 144 DISALLOW_COPY_AND_ASSIGN(PaymentsClientTest);
145
146 std::vector<AutofillProfile> BuildTestProfiles() {
147 std::vector<AutofillProfile> profiles;
148 profiles.push_back(
149 BuildProfile("John", "Smith", "1234 Main St.", "Miami", "FL", "32006"));
150 profiles.push_back(
151 BuildProfile("Pat", "Jones", "432 Oak Lane", "Lincoln", "OH", "43005"));
152 return profiles;
153 }
154
155 AutofillProfile BuildProfile(base::StringPiece first_name,
156 base::StringPiece last_name,
157 base::StringPiece address_line,
158 base::StringPiece city,
159 base::StringPiece state,
160 base::StringPiece zip) {
161 AutofillProfile profile;
162
163 profile.SetInfo(AutofillType(NAME_FIRST),
164 ASCIIToUTF16(first_name), "en-US");
165 profile.SetInfo(AutofillType(NAME_LAST), ASCIIToUTF16(last_name), "en-US");
166 profile.SetInfo(AutofillType(ADDRESS_HOME_LINE1),
167 ASCIIToUTF16(address_line), "en-US");
168 profile.SetInfo(AutofillType(ADDRESS_HOME_CITY),
169 ASCIIToUTF16(city), "en-US");
170 profile.SetInfo(AutofillType(ADDRESS_HOME_STATE),
171 ASCIIToUTF16(state), "en-US");
172 profile.SetInfo(AutofillType(ADDRESS_HOME_ZIP), ASCIIToUTF16(zip), "en-US");
173
174 return profile;
175 }
138 }; 176 };
139 177
140 TEST_F(PaymentsClientTest, OAuthError) { 178 TEST_F(PaymentsClientTest, OAuthError) {
141 StartUnmasking(); 179 StartUnmasking();
142 token_service_->IssueErrorForAllPendingRequestsForAccount( 180 token_service_->IssueErrorForAllPendingRequestsForAccount(
143 "example@gmail.com", 181 "example@gmail.com",
144 GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_UNAVAILABLE)); 182 GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_UNAVAILABLE));
145 EXPECT_EQ(AutofillClient::PERMANENT_FAILURE, result_); 183 EXPECT_EQ(AutofillClient::PERMANENT_FAILURE, result_);
146 EXPECT_TRUE(real_pan_.empty()); 184 EXPECT_TRUE(real_pan_.empty());
147 } 185 }
148 186
149 TEST_F(PaymentsClientTest, UnmaskSuccess) { 187 TEST_F(PaymentsClientTest, UnmaskSuccess) {
150 StartUnmasking(); 188 StartUnmasking();
151 IssueOAuthToken(); 189 IssueOAuthToken();
152 ReturnResponse(net::HTTP_OK, "{ \"pan\": \"1234\" }"); 190 ReturnResponse(net::HTTP_OK, "{ \"pan\": \"1234\" }");
153 EXPECT_EQ(AutofillClient::SUCCESS, result_); 191 EXPECT_EQ(AutofillClient::SUCCESS, result_);
154 EXPECT_EQ("1234", real_pan_); 192 EXPECT_EQ("1234", real_pan_);
155 } 193 }
156 194
157 TEST_F(PaymentsClientTest, GetDetailsSuccess) { 195 TEST_F(PaymentsClientTest, GetDetailsSuccess) {
158 StartGettingUploadDetails(); 196 StartGettingUploadDetails();
159 ReturnResponse( 197 ReturnResponse(
160 net::HTTP_OK, 198 net::HTTP_OK,
161 "{ \"context_token\": \"some_token\", \"legal_message\": {} }"); 199 "{ \"context_token\": \"some_token\", \"legal_message\": {} }");
162 EXPECT_EQ(AutofillClient::SUCCESS, result_); 200 EXPECT_EQ(AutofillClient::SUCCESS, result_);
163 EXPECT_NE(nullptr, legal_message_.get()); 201 EXPECT_NE(nullptr, legal_message_.get());
164 } 202 }
165 203
204 TEST_F(PaymentsClientTest, GetDetailsRemovesRecipientNames) {
205 StartGettingUploadDetails();
206 EXPECT_TRUE(GetUploadData().find(PaymentsClient::kRecipientName) ==
207 std::string::npos);
Evan Stade 2016/09/22 16:16:13 nit: verify other fields are present? verify "John
208 }
209
166 TEST_F(PaymentsClientTest, UploadSuccess) { 210 TEST_F(PaymentsClientTest, UploadSuccess) {
167 StartUploading(); 211 StartUploading();
168 IssueOAuthToken(); 212 IssueOAuthToken();
169 ReturnResponse(net::HTTP_OK, "{}"); 213 ReturnResponse(net::HTTP_OK, "{}");
170 EXPECT_EQ(AutofillClient::SUCCESS, result_); 214 EXPECT_EQ(AutofillClient::SUCCESS, result_);
171 } 215 }
172 216
217 TEST_F(PaymentsClientTest, UploadIncludesRecipientNames) {
218 StartUploading();
219 EXPECT_TRUE(GetUploadData().find(PaymentsClient::kRecipientName) !=
220 std::string::npos);
221 }
222
173 TEST_F(PaymentsClientTest, GetDetailsFollowedByUploadSuccess) { 223 TEST_F(PaymentsClientTest, GetDetailsFollowedByUploadSuccess) {
174 StartGettingUploadDetails(); 224 StartGettingUploadDetails();
175 ReturnResponse( 225 ReturnResponse(
176 net::HTTP_OK, 226 net::HTTP_OK,
177 "{ \"context_token\": \"some_token\", \"legal_message\": {} }"); 227 "{ \"context_token\": \"some_token\", \"legal_message\": {} }");
178 EXPECT_EQ(AutofillClient::SUCCESS, result_); 228 EXPECT_EQ(AutofillClient::SUCCESS, result_);
179 229
180 result_ = AutofillClient::NONE; 230 result_ = AutofillClient::NONE;
181 231
182 StartUploading(); 232 StartUploading();
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 TEST_F(PaymentsClientTest, OtherError) { 325 TEST_F(PaymentsClientTest, OtherError) {
276 StartUnmasking(); 326 StartUnmasking();
277 IssueOAuthToken(); 327 IssueOAuthToken();
278 ReturnResponse(net::HTTP_FORBIDDEN, std::string()); 328 ReturnResponse(net::HTTP_FORBIDDEN, std::string());
279 EXPECT_EQ(AutofillClient::PERMANENT_FAILURE, result_); 329 EXPECT_EQ(AutofillClient::PERMANENT_FAILURE, result_);
280 EXPECT_EQ("", real_pan_); 330 EXPECT_EQ("", real_pan_);
281 } 331 }
282 332
283 } // namespace autofill 333 } // namespace autofill
284 } // namespace payments 334 } // namespace payments
OLDNEW
« no previous file with comments | « no previous file | components/autofill/core/browser/autofill_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698