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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 "6331101999990016", | 54 "6331101999990016", |
55 "6247130048162403", | 55 "6247130048162403", |
56 }; | 56 }; |
57 const char* const kInvalidNumbers[] = { | 57 const char* const kInvalidNumbers[] = { |
58 "4111 1111 112", /* too short */ | 58 "4111 1111 112", /* too short */ |
59 "41111111111111111115", /* too long */ | 59 "41111111111111111115", /* too long */ |
60 "4111-1111-1111-1110", /* wrong Luhn checksum */ | 60 "4111-1111-1111-1110", /* wrong Luhn checksum */ |
61 "3056 9309 0259 04aa", /* non-digit characters */ | 61 "3056 9309 0259 04aa", /* non-digit characters */ |
62 }; | 62 }; |
63 | 63 |
64 const std::string kUTF8MidlineEllipsis = | 64 const char kUTF8MidlineEllipsis[] = |
65 " " | 65 " " |
66 "\xE2\x80\xA2\xE2\x80\x86" | 66 "\xE2\x80\xA2\xE2\x80\x86" |
67 "\xE2\x80\xA2\xE2\x80\x86" | 67 "\xE2\x80\xA2\xE2\x80\x86" |
68 "\xE2\x80\xA2\xE2\x80\x86" | 68 "\xE2\x80\xA2\xE2\x80\x86" |
69 "\xE2\x80\xA2\xE2\x80\x86"; | 69 "\xE2\x80\xA2\xE2\x80\x86"; |
70 | 70 |
71 } // namespace | 71 } // namespace |
72 | 72 |
73 // Tests credit card summary string generation. This test simulates a variety | 73 // Tests credit card summary string generation. This test simulates a variety |
74 // of different possible summary strings. Variations occur based on the | 74 // of different possible summary strings. Variations occur based on the |
75 // existence of credit card number, month, and year fields. | 75 // existence of credit card number, month, and year fields. |
76 TEST(CreditCardTest, PreviewSummaryAndTypeAndLastFourDigitsStrings) { | 76 TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) { |
77 // Case 0: empty credit card. | 77 // Case 0: empty credit card. |
78 CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com/"); | 78 CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com/"); |
79 base::string16 summary0 = credit_card0.Label(); | 79 base::string16 summary0 = credit_card0.Label(); |
80 EXPECT_EQ(base::string16(), summary0); | 80 EXPECT_EQ(base::string16(), summary0); |
81 base::string16 obfuscated0 = credit_card0.TypeAndLastFourDigits(); | 81 base::string16 obfuscated0 = credit_card0.NetworkAndLastFourDigits(); |
82 EXPECT_EQ(ASCIIToUTF16("Card"), obfuscated0); | 82 EXPECT_EQ(ASCIIToUTF16(std::string("Card")), obfuscated0); |
83 | 83 |
84 // Case 00: Empty credit card with empty strings. | 84 // Case 00: Empty credit card with empty strings. |
85 CreditCard credit_card00(base::GenerateGUID(), "https://www.example.com/"); | 85 CreditCard credit_card00(base::GenerateGUID(), "https://www.example.com/"); |
86 test::SetCreditCardInfo(&credit_card00,"John Dillinger", "", "", ""); | 86 test::SetCreditCardInfo(&credit_card00, "John Dillinger", "", "", ""); |
87 base::string16 summary00 = credit_card00.Label(); | 87 base::string16 summary00 = credit_card00.Label(); |
88 EXPECT_EQ(base::string16(ASCIIToUTF16("John Dillinger")), summary00); | 88 EXPECT_EQ(base::string16(ASCIIToUTF16("John Dillinger")), summary00); |
89 base::string16 obfuscated00 = credit_card00.TypeAndLastFourDigits(); | 89 base::string16 obfuscated00 = credit_card00.NetworkAndLastFourDigits(); |
90 EXPECT_EQ(ASCIIToUTF16("Card"), obfuscated00); | 90 EXPECT_EQ(ASCIIToUTF16(std::string("Card")), obfuscated00); |
91 | 91 |
92 // Case 1: No credit card number. | 92 // Case 1: No credit card number. |
93 CreditCard credit_card1(base::GenerateGUID(), "https://www.example.com/"); | 93 CreditCard credit_card1(base::GenerateGUID(), "https://www.example.com/"); |
94 test::SetCreditCardInfo(&credit_card1,"John Dillinger", "", "01", "2010"); | 94 test::SetCreditCardInfo(&credit_card1, "John Dillinger", "", "01", "2010"); |
95 base::string16 summary1 = credit_card1.Label(); | 95 base::string16 summary1 = credit_card1.Label(); |
96 EXPECT_EQ(base::string16(ASCIIToUTF16("John Dillinger")), summary1); | 96 EXPECT_EQ(base::string16(ASCIIToUTF16("John Dillinger")), summary1); |
97 base::string16 obfuscated1 = credit_card1.TypeAndLastFourDigits(); | 97 base::string16 obfuscated1 = credit_card1.NetworkAndLastFourDigits(); |
98 EXPECT_EQ(ASCIIToUTF16("Card"), obfuscated1); | 98 EXPECT_EQ(ASCIIToUTF16(std::string("Card")), obfuscated1); |
99 | 99 |
100 // Case 2: No month. | 100 // Case 2: No month. |
101 CreditCard credit_card2(base::GenerateGUID(), "https://www.example.com/"); | 101 CreditCard credit_card2(base::GenerateGUID(), "https://www.example.com/"); |
102 test::SetCreditCardInfo( | 102 test::SetCreditCardInfo( |
103 &credit_card2, "John Dillinger", "5105 1051 0510 5100", "", "2010"); | 103 &credit_card2, "John Dillinger", "5105 1051 0510 5100", "", "2010"); |
104 base::string16 summary2 = credit_card2.Label(); | 104 base::string16 summary2 = credit_card2.Label(); |
105 EXPECT_EQ(UTF8ToUTF16("MasterCard" + kUTF8MidlineEllipsis + "5100"), | 105 EXPECT_EQ( |
106 summary2); | 106 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
107 base::string16 obfuscated2 = credit_card2.TypeAndLastFourDigits(); | 107 summary2); |
108 EXPECT_EQ(UTF8ToUTF16("MasterCard" + kUTF8MidlineEllipsis + "5100"), | 108 base::string16 obfuscated2 = credit_card2.NetworkAndLastFourDigits(); |
109 obfuscated2); | 109 EXPECT_EQ( |
| 110 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
| 111 obfuscated2); |
110 | 112 |
111 // Case 3: No year. | 113 // Case 3: No year. |
112 CreditCard credit_card3(base::GenerateGUID(), "https://www.example.com/"); | 114 CreditCard credit_card3(base::GenerateGUID(), "https://www.example.com/"); |
113 test::SetCreditCardInfo( | 115 test::SetCreditCardInfo( |
114 &credit_card3, "John Dillinger", "5105 1051 0510 5100", "01", ""); | 116 &credit_card3, "John Dillinger", "5105 1051 0510 5100", "01", ""); |
115 base::string16 summary3 = credit_card3.Label(); | 117 base::string16 summary3 = credit_card3.Label(); |
116 EXPECT_EQ(UTF8ToUTF16("MasterCard" + kUTF8MidlineEllipsis + "5100"), | 118 EXPECT_EQ( |
117 summary3); | 119 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
118 base::string16 obfuscated3 = credit_card3.TypeAndLastFourDigits(); | 120 summary3); |
119 EXPECT_EQ(UTF8ToUTF16("MasterCard" + kUTF8MidlineEllipsis + "5100"), | 121 base::string16 obfuscated3 = credit_card3.NetworkAndLastFourDigits(); |
120 obfuscated3); | 122 EXPECT_EQ( |
| 123 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
| 124 obfuscated3); |
121 | 125 |
122 // Case 4: Have everything. | 126 // Case 4: Have everything. |
123 CreditCard credit_card4(base::GenerateGUID(), "https://www.example.com/"); | 127 CreditCard credit_card4(base::GenerateGUID(), "https://www.example.com/"); |
124 test::SetCreditCardInfo( | 128 test::SetCreditCardInfo( |
125 &credit_card4, "John Dillinger", "5105 1051 0510 5100", "01", "2010"); | 129 &credit_card4, "John Dillinger", "5105 1051 0510 5100", "01", "2010"); |
126 base::string16 summary4 = credit_card4.Label(); | 130 base::string16 summary4 = credit_card4.Label(); |
127 EXPECT_EQ(UTF8ToUTF16("MasterCard" + kUTF8MidlineEllipsis + "5100, 01/2010"), | 131 EXPECT_EQ(UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + |
| 132 "5100, 01/2010"), |
128 summary4); | 133 summary4); |
129 base::string16 obfuscated4 = credit_card4.TypeAndLastFourDigits(); | 134 base::string16 obfuscated4 = credit_card4.NetworkAndLastFourDigits(); |
130 EXPECT_EQ(UTF8ToUTF16("MasterCard" + kUTF8MidlineEllipsis + "5100"), | 135 EXPECT_EQ( |
131 obfuscated4); | 136 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
| 137 obfuscated4); |
132 | 138 |
133 // Case 5: Very long credit card | 139 // Case 5: Very long credit card |
134 CreditCard credit_card5(base::GenerateGUID(), "https://www.example.com/"); | 140 CreditCard credit_card5(base::GenerateGUID(), "https://www.example.com/"); |
135 test::SetCreditCardInfo( | 141 test::SetCreditCardInfo( |
136 &credit_card5, | 142 &credit_card5, |
137 "John Dillinger", | 143 "John Dillinger", |
138 "0123456789 0123456789 0123456789 5105 1051 0510 5100", "01", "2010"); | 144 "0123456789 0123456789 0123456789 5105 1051 0510 5100", "01", "2010"); |
139 base::string16 summary5 = credit_card5.Label(); | 145 base::string16 summary5 = credit_card5.Label(); |
140 EXPECT_EQ(UTF8ToUTF16("Card" + kUTF8MidlineEllipsis + "5100, 01/2010"), | 146 EXPECT_EQ( |
141 summary5); | 147 UTF8ToUTF16(std::string("Card") + kUTF8MidlineEllipsis + "5100, 01/2010"), |
142 base::string16 obfuscated5 = credit_card5.TypeAndLastFourDigits(); | 148 summary5); |
143 EXPECT_EQ(UTF8ToUTF16("Card" + kUTF8MidlineEllipsis + "5100"), | 149 base::string16 obfuscated5 = credit_card5.NetworkAndLastFourDigits(); |
| 150 EXPECT_EQ(UTF8ToUTF16(std::string("Card") + kUTF8MidlineEllipsis + "5100"), |
144 obfuscated5); | 151 obfuscated5); |
145 } | 152 } |
146 | 153 |
147 TEST(CreditCardTest, AssignmentOperator) { | 154 TEST(CreditCardTest, AssignmentOperator) { |
148 CreditCard a(base::GenerateGUID(), "some origin"); | 155 CreditCard a(base::GenerateGUID(), "some origin"); |
149 test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010"); | 156 test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010"); |
150 | 157 |
151 // Result of assignment should be logically equal to the original profile. | 158 // Result of assignment should be logically equal to the original profile. |
152 CreditCard b(base::GenerateGUID(), "some other origin"); | 159 CreditCard b(base::GenerateGUID(), "some other origin"); |
153 b = a; | 160 b = a; |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 const char* first_card_name; | 263 const char* first_card_name; |
257 const char* first_card_number; | 264 const char* first_card_number; |
258 const char* first_card_exp_mo; | 265 const char* first_card_exp_mo; |
259 const char* first_card_exp_yr; | 266 const char* first_card_exp_yr; |
260 | 267 |
261 CreditCard::RecordType second_card_record_type; | 268 CreditCard::RecordType second_card_record_type; |
262 const char* second_card_name; | 269 const char* second_card_name; |
263 const char* second_card_number; | 270 const char* second_card_number; |
264 const char* second_card_exp_mo; | 271 const char* second_card_exp_mo; |
265 const char* second_card_exp_yr; | 272 const char* second_card_exp_yr; |
266 const char* second_card_type; | 273 const char* second_card_issuer_network; |
267 | 274 |
268 bool is_local_duplicate; | 275 bool is_local_duplicate; |
269 }; | 276 }; |
270 | 277 |
271 class IsLocalDuplicateOfServerCardTest | 278 class IsLocalDuplicateOfServerCardTest |
272 : public testing::TestWithParam<IsLocalDuplicateOfServerCardTestCase> {}; | 279 : public testing::TestWithParam<IsLocalDuplicateOfServerCardTestCase> {}; |
273 | 280 |
274 TEST_P(IsLocalDuplicateOfServerCardTest, IsLocalDuplicateOfServerCard) { | 281 TEST_P(IsLocalDuplicateOfServerCardTest, IsLocalDuplicateOfServerCard) { |
275 auto test_case = GetParam(); | 282 auto test_case = GetParam(); |
276 CreditCard a(base::GenerateGUID(), std::string()); | 283 CreditCard a(base::GenerateGUID(), std::string()); |
277 a.set_record_type(test_case.first_card_record_type); | 284 a.set_record_type(test_case.first_card_record_type); |
278 test::SetCreditCardInfo( | 285 test::SetCreditCardInfo( |
279 &a, test_case.first_card_name, test_case.first_card_number, | 286 &a, test_case.first_card_name, test_case.first_card_number, |
280 test_case.first_card_exp_mo, test_case.first_card_exp_yr); | 287 test_case.first_card_exp_mo, test_case.first_card_exp_yr); |
281 | 288 |
282 CreditCard b(base::GenerateGUID(), std::string()); | 289 CreditCard b(base::GenerateGUID(), std::string()); |
283 b.set_record_type(test_case.second_card_record_type); | 290 b.set_record_type(test_case.second_card_record_type); |
284 test::SetCreditCardInfo( | 291 test::SetCreditCardInfo( |
285 &b, test_case.second_card_name, test_case.second_card_number, | 292 &b, test_case.second_card_name, test_case.second_card_number, |
286 test_case.second_card_exp_mo, test_case.second_card_exp_yr); | 293 test_case.second_card_exp_mo, test_case.second_card_exp_yr); |
287 | 294 |
288 if (test_case.second_card_record_type == CreditCard::MASKED_SERVER_CARD) | 295 if (test_case.second_card_record_type == CreditCard::MASKED_SERVER_CARD) |
289 b.SetTypeForMaskedCard(test_case.second_card_type); | 296 b.SetNetworkForMaskedCard(test_case.second_card_issuer_network); |
290 | 297 |
291 EXPECT_EQ(test_case.is_local_duplicate, a.IsLocalDuplicateOfServerCard(b)) | 298 EXPECT_EQ(test_case.is_local_duplicate, a.IsLocalDuplicateOfServerCard(b)) |
292 << " when comparing cards " << a.Label() << " and " << b.Label(); | 299 << " when comparing cards " << a.Label() << " and " << b.Label(); |
293 } | 300 } |
294 | 301 |
295 INSTANTIATE_TEST_CASE_P( | 302 INSTANTIATE_TEST_CASE_P( |
296 CreditCardTest, | 303 CreditCardTest, |
297 IsLocalDuplicateOfServerCardTest, | 304 IsLocalDuplicateOfServerCardTest, |
298 testing::Values( | 305 testing::Values( |
299 IsLocalDuplicateOfServerCardTestCase{LOCAL_CARD, "", "", "", "", | 306 IsLocalDuplicateOfServerCardTestCase{LOCAL_CARD, "", "", "", "", |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 } | 630 } |
624 | 631 |
625 TEST(CreditCardTest, CreditCardVerificationCode) { | 632 TEST(CreditCardTest, CreditCardVerificationCode) { |
626 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); | 633 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); |
627 | 634 |
628 // The verification code cannot be set, as Chrome does not store this data. | 635 // The verification code cannot be set, as Chrome does not store this data. |
629 card.SetRawInfo(CREDIT_CARD_VERIFICATION_CODE, ASCIIToUTF16("999")); | 636 card.SetRawInfo(CREDIT_CARD_VERIFICATION_CODE, ASCIIToUTF16("999")); |
630 EXPECT_EQ(base::string16(), card.GetRawInfo(CREDIT_CARD_VERIFICATION_CODE)); | 637 EXPECT_EQ(base::string16(), card.GetRawInfo(CREDIT_CARD_VERIFICATION_CODE)); |
631 } | 638 } |
632 | 639 |
633 struct GetCreditCardTypeTestCase { | 640 struct GetCardNetworkTestCase { |
634 std::string card_number; | 641 std::string card_number; |
635 std::string type; | 642 std::string issuer_network; |
636 bool is_valid; | 643 bool is_valid; |
637 }; | 644 }; |
638 | 645 |
639 // We are doing batches here because INSTANTIATE_TEST_CASE_P has a | 646 // We are doing batches here because INSTANTIATE_TEST_CASE_P has a |
640 // 50 upper limit. | 647 // 50 upper limit. |
641 class GetCreditCardTypeTestBatch1 | 648 class GetCardNetworkTestBatch1 |
642 : public testing::TestWithParam<GetCreditCardTypeTestCase> {}; | 649 : public testing::TestWithParam<GetCardNetworkTestCase> {}; |
643 | 650 |
644 TEST_P(GetCreditCardTypeTestBatch1, GetCreditCardType) { | 651 TEST_P(GetCardNetworkTestBatch1, GetCardNetwork) { |
645 auto test_case = GetParam(); | 652 auto test_case = GetParam(); |
646 base::string16 card_number = ASCIIToUTF16(test_case.card_number); | 653 base::string16 card_number = ASCIIToUTF16(test_case.card_number); |
647 SCOPED_TRACE(card_number); | 654 SCOPED_TRACE(card_number); |
648 EXPECT_EQ(test_case.type, CreditCard::GetCreditCardType(card_number)); | 655 EXPECT_EQ(test_case.issuer_network, CreditCard::GetCardNetwork(card_number)); |
649 EXPECT_EQ(test_case.is_valid, IsValidCreditCardNumber(card_number)); | 656 EXPECT_EQ(test_case.is_valid, IsValidCreditCardNumber(card_number)); |
650 } | 657 } |
651 | 658 |
652 INSTANTIATE_TEST_CASE_P( | 659 INSTANTIATE_TEST_CASE_P( |
653 CreditCardTest, | 660 CreditCardTest, |
654 GetCreditCardTypeTestBatch1, | 661 GetCardNetworkTestBatch1, |
655 testing::Values( | 662 testing::Values( |
656 // The relevant sample numbers from | 663 // The relevant sample numbers from |
657 // http://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_ca
rd_numbers.htm | 664 // http://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_ca
rd_numbers.htm |
658 GetCreditCardTypeTestCase{"378282246310005", kAmericanExpressCard, | 665 GetCardNetworkTestCase{"378282246310005", kAmericanExpressCard, true}, |
659 true}, | 666 GetCardNetworkTestCase{"371449635398431", kAmericanExpressCard, true}, |
660 GetCreditCardTypeTestCase{"371449635398431", kAmericanExpressCard, | 667 GetCardNetworkTestCase{"378734493671000", kAmericanExpressCard, true}, |
661 true}, | 668 GetCardNetworkTestCase{"30569309025904", kDinersCard, true}, |
662 GetCreditCardTypeTestCase{"378734493671000", kAmericanExpressCard, | 669 GetCardNetworkTestCase{"38520000023237", kDinersCard, true}, |
663 true}, | 670 GetCardNetworkTestCase{"6011111111111117", kDiscoverCard, true}, |
664 GetCreditCardTypeTestCase{"30569309025904", kDinersCard, true}, | 671 GetCardNetworkTestCase{"6011000990139424", kDiscoverCard, true}, |
665 GetCreditCardTypeTestCase{"38520000023237", kDinersCard, true}, | 672 GetCardNetworkTestCase{"3530111333300000", kJCBCard, true}, |
666 GetCreditCardTypeTestCase{"6011111111111117", kDiscoverCard, true}, | 673 GetCardNetworkTestCase{"3566002020360505", kJCBCard, true}, |
667 GetCreditCardTypeTestCase{"6011000990139424", kDiscoverCard, true}, | 674 GetCardNetworkTestCase{"5555555555554444", kMasterCard, true}, |
668 GetCreditCardTypeTestCase{"3530111333300000", kJCBCard, true}, | 675 GetCardNetworkTestCase{"5105105105105100", kMasterCard, true}, |
669 GetCreditCardTypeTestCase{"3566002020360505", kJCBCard, true}, | 676 GetCardNetworkTestCase{"4111111111111111", kVisaCard, true}, |
670 GetCreditCardTypeTestCase{"5555555555554444", kMasterCard, true}, | 677 GetCardNetworkTestCase{"4012888888881881", kVisaCard, true}, |
671 GetCreditCardTypeTestCase{"5105105105105100", kMasterCard, true}, | 678 GetCardNetworkTestCase{"4222222222222", kVisaCard, true}, |
672 GetCreditCardTypeTestCase{"4111111111111111", kVisaCard, true}, | |
673 GetCreditCardTypeTestCase{"4012888888881881", kVisaCard, true}, | |
674 GetCreditCardTypeTestCase{"4222222222222", kVisaCard, true}, | |
675 | 679 |
676 // The relevant sample numbers from | 680 // The relevant sample numbers from |
677 // https://www.auricsystems.com/sample-credit-card-numbers/ | 681 // https://www.auricsystems.com/sample-credit-card-numbers/ |
678 GetCreditCardTypeTestCase{"343434343434343", kAmericanExpressCard, | 682 GetCardNetworkTestCase{"343434343434343", kAmericanExpressCard, true}, |
679 true}, | 683 GetCardNetworkTestCase{"371144371144376", kAmericanExpressCard, true}, |
680 GetCreditCardTypeTestCase{"371144371144376", kAmericanExpressCard, | 684 GetCardNetworkTestCase{"341134113411347", kAmericanExpressCard, true}, |
681 true}, | 685 GetCardNetworkTestCase{"36438936438936", kDinersCard, true}, |
682 GetCreditCardTypeTestCase{"341134113411347", kAmericanExpressCard, | 686 GetCardNetworkTestCase{"36110361103612", kDinersCard, true}, |
683 true}, | 687 GetCardNetworkTestCase{"36111111111111", kDinersCard, true}, |
684 GetCreditCardTypeTestCase{"36438936438936", kDinersCard, true}, | 688 GetCardNetworkTestCase{"6011016011016011", kDiscoverCard, true}, |
685 GetCreditCardTypeTestCase{"36110361103612", kDinersCard, true}, | 689 GetCardNetworkTestCase{"6011000990139424", kDiscoverCard, true}, |
686 GetCreditCardTypeTestCase{"36111111111111", kDinersCard, true}, | 690 GetCardNetworkTestCase{"6011000000000004", kDiscoverCard, true}, |
687 GetCreditCardTypeTestCase{"6011016011016011", kDiscoverCard, true}, | 691 GetCardNetworkTestCase{"6011000995500000", kDiscoverCard, true}, |
688 GetCreditCardTypeTestCase{"6011000990139424", kDiscoverCard, true}, | 692 GetCardNetworkTestCase{"6500000000000002", kDiscoverCard, true}, |
689 GetCreditCardTypeTestCase{"6011000000000004", kDiscoverCard, true}, | 693 GetCardNetworkTestCase{"3566002020360505", kJCBCard, true}, |
690 GetCreditCardTypeTestCase{"6011000995500000", kDiscoverCard, true}, | 694 GetCardNetworkTestCase{"3528000000000007", kJCBCard, true}, |
691 GetCreditCardTypeTestCase{"6500000000000002", kDiscoverCard, true}, | 695 GetCardNetworkTestCase{"5500005555555559", kMasterCard, true}, |
692 GetCreditCardTypeTestCase{"3566002020360505", kJCBCard, true}, | 696 GetCardNetworkTestCase{"5555555555555557", kMasterCard, true}, |
693 GetCreditCardTypeTestCase{"3528000000000007", kJCBCard, true}, | 697 GetCardNetworkTestCase{"5454545454545454", kMasterCard, true}, |
694 GetCreditCardTypeTestCase{"5500005555555559", kMasterCard, true}, | 698 GetCardNetworkTestCase{"5555515555555551", kMasterCard, true}, |
695 GetCreditCardTypeTestCase{"5555555555555557", kMasterCard, true}, | 699 GetCardNetworkTestCase{"5405222222222226", kMasterCard, true}, |
696 GetCreditCardTypeTestCase{"5454545454545454", kMasterCard, true}, | 700 GetCardNetworkTestCase{"5478050000000007", kMasterCard, true}, |
697 GetCreditCardTypeTestCase{"5555515555555551", kMasterCard, true}, | 701 GetCardNetworkTestCase{"5111005111051128", kMasterCard, true}, |
698 GetCreditCardTypeTestCase{"5405222222222226", kMasterCard, true}, | 702 GetCardNetworkTestCase{"5112345112345114", kMasterCard, true}, |
699 GetCreditCardTypeTestCase{"5478050000000007", kMasterCard, true}, | 703 GetCardNetworkTestCase{"5115915115915118", kMasterCard, true}, |
700 GetCreditCardTypeTestCase{"5111005111051128", kMasterCard, true}, | 704 GetCardNetworkTestCase{"6247130048162403", kUnionPay, true}, |
701 GetCreditCardTypeTestCase{"5112345112345114", kMasterCard, true}, | 705 GetCardNetworkTestCase{"6247130048162403", kUnionPay, true}, |
702 GetCreditCardTypeTestCase{"5115915115915118", kMasterCard, true}, | 706 GetCardNetworkTestCase{"622384452162063648", kUnionPay, true}, |
703 GetCreditCardTypeTestCase{"6247130048162403", kUnionPay, true}, | 707 GetCardNetworkTestCase{"2204883716636153", kMirCard, true}, |
704 GetCreditCardTypeTestCase{"6247130048162403", kUnionPay, true}, | 708 GetCardNetworkTestCase{"2200111234567898", kMirCard, true}, |
705 GetCreditCardTypeTestCase{"622384452162063648", kUnionPay, true}, | 709 GetCardNetworkTestCase{"2200481349288130", kMirCard, true}, |
706 GetCreditCardTypeTestCase{"2204883716636153", kMirCard, true}, | |
707 GetCreditCardTypeTestCase{"2200111234567898", kMirCard, true}, | |
708 GetCreditCardTypeTestCase{"2200481349288130", kMirCard, true}, | |
709 | 710 |
710 // Empty string | 711 // Empty string |
711 GetCreditCardTypeTestCase{std::string(), kGenericCard, false}, | 712 GetCardNetworkTestCase{std::string(), kGenericCard, false}, |
712 | 713 |
713 // Non-numeric | 714 // Non-numeric |
714 GetCreditCardTypeTestCase{"garbage", kGenericCard, false}, | 715 GetCardNetworkTestCase{"garbage", kGenericCard, false}, |
715 GetCreditCardTypeTestCase{"4garbage", kVisaCard, false}, | 716 GetCardNetworkTestCase{"4garbage", kVisaCard, false}, |
716 | 717 |
717 // Fails Luhn check. | 718 // Fails Luhn check. |
718 GetCreditCardTypeTestCase{"4111111111111112", kVisaCard, false}, | 719 GetCardNetworkTestCase{"4111111111111112", kVisaCard, false}, |
719 GetCreditCardTypeTestCase{"6247130048162413", kUnionPay, false}, | 720 GetCardNetworkTestCase{"6247130048162413", kUnionPay, false}, |
720 GetCreditCardTypeTestCase{"2204883716636154", kMirCard, false})); | 721 GetCardNetworkTestCase{"2204883716636154", kMirCard, false})); |
721 | 722 |
722 class GetCreditCardTypeTestBatch2 | 723 class GetCardNetworkTestBatch2 |
723 : public testing::TestWithParam<GetCreditCardTypeTestCase> {}; | 724 : public testing::TestWithParam<GetCardNetworkTestCase> {}; |
724 | 725 |
725 TEST_P(GetCreditCardTypeTestBatch2, GetCreditCardType) { | 726 TEST_P(GetCardNetworkTestBatch2, GetCardNetwork) { |
726 auto test_case = GetParam(); | 727 auto test_case = GetParam(); |
727 base::string16 card_number = ASCIIToUTF16(test_case.card_number); | 728 base::string16 card_number = ASCIIToUTF16(test_case.card_number); |
728 SCOPED_TRACE(card_number); | 729 SCOPED_TRACE(card_number); |
729 EXPECT_EQ(test_case.type, CreditCard::GetCreditCardType(card_number)); | 730 EXPECT_EQ(test_case.issuer_network, CreditCard::GetCardNetwork(card_number)); |
730 EXPECT_EQ(test_case.is_valid, IsValidCreditCardNumber(card_number)); | 731 EXPECT_EQ(test_case.is_valid, IsValidCreditCardNumber(card_number)); |
731 } | 732 } |
732 | 733 |
733 INSTANTIATE_TEST_CASE_P( | 734 INSTANTIATE_TEST_CASE_P( |
734 CreditCardTest, | 735 CreditCardTest, |
735 GetCreditCardTypeTestBatch2, | 736 GetCardNetworkTestBatch2, |
736 testing::Values( | 737 testing::Values( |
737 // Invalid length. | 738 // Invalid length. |
738 GetCreditCardTypeTestCase{"3434343434343434", kAmericanExpressCard, | 739 GetCardNetworkTestCase{"3434343434343434", kAmericanExpressCard, false}, |
739 false}, | 740 GetCardNetworkTestCase{"411111111111116", kVisaCard, false}, |
740 GetCreditCardTypeTestCase{"411111111111116", kVisaCard, false}, | 741 GetCardNetworkTestCase{"220011123456783", kMirCard, false}, |
741 GetCreditCardTypeTestCase{"220011123456783", kMirCard, false}, | |
742 | 742 |
743 // Issuer Identification Numbers (IINs) that Chrome recognizes. | 743 // Issuer Identification Numbers (IINs) that Chrome recognizes. |
744 GetCreditCardTypeTestCase{"4", kVisaCard, false}, | 744 GetCardNetworkTestCase{"4", kVisaCard, false}, |
745 GetCreditCardTypeTestCase{"22", kMirCard, false}, | 745 GetCardNetworkTestCase{"22", kMirCard, false}, |
746 GetCreditCardTypeTestCase{"34", kAmericanExpressCard, false}, | 746 GetCardNetworkTestCase{"34", kAmericanExpressCard, false}, |
747 GetCreditCardTypeTestCase{"37", kAmericanExpressCard, false}, | 747 GetCardNetworkTestCase{"37", kAmericanExpressCard, false}, |
748 GetCreditCardTypeTestCase{"300", kDinersCard, false}, | 748 GetCardNetworkTestCase{"300", kDinersCard, false}, |
749 GetCreditCardTypeTestCase{"301", kDinersCard, false}, | 749 GetCardNetworkTestCase{"301", kDinersCard, false}, |
750 GetCreditCardTypeTestCase{"302", kDinersCard, false}, | 750 GetCardNetworkTestCase{"302", kDinersCard, false}, |
751 GetCreditCardTypeTestCase{"303", kDinersCard, false}, | 751 GetCardNetworkTestCase{"303", kDinersCard, false}, |
752 GetCreditCardTypeTestCase{"304", kDinersCard, false}, | 752 GetCardNetworkTestCase{"304", kDinersCard, false}, |
753 GetCreditCardTypeTestCase{"305", kDinersCard, false}, | 753 GetCardNetworkTestCase{"305", kDinersCard, false}, |
754 GetCreditCardTypeTestCase{"3095", kDinersCard, false}, | 754 GetCardNetworkTestCase{"3095", kDinersCard, false}, |
755 GetCreditCardTypeTestCase{"36", kDinersCard, false}, | 755 GetCardNetworkTestCase{"36", kDinersCard, false}, |
756 GetCreditCardTypeTestCase{"38", kDinersCard, false}, | 756 GetCardNetworkTestCase{"38", kDinersCard, false}, |
757 GetCreditCardTypeTestCase{"39", kDinersCard, false}, | 757 GetCardNetworkTestCase{"39", kDinersCard, false}, |
758 GetCreditCardTypeTestCase{"6011", kDiscoverCard, false}, | 758 GetCardNetworkTestCase{"6011", kDiscoverCard, false}, |
759 GetCreditCardTypeTestCase{"644", kDiscoverCard, false}, | 759 GetCardNetworkTestCase{"644", kDiscoverCard, false}, |
760 GetCreditCardTypeTestCase{"645", kDiscoverCard, false}, | 760 GetCardNetworkTestCase{"645", kDiscoverCard, false}, |
761 GetCreditCardTypeTestCase{"646", kDiscoverCard, false}, | 761 GetCardNetworkTestCase{"646", kDiscoverCard, false}, |
762 GetCreditCardTypeTestCase{"647", kDiscoverCard, false}, | 762 GetCardNetworkTestCase{"647", kDiscoverCard, false}, |
763 GetCreditCardTypeTestCase{"648", kDiscoverCard, false}, | 763 GetCardNetworkTestCase{"648", kDiscoverCard, false}, |
764 GetCreditCardTypeTestCase{"649", kDiscoverCard, false}, | 764 GetCardNetworkTestCase{"649", kDiscoverCard, false}, |
765 GetCreditCardTypeTestCase{"65", kDiscoverCard, false}, | 765 GetCardNetworkTestCase{"65", kDiscoverCard, false}, |
766 GetCreditCardTypeTestCase{"3528", kJCBCard, false}, | 766 GetCardNetworkTestCase{"3528", kJCBCard, false}, |
767 GetCreditCardTypeTestCase{"3531", kJCBCard, false}, | 767 GetCardNetworkTestCase{"3531", kJCBCard, false}, |
768 GetCreditCardTypeTestCase{"3589", kJCBCard, false}, | 768 GetCardNetworkTestCase{"3589", kJCBCard, false}, |
769 GetCreditCardTypeTestCase{"51", kMasterCard, false}, | 769 GetCardNetworkTestCase{"51", kMasterCard, false}, |
770 GetCreditCardTypeTestCase{"52", kMasterCard, false}, | 770 GetCardNetworkTestCase{"52", kMasterCard, false}, |
771 GetCreditCardTypeTestCase{"53", kMasterCard, false}, | 771 GetCardNetworkTestCase{"53", kMasterCard, false}, |
772 GetCreditCardTypeTestCase{"54", kMasterCard, false}, | 772 GetCardNetworkTestCase{"54", kMasterCard, false}, |
773 GetCreditCardTypeTestCase{"55", kMasterCard, false}, | 773 GetCardNetworkTestCase{"55", kMasterCard, false}, |
774 GetCreditCardTypeTestCase{"62", kUnionPay, false}, | 774 GetCardNetworkTestCase{"62", kUnionPay, false}, |
775 | 775 |
776 // Not enough data to determine an IIN uniquely. | 776 // Not enough data to determine an IIN uniquely. |
777 GetCreditCardTypeTestCase{"2", kGenericCard, false}, | 777 GetCardNetworkTestCase{"2", kGenericCard, false}, |
778 GetCreditCardTypeTestCase{"3", kGenericCard, false}, | 778 GetCardNetworkTestCase{"3", kGenericCard, false}, |
779 GetCreditCardTypeTestCase{"30", kGenericCard, false}, | 779 GetCardNetworkTestCase{"30", kGenericCard, false}, |
780 GetCreditCardTypeTestCase{"309", kGenericCard, false}, | 780 GetCardNetworkTestCase{"309", kGenericCard, false}, |
781 GetCreditCardTypeTestCase{"35", kGenericCard, false}, | 781 GetCardNetworkTestCase{"35", kGenericCard, false}, |
782 GetCreditCardTypeTestCase{"5", kGenericCard, false}, | 782 GetCardNetworkTestCase{"5", kGenericCard, false}, |
783 GetCreditCardTypeTestCase{"6", kGenericCard, false}, | 783 GetCardNetworkTestCase{"6", kGenericCard, false}, |
784 GetCreditCardTypeTestCase{"60", kGenericCard, false}, | 784 GetCardNetworkTestCase{"60", kGenericCard, false}, |
785 GetCreditCardTypeTestCase{"601", kGenericCard, false}, | 785 GetCardNetworkTestCase{"601", kGenericCard, false}, |
786 GetCreditCardTypeTestCase{"64", kGenericCard, false})); | 786 GetCardNetworkTestCase{"64", kGenericCard, false})); |
787 | 787 |
788 class GetCreditCardTypeTestBatch3 | 788 class GetCardNetworkTestBatch3 |
789 : public testing::TestWithParam<GetCreditCardTypeTestCase> {}; | 789 : public testing::TestWithParam<GetCardNetworkTestCase> {}; |
790 | 790 |
791 TEST_P(GetCreditCardTypeTestBatch3, GetCreditCardType) { | 791 TEST_P(GetCardNetworkTestBatch3, GetCardNetwork) { |
792 auto test_case = GetParam(); | 792 auto test_case = GetParam(); |
793 base::string16 card_number = ASCIIToUTF16(test_case.card_number); | 793 base::string16 card_number = ASCIIToUTF16(test_case.card_number); |
794 SCOPED_TRACE(card_number); | 794 SCOPED_TRACE(card_number); |
795 EXPECT_EQ(test_case.type, CreditCard::GetCreditCardType(card_number)); | 795 EXPECT_EQ(test_case.issuer_network, CreditCard::GetCardNetwork(card_number)); |
796 EXPECT_EQ(test_case.is_valid, IsValidCreditCardNumber(card_number)); | 796 EXPECT_EQ(test_case.is_valid, IsValidCreditCardNumber(card_number)); |
797 } | 797 } |
798 | 798 |
799 INSTANTIATE_TEST_CASE_P( | 799 INSTANTIATE_TEST_CASE_P( |
800 CreditCardTest, | 800 CreditCardTest, |
801 GetCreditCardTypeTestBatch3, | 801 GetCardNetworkTestBatch3, |
802 testing::Values( | 802 testing::Values( |
803 // Unknown IINs. | 803 // Unknown IINs. |
804 GetCreditCardTypeTestCase{"0", kGenericCard, false}, | 804 GetCardNetworkTestCase{"0", kGenericCard, false}, |
805 GetCreditCardTypeTestCase{"1", kGenericCard, false}, | 805 GetCardNetworkTestCase{"1", kGenericCard, false}, |
806 GetCreditCardTypeTestCase{"306", kGenericCard, false}, | 806 GetCardNetworkTestCase{"306", kGenericCard, false}, |
807 GetCreditCardTypeTestCase{"307", kGenericCard, false}, | 807 GetCardNetworkTestCase{"307", kGenericCard, false}, |
808 GetCreditCardTypeTestCase{"308", kGenericCard, false}, | 808 GetCardNetworkTestCase{"308", kGenericCard, false}, |
809 GetCreditCardTypeTestCase{"3091", kGenericCard, false}, | 809 GetCardNetworkTestCase{"3091", kGenericCard, false}, |
810 GetCreditCardTypeTestCase{"3094", kGenericCard, false}, | 810 GetCardNetworkTestCase{"3094", kGenericCard, false}, |
811 GetCreditCardTypeTestCase{"3096", kGenericCard, false}, | 811 GetCardNetworkTestCase{"3096", kGenericCard, false}, |
812 GetCreditCardTypeTestCase{"31", kGenericCard, false}, | 812 GetCardNetworkTestCase{"31", kGenericCard, false}, |
813 GetCreditCardTypeTestCase{"32", kGenericCard, false}, | 813 GetCardNetworkTestCase{"32", kGenericCard, false}, |
814 GetCreditCardTypeTestCase{"33", kGenericCard, false}, | 814 GetCardNetworkTestCase{"33", kGenericCard, false}, |
815 GetCreditCardTypeTestCase{"351", kGenericCard, false}, | 815 GetCardNetworkTestCase{"351", kGenericCard, false}, |
816 GetCreditCardTypeTestCase{"3527", kGenericCard, false}, | 816 GetCardNetworkTestCase{"3527", kGenericCard, false}, |
817 GetCreditCardTypeTestCase{"359", kGenericCard, false}, | 817 GetCardNetworkTestCase{"359", kGenericCard, false}, |
818 GetCreditCardTypeTestCase{"50", kGenericCard, false}, | 818 GetCardNetworkTestCase{"50", kGenericCard, false}, |
819 GetCreditCardTypeTestCase{"56", kGenericCard, false}, | 819 GetCardNetworkTestCase{"56", kGenericCard, false}, |
820 GetCreditCardTypeTestCase{"57", kGenericCard, false}, | 820 GetCardNetworkTestCase{"57", kGenericCard, false}, |
821 GetCreditCardTypeTestCase{"58", kGenericCard, false}, | 821 GetCardNetworkTestCase{"58", kGenericCard, false}, |
822 GetCreditCardTypeTestCase{"59", kGenericCard, false}, | 822 GetCardNetworkTestCase{"59", kGenericCard, false}, |
823 GetCreditCardTypeTestCase{"600", kGenericCard, false}, | 823 GetCardNetworkTestCase{"600", kGenericCard, false}, |
824 GetCreditCardTypeTestCase{"602", kGenericCard, false}, | 824 GetCardNetworkTestCase{"602", kGenericCard, false}, |
825 GetCreditCardTypeTestCase{"603", kGenericCard, false}, | 825 GetCardNetworkTestCase{"603", kGenericCard, false}, |
826 GetCreditCardTypeTestCase{"604", kGenericCard, false}, | 826 GetCardNetworkTestCase{"604", kGenericCard, false}, |
827 GetCreditCardTypeTestCase{"605", kGenericCard, false}, | 827 GetCardNetworkTestCase{"605", kGenericCard, false}, |
828 GetCreditCardTypeTestCase{"606", kGenericCard, false}, | 828 GetCardNetworkTestCase{"606", kGenericCard, false}, |
829 GetCreditCardTypeTestCase{"607", kGenericCard, false}, | 829 GetCardNetworkTestCase{"607", kGenericCard, false}, |
830 GetCreditCardTypeTestCase{"608", kGenericCard, false}, | 830 GetCardNetworkTestCase{"608", kGenericCard, false}, |
831 GetCreditCardTypeTestCase{"609", kGenericCard, false}, | 831 GetCardNetworkTestCase{"609", kGenericCard, false}, |
832 GetCreditCardTypeTestCase{"61", kGenericCard, false}, | 832 GetCardNetworkTestCase{"61", kGenericCard, false}, |
833 GetCreditCardTypeTestCase{"63", kGenericCard, false}, | 833 GetCardNetworkTestCase{"63", kGenericCard, false}, |
834 GetCreditCardTypeTestCase{"640", kGenericCard, false}, | 834 GetCardNetworkTestCase{"640", kGenericCard, false}, |
835 GetCreditCardTypeTestCase{"641", kGenericCard, false}, | 835 GetCardNetworkTestCase{"641", kGenericCard, false}, |
836 GetCreditCardTypeTestCase{"642", kGenericCard, false}, | 836 GetCardNetworkTestCase{"642", kGenericCard, false}, |
837 GetCreditCardTypeTestCase{"643", kGenericCard, false}, | 837 GetCardNetworkTestCase{"643", kGenericCard, false}, |
838 GetCreditCardTypeTestCase{"66", kGenericCard, false}, | 838 GetCardNetworkTestCase{"66", kGenericCard, false}, |
839 GetCreditCardTypeTestCase{"67", kGenericCard, false}, | 839 GetCardNetworkTestCase{"67", kGenericCard, false}, |
840 GetCreditCardTypeTestCase{"68", kGenericCard, false}, | 840 GetCardNetworkTestCase{"68", kGenericCard, false}, |
841 GetCreditCardTypeTestCase{"69", kGenericCard, false}, | 841 GetCardNetworkTestCase{"69", kGenericCard, false}, |
842 GetCreditCardTypeTestCase{"7", kGenericCard, false}, | 842 GetCardNetworkTestCase{"7", kGenericCard, false}, |
843 GetCreditCardTypeTestCase{"8", kGenericCard, false}, | 843 GetCardNetworkTestCase{"8", kGenericCard, false}, |
844 GetCreditCardTypeTestCase{"9", kGenericCard, false}, | 844 GetCardNetworkTestCase{"9", kGenericCard, false}, |
845 | 845 |
846 // Oddball case: Unknown issuer, but valid Luhn check and plausible | 846 // Oddball case: Unknown issuer, but valid Luhn check and plausible |
847 // length. | 847 // length. |
848 GetCreditCardTypeTestCase{"7000700070007000", kGenericCard, true})); | 848 GetCardNetworkTestCase{"7000700070007000", kGenericCard, true})); |
849 | 849 |
850 TEST(CreditCardTest, LastFourDigits) { | 850 TEST(CreditCardTest, LastFourDigits) { |
851 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); | 851 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); |
852 ASSERT_EQ(base::string16(), card.LastFourDigits()); | 852 ASSERT_EQ(base::string16(), card.LastFourDigits()); |
853 | 853 |
854 test::SetCreditCardInfo(&card, "Baby Face Nelson", | 854 test::SetCreditCardInfo(&card, "Baby Face Nelson", |
855 "5212341234123489", "01", "2010"); | 855 "5212341234123489", "01", "2010"); |
856 ASSERT_EQ(base::ASCIIToUTF16("3489"), card.LastFourDigits()); | 856 ASSERT_EQ(base::ASCIIToUTF16("3489"), card.LastFourDigits()); |
857 | 857 |
858 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("3489")); | 858 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("3489")); |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1068 credit_card0.GetLastUsedDateForDisplay(test_case.app_locale)); | 1068 credit_card0.GetLastUsedDateForDisplay(test_case.app_locale)); |
1069 EXPECT_EQ(test_case.last_used_date, | 1069 EXPECT_EQ(test_case.last_used_date, |
1070 credit_card1.GetLastUsedDateForDisplay(test_case.app_locale)); | 1070 credit_card1.GetLastUsedDateForDisplay(test_case.app_locale)); |
1071 EXPECT_EQ(test_case.last_used_year_ago, | 1071 EXPECT_EQ(test_case.last_used_year_ago, |
1072 credit_card2.GetLastUsedDateForDisplay(test_case.app_locale)); | 1072 credit_card2.GetLastUsedDateForDisplay(test_case.app_locale)); |
1073 variation_params_.ClearAllVariationParams(); | 1073 variation_params_.ClearAllVariationParams(); |
1074 } | 1074 } |
1075 } | 1075 } |
1076 | 1076 |
1077 } // namespace autofill | 1077 } // namespace autofill |
OLD | NEW |