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

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

Issue 2844463004: Rename card 'type' into 'issuer network.' (Closed)
Patch Set: read -> use Created 3 years, 8 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
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 <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
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
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
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
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
OLDNEW
« no previous file with comments | « components/autofill/core/browser/credit_card.cc ('k') | components/autofill/core/browser/personal_data_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698