OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "base/guid.h" | 7 #include "base/guid.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 CreditCard a = original_card; | 333 CreditCard a = original_card; |
334 | 334 |
335 // The new card has a different name, expiration date, and origin. | 335 // The new card has a different name, expiration date, and origin. |
336 CreditCard b = a; | 336 CreditCard b = a; |
337 b.set_guid(base::GenerateGUID()); | 337 b.set_guid(base::GenerateGUID()); |
338 b.set_origin("https://www.example.org"); | 338 b.set_origin("https://www.example.org"); |
339 b.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); | 339 b.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); |
340 b.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("08")); | 340 b.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("08")); |
341 b.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2019")); | 341 b.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2019")); |
342 | 342 |
| 343 // |a| should be updated with the information from |b|. |
343 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); | 344 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
344 EXPECT_EQ("https://www.example.org", a.origin()); | 345 EXPECT_EQ("https://www.example.org", a.origin()); |
345 EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); | 346 EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
346 EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); | 347 EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
347 EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); | 348 EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
348 | 349 |
349 // Try again, but with no name set for |b|. | 350 // Try again, but with no name set for |b|. |
| 351 // |a| should be updated with |b|'s expiration date and keep its original |
| 352 // name. |
350 a = original_card; | 353 a = original_card; |
351 b.SetRawInfo(CREDIT_CARD_NAME_FULL, base::string16()); | 354 b.SetRawInfo(CREDIT_CARD_NAME_FULL, base::string16()); |
352 | 355 |
353 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); | 356 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
354 EXPECT_EQ("https://www.example.org", a.origin()); | 357 EXPECT_EQ("https://www.example.org", a.origin()); |
355 EXPECT_EQ(ASCIIToUTF16("John Dillinger"), | 358 EXPECT_EQ(ASCIIToUTF16("John Dillinger"), |
356 a.GetRawInfo(CREDIT_CARD_NAME_FULL)); | 359 a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
357 EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); | 360 EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
358 EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); | 361 EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
359 | 362 |
360 // Try again, but with only the original card having a verified origin. | 363 // Try again, but with only the original card having a verified origin. |
361 // |a| should be unchanged. | 364 // |a| should be unchanged. |
362 a = original_card; | 365 a = original_card; |
363 a.set_origin("Chrome settings"); | 366 a.set_origin("Chrome settings"); |
364 b.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); | 367 b.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); |
365 | 368 |
366 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); | 369 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
367 EXPECT_EQ("Chrome settings", a.origin()); | 370 EXPECT_EQ("Chrome settings", a.origin()); |
368 EXPECT_EQ(ASCIIToUTF16("John Dillinger"), | 371 EXPECT_EQ(ASCIIToUTF16("John Dillinger"), |
369 a.GetRawInfo(CREDIT_CARD_NAME_FULL)); | 372 a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
370 EXPECT_EQ(ASCIIToUTF16("09"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); | 373 EXPECT_EQ(ASCIIToUTF16("09"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
371 EXPECT_EQ(ASCIIToUTF16("2017"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); | 374 EXPECT_EQ(ASCIIToUTF16("2017"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
372 | 375 |
| 376 // Try again, but with using an expired verified original card. |
| 377 // |a| should not be updated because the name on the cards are not identical. |
| 378 a = original_card; |
| 379 a.set_origin("Chrome settings"); |
| 380 a.SetExpirationYear(2010); |
| 381 |
| 382 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
| 383 EXPECT_EQ("Chrome settings", a.origin()); |
| 384 EXPECT_EQ(ASCIIToUTF16("John Dillinger"), |
| 385 a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
| 386 EXPECT_EQ(ASCIIToUTF16("09"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
| 387 EXPECT_EQ(ASCIIToUTF16("2010"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 388 |
| 389 // Try again, but with using identical name on the cards. |
| 390 // |a|'s expiration date should be updated. |
| 391 a = original_card; |
| 392 a.set_origin("Chrome settings"); |
| 393 a.SetExpirationYear(2010); |
| 394 a.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); |
| 395 |
| 396 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
| 397 EXPECT_EQ("Chrome settings", a.origin()); |
| 398 EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
| 399 EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
| 400 EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 401 |
| 402 // Try again, but with |b| being expired. |
| 403 // |a|'s expiration date should not be updated. |
| 404 a = original_card; |
| 405 a.set_origin("Chrome settings"); |
| 406 a.SetExpirationYear(2010); |
| 407 a.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); |
| 408 b.SetExpirationYear(2009); |
| 409 |
| 410 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
| 411 EXPECT_EQ("Chrome settings", a.origin()); |
| 412 EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
| 413 EXPECT_EQ(ASCIIToUTF16("09"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
| 414 EXPECT_EQ(ASCIIToUTF16("2010"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 415 |
| 416 // Put back |b|'s initial expiration date. |
| 417 b.SetExpirationYear(2019); |
| 418 |
373 // Try again, but with only the new card having a verified origin. | 419 // Try again, but with only the new card having a verified origin. |
| 420 // |a| should be updated. |
374 a = original_card; | 421 a = original_card; |
375 b.set_origin("Chrome settings"); | 422 b.set_origin("Chrome settings"); |
376 | 423 |
377 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); | 424 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
378 EXPECT_EQ("Chrome settings", a.origin()); | 425 EXPECT_EQ("Chrome settings", a.origin()); |
379 EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); | 426 EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
380 EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); | 427 EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
381 EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); | 428 EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
382 | 429 |
383 // Try again, with both cards having a verified origin. | 430 // Try again, with both cards having a verified origin. |
| 431 // |a| should be updated. |
384 a = original_card; | 432 a = original_card; |
385 a.set_origin("Chrome Autofill dialog"); | 433 a.set_origin("Chrome Autofill dialog"); |
386 b.set_origin("Chrome settings"); | 434 b.set_origin("Chrome settings"); |
387 | 435 |
388 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); | 436 EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); |
389 EXPECT_EQ("Chrome settings", a.origin()); | 437 EXPECT_EQ("Chrome settings", a.origin()); |
390 EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); | 438 EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME_FULL)); |
391 EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); | 439 EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
392 EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); | 440 EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
393 | 441 |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 base::string16 card_number = base::ASCIIToUTF16("test"); | 726 base::string16 card_number = base::ASCIIToUTF16("test"); |
679 int month = 1; | 727 int month = 1; |
680 int year = 3000; | 728 int year = 3000; |
681 CreditCard card(card_number, month, year); | 729 CreditCard card(card_number, month, year); |
682 EXPECT_EQ(card_number, card.number()); | 730 EXPECT_EQ(card_number, card.number()); |
683 EXPECT_EQ(month, card.expiration_month()); | 731 EXPECT_EQ(month, card.expiration_month()); |
684 EXPECT_EQ(year, card.expiration_year()); | 732 EXPECT_EQ(year, card.expiration_year()); |
685 } | 733 } |
686 | 734 |
687 } // namespace autofill | 735 } // namespace autofill |
OLD | NEW |