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

Side by Side Diff: chrome/browser/autofill/wallet/wallet_client_unittest.cc

Issue 11773037: Implementation of sensitive card information escrowing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing Ilya's final comments Created 7 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/logging.h" 5 #include "base/logging.h"
6 #include "base/string_number_conversions.h" 6 #include "base/string_number_conversions.h"
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "chrome/browser/autofill/wallet/cart.h" 8 #include "chrome/browser/autofill/wallet/cart.h"
9 #include "chrome/browser/autofill/wallet/full_wallet.h" 9 #include "chrome/browser/autofill/wallet/full_wallet.h"
10 #include "chrome/browser/autofill/wallet/wallet_client.h" 10 #include "chrome/browser/autofill/wallet/wallet_client.h"
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 160
161 const char kSendExtendedAutofillStatusOfFailureValidRequest[] = 161 const char kSendExtendedAutofillStatusOfFailureValidRequest[] =
162 "{" 162 "{"
163 "\"api_key\":\"abcdefg\"," 163 "\"api_key\":\"abcdefg\","
164 "\"google_transaction_id\":\"google_transaction_id\"," 164 "\"google_transaction_id\":\"google_transaction_id\","
165 "\"hostname\":\"hostname\"," 165 "\"hostname\":\"hostname\","
166 "\"reason\":\"CANNOT_PROCEED\"," 166 "\"reason\":\"CANNOT_PROCEED\","
167 "\"success\":false" 167 "\"success\":false"
168 "}"; 168 "}";
169 169
170 const char kEscrowSensitiveInformationRequest[] =
171 "gid=obfuscated_gaia_id&cardNumber=pan&cvv=cvn";
172
170 } // anonymous namespace 173 } // anonymous namespace
171 174
172 namespace wallet { 175 namespace wallet {
173 176
174 class WalletClientTest : public testing::Test { 177 class WalletClientTest : public testing::Test {
175 public: 178 public:
176 WalletClientTest() : io_thread_(content::BrowserThread::IO) {} 179 WalletClientTest() : io_thread_(content::BrowserThread::IO) {}
177 180
178 virtual void SetUp() { 181 virtual void SetUp() {
179 io_thread_.StartIOThread(); 182 io_thread_.StartIOThread();
(...skipping 15 matching lines...) Expand all
195 198
196 class MockWalletClientObserver 199 class MockWalletClientObserver
197 : public wallet::WalletClient::WalletClientObserver { 200 : public wallet::WalletClient::WalletClientObserver {
198 public: 201 public:
199 MockWalletClientObserver() {} 202 MockWalletClientObserver() {}
200 ~MockWalletClientObserver() {} 203 ~MockWalletClientObserver() {}
201 204
202 MOCK_METHOD0(OnAcceptLegalDocuments, void()); 205 MOCK_METHOD0(OnAcceptLegalDocuments, void());
203 MOCK_METHOD2(OnEncryptOtp, void(const std::string& encrypted_otp, 206 MOCK_METHOD2(OnEncryptOtp, void(const std::string& encrypted_otp,
204 const std::string& session_material)); 207 const std::string& session_material));
208 MOCK_METHOD1(OnDidEscrowSensitiveInformation,
209 void(const std::string& escrow_handle));
205 MOCK_METHOD1(OnGetFullWallet, void(FullWallet* full_wallet)); 210 MOCK_METHOD1(OnGetFullWallet, void(FullWallet* full_wallet));
206 MOCK_METHOD1(OnGetWalletItems, void(WalletItems* wallet_items)); 211 MOCK_METHOD1(OnGetWalletItems, void(WalletItems* wallet_items));
207 MOCK_METHOD0(OnSendExtendedAutofillStatus, void()); 212 MOCK_METHOD0(OnSendExtendedAutofillStatus, void());
208 MOCK_METHOD0(OnWalletError, void()); 213 MOCK_METHOD0(OnWalletError, void());
209 MOCK_METHOD1(OnNetworkError, void(int response_code)); 214 MOCK_METHOD1(OnNetworkError, void(int response_code));
210 }; 215 };
211 216
212 // TODO(ahutter): Implement API compatibility tests. See 217 // TODO(ahutter): Implement API compatibility tests. See
213 // http://crbug.com/164465. 218 // http://crbug.com/164465.
214 219
215 // TODO(ahutter): Improve this when the error body is captured. See 220 // TODO(ahutter): Improve this when the error body is captured. See
216 // http://crbug.com/164410. 221 // http://crbug.com/164410.
217 TEST_F(WalletClientTest, WalletErrorOnExpectedVoidResponse) { 222 TEST_F(WalletClientTest, WalletErrorOnExpectedVoidResponse) {
218 MockWalletClientObserver observer; 223 MockWalletClientObserver observer;
219 EXPECT_CALL(observer, OnWalletError()).Times(1); 224 EXPECT_CALL(observer, OnWalletError()).Times(1);
220 225
221 net::TestURLFetcherFactory factory; 226 net::TestURLFetcherFactory factory;
222 227
223 WalletClient wallet_client(profile_.GetRequestContext()); 228 WalletClient wallet_client(profile_.GetRequestContext());
224 wallet_client.SendExtendedAutofillStatus(true, "", "", "", &observer); 229 wallet_client.SendExtendedAutofillStatus(true, "", "", "", &observer);
225 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 230 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
226 DCHECK(fetcher); 231 ASSERT_TRUE(fetcher);
227 fetcher->set_response_code(net::HTTP_INTERNAL_SERVER_ERROR); 232 fetcher->set_response_code(net::HTTP_INTERNAL_SERVER_ERROR);
228 fetcher->delegate()->OnURLFetchComplete(fetcher); 233 fetcher->delegate()->OnURLFetchComplete(fetcher);
229 } 234 }
230 235
231 // TODO(ahutter): Improve this when the error body is captured. See 236 // TODO(ahutter): Improve this when the error body is captured. See
232 // http://crbug.com/164410. 237 // http://crbug.com/164410.
233 TEST_F(WalletClientTest, WalletErrorOnExpectedResponse) { 238 TEST_F(WalletClientTest, WalletErrorOnExpectedResponse) {
234 MockWalletClientObserver observer; 239 MockWalletClientObserver observer;
235 EXPECT_CALL(observer, OnWalletError()).Times(1); 240 EXPECT_CALL(observer, OnWalletError()).Times(1);
236 241
237 net::TestURLFetcherFactory factory; 242 net::TestURLFetcherFactory factory;
238 243
239 WalletClient wallet_client(profile_.GetRequestContext()); 244 WalletClient wallet_client(profile_.GetRequestContext());
240 Cart cart("currency_code", "currency_code"); 245 Cart cart("currency_code", "currency_code");
241 wallet_client.GetFullWallet("", "", "", cart, "", "", "", &observer); 246 wallet_client.GetFullWallet("", "", "", cart, "", "", "", &observer);
242 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 247 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
243 DCHECK(fetcher); 248 ASSERT_TRUE(fetcher);
244 fetcher->set_response_code(net::HTTP_INTERNAL_SERVER_ERROR); 249 fetcher->set_response_code(net::HTTP_INTERNAL_SERVER_ERROR);
245 fetcher->delegate()->OnURLFetchComplete(fetcher); 250 fetcher->delegate()->OnURLFetchComplete(fetcher);
246 } 251 }
247 252
248 TEST_F(WalletClientTest, NetworkFailureOnExpectedVoidResponse) { 253 TEST_F(WalletClientTest, NetworkFailureOnExpectedVoidResponse) {
249 MockWalletClientObserver observer; 254 MockWalletClientObserver observer;
250 EXPECT_CALL(observer, OnNetworkError(net::HTTP_UNAUTHORIZED)).Times(1); 255 EXPECT_CALL(observer, OnNetworkError(net::HTTP_UNAUTHORIZED)).Times(1);
251 256
252 net::TestURLFetcherFactory factory; 257 net::TestURLFetcherFactory factory;
253 258
254 WalletClient wallet_client(profile_.GetRequestContext()); 259 WalletClient wallet_client(profile_.GetRequestContext());
255 wallet_client.SendExtendedAutofillStatus(true, "", "", "", &observer); 260 wallet_client.SendExtendedAutofillStatus(true, "", "", "", &observer);
256 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 261 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
257 DCHECK(fetcher); 262 ASSERT_TRUE(fetcher);
258 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 263 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
259 fetcher->delegate()->OnURLFetchComplete(fetcher); 264 fetcher->delegate()->OnURLFetchComplete(fetcher);
260 } 265 }
261 266
262 TEST_F(WalletClientTest, NetworkFailureOnExpectedResponse) { 267 TEST_F(WalletClientTest, NetworkFailureOnExpectedResponse) {
263 MockWalletClientObserver observer; 268 MockWalletClientObserver observer;
264 EXPECT_CALL(observer, OnNetworkError(net::HTTP_UNAUTHORIZED)).Times(1); 269 EXPECT_CALL(observer, OnNetworkError(net::HTTP_UNAUTHORIZED)).Times(1);
265 270
266 net::TestURLFetcherFactory factory; 271 net::TestURLFetcherFactory factory;
267 272
268 WalletClient wallet_client(profile_.GetRequestContext()); 273 WalletClient wallet_client(profile_.GetRequestContext());
269 Cart cart("currency_code", "currency_code"); 274 Cart cart("currency_code", "currency_code");
270 wallet_client.GetFullWallet("", "", "", cart, "", "", "", &observer); 275 wallet_client.GetFullWallet("", "", "", cart, "", "", "", &observer);
271 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 276 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
272 DCHECK(fetcher); 277 ASSERT_TRUE(fetcher);
273 fetcher->set_response_code(net::HTTP_UNAUTHORIZED); 278 fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
274 fetcher->delegate()->OnURLFetchComplete(fetcher); 279 fetcher->delegate()->OnURLFetchComplete(fetcher);
275 } 280 }
276 281
277 TEST_F(WalletClientTest, RequestError) { 282 TEST_F(WalletClientTest, RequestError) {
278 MockWalletClientObserver observer; 283 MockWalletClientObserver observer;
279 EXPECT_CALL(observer, OnWalletError()).Times(1); 284 EXPECT_CALL(observer, OnWalletError()).Times(1);
280 285
281 net::TestURLFetcherFactory factory; 286 net::TestURLFetcherFactory factory;
282 287
283 WalletClient wallet_client(profile_.GetRequestContext()); 288 WalletClient wallet_client(profile_.GetRequestContext());
284 wallet_client.SendExtendedAutofillStatus(true, "", "", "", &observer); 289 wallet_client.SendExtendedAutofillStatus(true, "", "", "", &observer);
285 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 290 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
286 DCHECK(fetcher); 291 ASSERT_TRUE(fetcher);
287 fetcher->set_response_code(net::HTTP_BAD_REQUEST); 292 fetcher->set_response_code(net::HTTP_BAD_REQUEST);
288 fetcher->delegate()->OnURLFetchComplete(fetcher); 293 fetcher->delegate()->OnURLFetchComplete(fetcher);
289 } 294 }
290 295
291 // TODO(ahutter): Add test for EncryptOtp. 296 // TODO(ahutter): Add test for EncryptOtp.
292 // TODO(ahutter): Add retry and failure tests for EncryptOtp, GetWalletItems, 297 // TODO(ahutter): Add failure tests for EncryptOtp, GetWalletItems,
293 // GetFullWallet for when data is missing or invalid. 298 // GetFullWallet for when data is missing or invalid.
294 299
300 TEST_F(WalletClientTest, EscrowSensitiveInformationSuccess) {
301 MockWalletClientObserver observer;
302 EXPECT_CALL(observer, OnDidEscrowSensitiveInformation("abc")).Times(1);
303
304 net::TestURLFetcherFactory factory;
305
306 WalletClient wallet_client(profile_.GetRequestContext());
307 wallet_client.EscrowSensitiveInformation("pan",
308 "cvn",
309 "obfuscated_gaia_id",
310 &observer);
311 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
312 ASSERT_TRUE(fetcher);
313 EXPECT_EQ(kEscrowSensitiveInformationRequest, fetcher->upload_data());
314 fetcher->set_response_code(net::HTTP_OK);
315 fetcher->SetResponseString("abc");
316 fetcher->delegate()->OnURLFetchComplete(fetcher);
317 }
318
319 TEST_F(WalletClientTest, EscrowSensitiveInformationFailure) {
320 MockWalletClientObserver observer;
321 EXPECT_CALL(observer, OnWalletError()).Times(1);
322
323 net::TestURLFetcherFactory factory;
324
325 WalletClient wallet_client(profile_.GetRequestContext());
326 wallet_client.EscrowSensitiveInformation("pan",
327 "cvn",
328 "obfuscated_gaia_id",
329 &observer);
330 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
331 ASSERT_TRUE(fetcher);
332 EXPECT_EQ(kEscrowSensitiveInformationRequest, fetcher->upload_data());
333 fetcher->set_response_code(net::HTTP_OK);
334 fetcher->SetResponseString("");
335 fetcher->delegate()->OnURLFetchComplete(fetcher);
336 }
337
295 TEST_F(WalletClientTest, GetFullWallet) { 338 TEST_F(WalletClientTest, GetFullWallet) {
296 MockWalletClientObserver observer; 339 MockWalletClientObserver observer;
297 EXPECT_CALL(observer, OnGetFullWallet(testing::NotNull())).Times(1); 340 EXPECT_CALL(observer, OnGetFullWallet(testing::NotNull())).Times(1);
298 341
299 net::TestURLFetcherFactory factory; 342 net::TestURLFetcherFactory factory;
300 343
301 WalletClient wallet_client(profile_.GetRequestContext()); 344 WalletClient wallet_client(profile_.GetRequestContext());
302 Cart cart("currency_code", "currency_code"); 345 Cart cart("currency_code", "currency_code");
303 wallet_client.GetFullWallet("instrument_id", 346 wallet_client.GetFullWallet("instrument_id",
304 "shipping_address_id", 347 "shipping_address_id",
305 "merchant_domain", 348 "merchant_domain",
306 cart, 349 cart,
307 "google_transaction_id", 350 "google_transaction_id",
308 "encrypted_otp", 351 "encrypted_otp",
309 "session_material", 352 "session_material",
310 &observer); 353 &observer);
311 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 354 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
312 DCHECK(fetcher); 355 ASSERT_TRUE(fetcher);
313 ASSERT_EQ(kGetFullWalletValidRequest, fetcher->upload_data()); 356 EXPECT_EQ(kGetFullWalletValidRequest, fetcher->upload_data());
314 fetcher->set_response_code(net::HTTP_OK); 357 fetcher->set_response_code(net::HTTP_OK);
315 fetcher->SetResponseString(kGetFullWalletValidResponse); 358 fetcher->SetResponseString(kGetFullWalletValidResponse);
316 fetcher->delegate()->OnURLFetchComplete(fetcher); 359 fetcher->delegate()->OnURLFetchComplete(fetcher);
317 } 360 }
318 361
319 TEST_F(WalletClientTest, AcceptLegalDocuments) { 362 TEST_F(WalletClientTest, AcceptLegalDocuments) {
320 MockWalletClientObserver observer; 363 MockWalletClientObserver observer;
321 EXPECT_CALL(observer, OnAcceptLegalDocuments()).Times(1); 364 EXPECT_CALL(observer, OnAcceptLegalDocuments()).Times(1);
322 365
323 net::TestURLFetcherFactory factory; 366 net::TestURLFetcherFactory factory;
324 367
325 WalletClient wallet_client(profile_.GetRequestContext()); 368 WalletClient wallet_client(profile_.GetRequestContext());
326 std::vector<std::string> doc_ids; 369 std::vector<std::string> doc_ids;
327 doc_ids.push_back("doc_1"); 370 doc_ids.push_back("doc_1");
328 doc_ids.push_back("doc_2"); 371 doc_ids.push_back("doc_2");
329 wallet_client.AcceptLegalDocuments(doc_ids, 372 wallet_client.AcceptLegalDocuments(doc_ids,
330 kGoogleTransactionId, 373 kGoogleTransactionId,
331 &observer); 374 &observer);
332 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 375 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
333 DCHECK(fetcher); 376 ASSERT_TRUE(fetcher);
334 ASSERT_EQ(kAcceptLegalDocumentsValidRequest, fetcher->upload_data()); 377 EXPECT_EQ(kAcceptLegalDocumentsValidRequest, fetcher->upload_data());
335 fetcher->set_response_code(net::HTTP_OK); 378 fetcher->set_response_code(net::HTTP_OK);
336 fetcher->delegate()->OnURLFetchComplete(fetcher); 379 fetcher->delegate()->OnURLFetchComplete(fetcher);
337 } 380 }
338 381
339 TEST_F(WalletClientTest, GetWalletItems) { 382 TEST_F(WalletClientTest, GetWalletItems) {
340 MockWalletClientObserver observer; 383 MockWalletClientObserver observer;
341 EXPECT_CALL(observer, OnGetWalletItems(testing::NotNull())).Times(1); 384 EXPECT_CALL(observer, OnGetWalletItems(testing::NotNull())).Times(1);
342 385
343 net::TestURLFetcherFactory factory; 386 net::TestURLFetcherFactory factory;
344 387
345 WalletClient wallet_client(profile_.GetRequestContext()); 388 WalletClient wallet_client(profile_.GetRequestContext());
346 wallet_client.GetWalletItems(&observer); 389 wallet_client.GetWalletItems(&observer);
347 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 390 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
348 DCHECK(fetcher); 391 ASSERT_TRUE(fetcher);
349 ASSERT_EQ(kGetWalletItemsValidRequest, fetcher->upload_data()); 392 EXPECT_EQ(kGetWalletItemsValidRequest, fetcher->upload_data());
350 fetcher->set_response_code(net::HTTP_OK); 393 fetcher->set_response_code(net::HTTP_OK);
351 fetcher->SetResponseString(kGetWalletItemsValidResponse); 394 fetcher->SetResponseString(kGetWalletItemsValidResponse);
352 fetcher->delegate()->OnURLFetchComplete(fetcher); 395 fetcher->delegate()->OnURLFetchComplete(fetcher);
353 } 396 }
354 397
355 TEST_F(WalletClientTest, SendExtendedAutofillOfStatusSuccess) { 398 TEST_F(WalletClientTest, SendExtendedAutofillOfStatusSuccess) {
356 MockWalletClientObserver observer; 399 MockWalletClientObserver observer;
357 EXPECT_CALL(observer, OnSendExtendedAutofillStatus()).Times(1); 400 EXPECT_CALL(observer, OnSendExtendedAutofillStatus()).Times(1);
358 401
359 net::TestURLFetcherFactory factory; 402 net::TestURLFetcherFactory factory;
360 403
361 WalletClient wallet_client(profile_.GetRequestContext()); 404 WalletClient wallet_client(profile_.GetRequestContext());
362 wallet_client.SendExtendedAutofillStatus(true, 405 wallet_client.SendExtendedAutofillStatus(true,
363 "hostname", 406 "hostname",
364 "", 407 "",
365 "google_transaction_id", 408 "google_transaction_id",
366 &observer); 409 &observer);
367 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 410 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
368 DCHECK(fetcher); 411 ASSERT_TRUE(fetcher);
369 ASSERT_EQ(kSendExtendedAutofillStatusOfSuccessValidRequest, 412 EXPECT_EQ(kSendExtendedAutofillStatusOfSuccessValidRequest,
370 fetcher->upload_data()); 413 fetcher->upload_data());
371 fetcher->set_response_code(net::HTTP_OK); 414 fetcher->set_response_code(net::HTTP_OK);
372 fetcher->delegate()->OnURLFetchComplete(fetcher); 415 fetcher->delegate()->OnURLFetchComplete(fetcher);
373 } 416 }
374 417
375 TEST_F(WalletClientTest, SendExtendedAutofillStatusOfFailure) { 418 TEST_F(WalletClientTest, SendExtendedAutofillStatusOfFailure) {
376 MockWalletClientObserver observer; 419 MockWalletClientObserver observer;
377 EXPECT_CALL(observer, OnSendExtendedAutofillStatus()).Times(1); 420 EXPECT_CALL(observer, OnSendExtendedAutofillStatus()).Times(1);
378 421
379 net::TestURLFetcherFactory factory; 422 net::TestURLFetcherFactory factory;
380 423
381 WalletClient wallet_client(profile_.GetRequestContext()); 424 WalletClient wallet_client(profile_.GetRequestContext());
382 wallet_client.SendExtendedAutofillStatus(false, 425 wallet_client.SendExtendedAutofillStatus(false,
383 "hostname", 426 "hostname",
384 "CANNOT_PROCEED", 427 "CANNOT_PROCEED",
385 "google_transaction_id", 428 "google_transaction_id",
386 &observer); 429 &observer);
387 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 430 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
388 DCHECK(fetcher); 431 ASSERT_TRUE(fetcher);
389 ASSERT_EQ(kSendExtendedAutofillStatusOfFailureValidRequest, 432 EXPECT_EQ(kSendExtendedAutofillStatusOfFailureValidRequest,
390 fetcher->upload_data()); 433 fetcher->upload_data());
391 fetcher->set_response_code(net::HTTP_OK); 434 fetcher->set_response_code(net::HTTP_OK);
392 fetcher->delegate()->OnURLFetchComplete(fetcher); 435 fetcher->delegate()->OnURLFetchComplete(fetcher);
393 } 436 }
394 437
395 } // namespace wallet 438 } // namespace wallet
396 439
OLDNEW
« no previous file with comments | « chrome/browser/autofill/wallet/wallet_client.cc ('k') | chrome/browser/autofill/wallet/wallet_service_url.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698