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

Side by Side Diff: components/autofill/core/browser/credit_card_unittest.cc

Issue 18927003: [Autofill] Don't validate China UnionPay cards with the Luhn checksum. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Parens for order of operations Created 7 years, 5 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 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/guid.h" 6 #include "base/guid.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "components/autofill/core/browser/autofill_common_test.h" 8 #include "components/autofill/core/browser/autofill_common_test.h"
9 #include "components/autofill/core/browser/credit_card.h" 9 #include "components/autofill/core/browser/credit_card.h"
10 #include "components/autofill/core/browser/validation.h" 10 #include "components/autofill/core/browser/validation.h"
(...skipping 16 matching lines...) Expand all
27 "6011 0009 9013 9424", 27 "6011 0009 9013 9424",
28 "3530-1113-3330-0000", 28 "3530-1113-3330-0000",
29 "3566002020360505", 29 "3566002020360505",
30 "5555 5555 5555 4444", 30 "5555 5555 5555 4444",
31 "5105-1051-0510-5100", 31 "5105-1051-0510-5100",
32 "4111111111111111", 32 "4111111111111111",
33 "4012 8888 8888 1881", 33 "4012 8888 8888 1881",
34 "4222-2222-2222-2", 34 "4222-2222-2222-2",
35 "5019717010103742", 35 "5019717010103742",
36 "6331101999990016", 36 "6331101999990016",
37
38 // A UnionPay card that doesn't pass the Luhn checksum
39 "6200000000000000",
37 }; 40 };
38 const char* const kInvalidNumbers[] = { 41 const char* const kInvalidNumbers[] = {
39 "4111 1111 112", /* too short */ 42 "4111 1111 112", /* too short */
40 "41111111111111111115", /* too long */ 43 "41111111111111111115", /* too long */
41 "4111-1111-1111-1110", /* wrong Luhn checksum */ 44 "4111-1111-1111-1110", /* wrong Luhn checksum */
42 "3056 9309 0259 04aa", /* non-digit characters */ 45 "3056 9309 0259 04aa", /* non-digit characters */
43 }; 46 };
44 47
45 } // namespace 48 } // namespace
46 49
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 { "5500005555555559", kMasterCard, true }, 555 { "5500005555555559", kMasterCard, true },
553 { "5555555555555557", kMasterCard, true }, 556 { "5555555555555557", kMasterCard, true },
554 { "5454545454545454", kMasterCard, true }, 557 { "5454545454545454", kMasterCard, true },
555 { "5555515555555551", kMasterCard, true }, 558 { "5555515555555551", kMasterCard, true },
556 { "5405222222222226", kMasterCard, true }, 559 { "5405222222222226", kMasterCard, true },
557 { "5478050000000007", kMasterCard, true }, 560 { "5478050000000007", kMasterCard, true },
558 { "5111005111051128", kMasterCard, true }, 561 { "5111005111051128", kMasterCard, true },
559 { "5112345112345114", kMasterCard, true }, 562 { "5112345112345114", kMasterCard, true },
560 { "5115915115915118", kMasterCard, true }, 563 { "5115915115915118", kMasterCard, true },
561 564
565 // A UnionPay card that doesn't pass the Luhn checksum
566 { "6200000000000000", kUnionPay, true },
567
562 // Empty string 568 // Empty string
563 { std::string(), kGenericCard, false }, 569 { std::string(), kGenericCard, false },
564 570
565 // Non-numeric 571 // Non-numeric
566 { "garbage", kGenericCard, false }, 572 { "garbage", kGenericCard, false },
567 { "4garbage", kVisaCard, false }, 573 { "4garbage", kVisaCard, false },
568 574
569 // Fails Luhn check. 575 // Fails Luhn check.
570 { "4111111111111112", kVisaCard, false }, 576 { "4111111111111112", kVisaCard, false },
571 577
(...skipping 24 matching lines...) Expand all
596 { "649", kDiscoverCard, false }, 602 { "649", kDiscoverCard, false },
597 { "65", kDiscoverCard, false }, 603 { "65", kDiscoverCard, false },
598 { "3528", kJCBCard, false }, 604 { "3528", kJCBCard, false },
599 { "3531", kJCBCard, false }, 605 { "3531", kJCBCard, false },
600 { "3589", kJCBCard, false }, 606 { "3589", kJCBCard, false },
601 { "51", kMasterCard, false }, 607 { "51", kMasterCard, false },
602 { "52", kMasterCard, false }, 608 { "52", kMasterCard, false },
603 { "53", kMasterCard, false }, 609 { "53", kMasterCard, false },
604 { "54", kMasterCard, false }, 610 { "54", kMasterCard, false },
605 { "55", kMasterCard, false }, 611 { "55", kMasterCard, false },
612 { "62", kUnionPay, false },
606 613
607 // Not enough data to determine an IIN uniquely. 614 // Not enough data to determine an IIN uniquely.
608 { "3", kGenericCard, false }, 615 { "3", kGenericCard, false },
609 { "30", kGenericCard, false }, 616 { "30", kGenericCard, false },
610 { "309", kGenericCard, false }, 617 { "309", kGenericCard, false },
611 { "35", kGenericCard, false }, 618 { "35", kGenericCard, false },
612 { "5", kGenericCard, false }, 619 { "5", kGenericCard, false },
613 { "6", kGenericCard, false }, 620 { "6", kGenericCard, false },
614 { "60", kGenericCard, false }, 621 { "60", kGenericCard, false },
615 { "601", kGenericCard, false }, 622 { "601", kGenericCard, false },
(...skipping 23 matching lines...) Expand all
639 { "600", kGenericCard, false }, 646 { "600", kGenericCard, false },
640 { "602", kGenericCard, false }, 647 { "602", kGenericCard, false },
641 { "603", kGenericCard, false }, 648 { "603", kGenericCard, false },
642 { "604", kGenericCard, false }, 649 { "604", kGenericCard, false },
643 { "605", kGenericCard, false }, 650 { "605", kGenericCard, false },
644 { "606", kGenericCard, false }, 651 { "606", kGenericCard, false },
645 { "607", kGenericCard, false }, 652 { "607", kGenericCard, false },
646 { "608", kGenericCard, false }, 653 { "608", kGenericCard, false },
647 { "609", kGenericCard, false }, 654 { "609", kGenericCard, false },
648 { "61", kGenericCard, false }, 655 { "61", kGenericCard, false },
649 { "62", kGenericCard, false },
650 { "63", kGenericCard, false }, 656 { "63", kGenericCard, false },
651 { "640", kGenericCard, false }, 657 { "640", kGenericCard, false },
652 { "641", kGenericCard, false }, 658 { "641", kGenericCard, false },
653 { "642", kGenericCard, false }, 659 { "642", kGenericCard, false },
654 { "643", kGenericCard, false }, 660 { "643", kGenericCard, false },
655 { "66", kGenericCard, false }, 661 { "66", kGenericCard, false },
656 { "67", kGenericCard, false }, 662 { "67", kGenericCard, false },
657 { "68", kGenericCard, false }, 663 { "68", kGenericCard, false },
658 { "69", kGenericCard, false }, 664 { "69", kGenericCard, false },
659 { "7", kGenericCard, false }, 665 { "7", kGenericCard, false },
660 { "8", kGenericCard, false }, 666 { "8", kGenericCard, false },
661 { "9", kGenericCard, false }, 667 { "9", kGenericCard, false },
662 668
663 // Oddball case: Unknown issuer, but valid Luhn check and plausible length. 669 // Oddball case: Unknown issuer, but valid Luhn check and plausible length.
664 { "7000700070007000", kGenericCard, true }, 670 { "7000700070007000", kGenericCard, true },
665 }; 671 };
666 672
667 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { 673 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
668 base::string16 card_number = ASCIIToUTF16(test_cases[i].card_number); 674 base::string16 card_number = ASCIIToUTF16(test_cases[i].card_number);
669 SCOPED_TRACE(card_number); 675 SCOPED_TRACE(card_number);
670 EXPECT_EQ(test_cases[i].type, CreditCard::GetCreditCardType(card_number)); 676 EXPECT_EQ(test_cases[i].type, CreditCard::GetCreditCardType(card_number));
671 EXPECT_EQ(test_cases[i].is_valid, IsValidCreditCardNumber(card_number)); 677 EXPECT_EQ(test_cases[i].is_valid, IsValidCreditCardNumber(card_number));
672 } 678 }
673 } 679 }
674 680
675 } // namespace autofill 681 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/credit_card.cc ('k') | components/autofill/core/browser/validation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698