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 "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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |