| 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) { | 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.NetworkAndLastFourDigits(); | 81 base::string16 obfuscated0 = credit_card0.NetworkAndLastFourDigits(); |
| 82 EXPECT_EQ(ASCIIToUTF16(std::string("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.NetworkAndLastFourDigits(); | 89 base::string16 obfuscated00 = credit_card00.NetworkAndLastFourDigits(); |
| 90 EXPECT_EQ(ASCIIToUTF16(std::string("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 "1"); |
| 95 base::string16 summary1 = credit_card1.Label(); | 96 base::string16 summary1 = credit_card1.Label(); |
| 96 EXPECT_EQ(base::string16(ASCIIToUTF16("John Dillinger")), summary1); | 97 EXPECT_EQ(base::string16(ASCIIToUTF16("John Dillinger")), summary1); |
| 97 base::string16 obfuscated1 = credit_card1.NetworkAndLastFourDigits(); | 98 base::string16 obfuscated1 = credit_card1.NetworkAndLastFourDigits(); |
| 98 EXPECT_EQ(ASCIIToUTF16(std::string("Card")), obfuscated1); | 99 EXPECT_EQ(ASCIIToUTF16(std::string("Card")), obfuscated1); |
| 99 | 100 |
| 100 // Case 2: No month. | 101 // Case 2: No month. |
| 101 CreditCard credit_card2(base::GenerateGUID(), "https://www.example.com/"); | 102 CreditCard credit_card2(base::GenerateGUID(), "https://www.example.com/"); |
| 102 test::SetCreditCardInfo( | 103 test::SetCreditCardInfo(&credit_card2, "John Dillinger", |
| 103 &credit_card2, "John Dillinger", "5105 1051 0510 5100", "", "2010"); | 104 "5105 1051 0510 5100", "", "2010", "1"); |
| 104 base::string16 summary2 = credit_card2.Label(); | 105 base::string16 summary2 = credit_card2.Label(); |
| 105 EXPECT_EQ( | 106 EXPECT_EQ( |
| 106 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), | 107 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
| 107 summary2); | 108 summary2); |
| 108 base::string16 obfuscated2 = credit_card2.NetworkAndLastFourDigits(); | 109 base::string16 obfuscated2 = credit_card2.NetworkAndLastFourDigits(); |
| 109 EXPECT_EQ( | 110 EXPECT_EQ( |
| 110 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), | 111 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
| 111 obfuscated2); | 112 obfuscated2); |
| 112 | 113 |
| 113 // Case 3: No year. | 114 // Case 3: No year. |
| 114 CreditCard credit_card3(base::GenerateGUID(), "https://www.example.com/"); | 115 CreditCard credit_card3(base::GenerateGUID(), "https://www.example.com/"); |
| 115 test::SetCreditCardInfo( | 116 test::SetCreditCardInfo(&credit_card3, "John Dillinger", |
| 116 &credit_card3, "John Dillinger", "5105 1051 0510 5100", "01", ""); | 117 "5105 1051 0510 5100", "01", "", "1"); |
| 117 base::string16 summary3 = credit_card3.Label(); | 118 base::string16 summary3 = credit_card3.Label(); |
| 118 EXPECT_EQ( | 119 EXPECT_EQ( |
| 119 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), | 120 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
| 120 summary3); | 121 summary3); |
| 121 base::string16 obfuscated3 = credit_card3.NetworkAndLastFourDigits(); | 122 base::string16 obfuscated3 = credit_card3.NetworkAndLastFourDigits(); |
| 122 EXPECT_EQ( | 123 EXPECT_EQ( |
| 123 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), | 124 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
| 124 obfuscated3); | 125 obfuscated3); |
| 125 | 126 |
| 126 // Case 4: Have everything. | 127 // Case 4: Have everything. |
| 127 CreditCard credit_card4(base::GenerateGUID(), "https://www.example.com/"); | 128 CreditCard credit_card4(base::GenerateGUID(), "https://www.example.com/"); |
| 128 test::SetCreditCardInfo( | 129 test::SetCreditCardInfo(&credit_card4, "John Dillinger", |
| 129 &credit_card4, "John Dillinger", "5105 1051 0510 5100", "01", "2010"); | 130 "5105 1051 0510 5100", "01", "2010", "1"); |
| 130 base::string16 summary4 = credit_card4.Label(); | 131 base::string16 summary4 = credit_card4.Label(); |
| 131 EXPECT_EQ(UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + | 132 EXPECT_EQ(UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + |
| 132 "5100, 01/2010"), | 133 "5100, 01/2010"), |
| 133 summary4); | 134 summary4); |
| 134 base::string16 obfuscated4 = credit_card4.NetworkAndLastFourDigits(); | 135 base::string16 obfuscated4 = credit_card4.NetworkAndLastFourDigits(); |
| 135 EXPECT_EQ( | 136 EXPECT_EQ( |
| 136 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), | 137 UTF8ToUTF16(std::string("MasterCard") + kUTF8MidlineEllipsis + "5100"), |
| 137 obfuscated4); | 138 obfuscated4); |
| 138 | 139 |
| 139 // Case 5: Very long credit card | 140 // Case 5: Very long credit card |
| 140 CreditCard credit_card5(base::GenerateGUID(), "https://www.example.com/"); | 141 CreditCard credit_card5(base::GenerateGUID(), "https://www.example.com/"); |
| 141 test::SetCreditCardInfo( | 142 test::SetCreditCardInfo( |
| 142 &credit_card5, | 143 &credit_card5, "John Dillinger", |
| 143 "John Dillinger", | 144 "0123456789 0123456789 0123456789 5105 1051 0510 5100", "01", "2010", |
| 144 "0123456789 0123456789 0123456789 5105 1051 0510 5100", "01", "2010"); | 145 "1"); |
| 145 base::string16 summary5 = credit_card5.Label(); | 146 base::string16 summary5 = credit_card5.Label(); |
| 146 EXPECT_EQ( | 147 EXPECT_EQ( |
| 147 UTF8ToUTF16(std::string("Card") + kUTF8MidlineEllipsis + "5100, 01/2010"), | 148 UTF8ToUTF16(std::string("Card") + kUTF8MidlineEllipsis + "5100, 01/2010"), |
| 148 summary5); | 149 summary5); |
| 149 base::string16 obfuscated5 = credit_card5.NetworkAndLastFourDigits(); | 150 base::string16 obfuscated5 = credit_card5.NetworkAndLastFourDigits(); |
| 150 EXPECT_EQ(UTF8ToUTF16(std::string("Card") + kUTF8MidlineEllipsis + "5100"), | 151 EXPECT_EQ(UTF8ToUTF16(std::string("Card") + kUTF8MidlineEllipsis + "5100"), |
| 151 obfuscated5); | 152 obfuscated5); |
| 152 } | 153 } |
| 153 | 154 |
| 154 TEST(CreditCardTest, AssignmentOperator) { | 155 TEST(CreditCardTest, AssignmentOperator) { |
| 155 CreditCard a(base::GenerateGUID(), "some origin"); | 156 CreditCard a(base::GenerateGUID(), "some origin"); |
| 156 test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010"); | 157 test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010", |
| 158 "1"); |
| 157 | 159 |
| 158 // Result of assignment should be logically equal to the original profile. | 160 // Result of assignment should be logically equal to the original profile. |
| 159 CreditCard b(base::GenerateGUID(), "some other origin"); | 161 CreditCard b(base::GenerateGUID(), "some other origin"); |
| 160 b = a; | 162 b = a; |
| 161 EXPECT_TRUE(a == b); | 163 EXPECT_TRUE(a == b); |
| 162 | 164 |
| 163 // Assignment to self should not change the profile value. | 165 // Assignment to self should not change the profile value. |
| 164 a = a; | 166 a = a; |
| 165 EXPECT_TRUE(a == b); | 167 EXPECT_TRUE(a == b); |
| 166 } | 168 } |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 | 246 |
| 245 // Invalid values. | 247 // Invalid values. |
| 246 SetExpirationDateFromStringTestCase{"13/2016", 0, 2016}, | 248 SetExpirationDateFromStringTestCase{"13/2016", 0, 2016}, |
| 247 SetExpirationDateFromStringTestCase{"16/13", 0, 2013}, | 249 SetExpirationDateFromStringTestCase{"16/13", 0, 2013}, |
| 248 SetExpirationDateFromStringTestCase{"May-2015", 0, 0}, | 250 SetExpirationDateFromStringTestCase{"May-2015", 0, 0}, |
| 249 SetExpirationDateFromStringTestCase{"05-/2045", 0, 0}, | 251 SetExpirationDateFromStringTestCase{"05-/2045", 0, 0}, |
| 250 SetExpirationDateFromStringTestCase{"05_2045", 0, 0})); | 252 SetExpirationDateFromStringTestCase{"05_2045", 0, 0})); |
| 251 | 253 |
| 252 TEST(CreditCardTest, Copy) { | 254 TEST(CreditCardTest, Copy) { |
| 253 CreditCard a(base::GenerateGUID(), "https://www.example.com"); | 255 CreditCard a(base::GenerateGUID(), "https://www.example.com"); |
| 254 test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010"); | 256 test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010", |
| 257 base::GenerateGUID()); |
| 255 | 258 |
| 256 // Clone should be logically equal to the original. | 259 // Clone should be logically equal to the original. |
| 257 CreditCard b(a); | 260 CreditCard b(a); |
| 258 EXPECT_TRUE(a == b); | 261 EXPECT_TRUE(a == b); |
| 259 } | 262 } |
| 260 | 263 |
| 261 struct IsLocalDuplicateOfServerCardTestCase { | 264 struct IsLocalDuplicateOfServerCardTestCase { |
| 262 CreditCard::RecordType first_card_record_type; | 265 CreditCard::RecordType first_card_record_type; |
| 263 const char* first_card_name; | 266 const char* first_card_name; |
| 264 const char* first_card_number; | 267 const char* first_card_number; |
| 265 const char* first_card_exp_mo; | 268 const char* first_card_exp_mo; |
| 266 const char* first_card_exp_yr; | 269 const char* first_card_exp_yr; |
| 270 const char* first_billing_address_id; |
| 267 | 271 |
| 268 CreditCard::RecordType second_card_record_type; | 272 CreditCard::RecordType second_card_record_type; |
| 269 const char* second_card_name; | 273 const char* second_card_name; |
| 270 const char* second_card_number; | 274 const char* second_card_number; |
| 271 const char* second_card_exp_mo; | 275 const char* second_card_exp_mo; |
| 272 const char* second_card_exp_yr; | 276 const char* second_card_exp_yr; |
| 277 const char* second_billing_address_id; |
| 273 const char* second_card_issuer_network; | 278 const char* second_card_issuer_network; |
| 274 | 279 |
| 275 bool is_local_duplicate; | 280 bool is_local_duplicate; |
| 276 }; | 281 }; |
| 277 | 282 |
| 278 class IsLocalDuplicateOfServerCardTest | 283 class IsLocalDuplicateOfServerCardTest |
| 279 : public testing::TestWithParam<IsLocalDuplicateOfServerCardTestCase> {}; | 284 : public testing::TestWithParam<IsLocalDuplicateOfServerCardTestCase> {}; |
| 280 | 285 |
| 281 TEST_P(IsLocalDuplicateOfServerCardTest, IsLocalDuplicateOfServerCard) { | 286 TEST_P(IsLocalDuplicateOfServerCardTest, IsLocalDuplicateOfServerCard) { |
| 282 auto test_case = GetParam(); | 287 auto test_case = GetParam(); |
| 283 CreditCard a(base::GenerateGUID(), std::string()); | 288 CreditCard a(base::GenerateGUID(), std::string()); |
| 284 a.set_record_type(test_case.first_card_record_type); | 289 a.set_record_type(test_case.first_card_record_type); |
| 285 test::SetCreditCardInfo( | 290 test::SetCreditCardInfo( |
| 286 &a, test_case.first_card_name, test_case.first_card_number, | 291 &a, test_case.first_card_name, test_case.first_card_number, |
| 287 test_case.first_card_exp_mo, test_case.first_card_exp_yr); | 292 test_case.first_card_exp_mo, test_case.first_card_exp_yr, |
| 293 test_case.first_billing_address_id); |
| 288 | 294 |
| 289 CreditCard b(base::GenerateGUID(), std::string()); | 295 CreditCard b(base::GenerateGUID(), std::string()); |
| 290 b.set_record_type(test_case.second_card_record_type); | 296 b.set_record_type(test_case.second_card_record_type); |
| 291 test::SetCreditCardInfo( | 297 test::SetCreditCardInfo( |
| 292 &b, test_case.second_card_name, test_case.second_card_number, | 298 &b, test_case.second_card_name, test_case.second_card_number, |
| 293 test_case.second_card_exp_mo, test_case.second_card_exp_yr); | 299 test_case.second_card_exp_mo, test_case.second_card_exp_yr, |
| 300 test_case.second_billing_address_id); |
| 294 | 301 |
| 295 if (test_case.second_card_record_type == CreditCard::MASKED_SERVER_CARD) | 302 if (test_case.second_card_record_type == CreditCard::MASKED_SERVER_CARD) |
| 296 b.SetNetworkForMaskedCard(test_case.second_card_issuer_network); | 303 b.SetNetworkForMaskedCard(test_case.second_card_issuer_network); |
| 297 | 304 |
| 298 EXPECT_EQ(test_case.is_local_duplicate, a.IsLocalDuplicateOfServerCard(b)) | 305 EXPECT_EQ(test_case.is_local_duplicate, a.IsLocalDuplicateOfServerCard(b)) |
| 299 << " when comparing cards " << a.Label() << " and " << b.Label(); | 306 << " when comparing cards " << a.Label() << " and " << b.Label(); |
| 300 } | 307 } |
| 301 | 308 |
| 302 INSTANTIATE_TEST_CASE_P( | 309 INSTANTIATE_TEST_CASE_P( |
| 303 CreditCardTest, | 310 CreditCardTest, |
| 304 IsLocalDuplicateOfServerCardTest, | 311 IsLocalDuplicateOfServerCardTest, |
| 305 testing::Values( | 312 testing::Values( |
| 306 IsLocalDuplicateOfServerCardTestCase{LOCAL_CARD, "", "", "", "", | 313 IsLocalDuplicateOfServerCardTestCase{LOCAL_CARD, "", "", "", "", "", |
| 307 LOCAL_CARD, "", "", "", "", | 314 LOCAL_CARD, "", "", "", "", "", |
| 308 nullptr, false}, | 315 nullptr, false}, |
| 309 IsLocalDuplicateOfServerCardTestCase{LOCAL_CARD, "", "", "", "", | 316 IsLocalDuplicateOfServerCardTestCase{LOCAL_CARD, "", "", "", "", "", |
| 310 FULL_SERVER_CARD, "", "", "", "", | 317 FULL_SERVER_CARD, "", "", "", "", |
| 311 nullptr, true}, | 318 "", nullptr, true}, |
| 312 IsLocalDuplicateOfServerCardTestCase{FULL_SERVER_CARD, "", "", "", "", | 319 IsLocalDuplicateOfServerCardTestCase{FULL_SERVER_CARD, "", "", "", "", |
| 313 FULL_SERVER_CARD, "", "", "", "", | 320 "", FULL_SERVER_CARD, "", "", "", |
| 314 nullptr, false}, | 321 "", "", nullptr, false}, |
| 315 IsLocalDuplicateOfServerCardTestCase{ | 322 IsLocalDuplicateOfServerCardTestCase{ |
| 316 LOCAL_CARD, "John Dillinger", "423456789012", "01", "2010", | 323 LOCAL_CARD, "John Dillinger", "423456789012", "01", "2010", "1", |
| 317 FULL_SERVER_CARD, "John Dillinger", "423456789012", "01", "2010", | 324 FULL_SERVER_CARD, "John Dillinger", "423456789012", "01", "2010", |
| 318 nullptr, true}, | 325 "1", nullptr, true}, |
| 319 IsLocalDuplicateOfServerCardTestCase{ | 326 IsLocalDuplicateOfServerCardTestCase{ |
| 320 LOCAL_CARD, "J Dillinger", "423456789012", "01", "2010", | 327 LOCAL_CARD, "J Dillinger", "423456789012", "01", "2010", "1", |
| 321 FULL_SERVER_CARD, "John Dillinger", "423456789012", "01", "2010", | 328 FULL_SERVER_CARD, "John Dillinger", "423456789012", "01", "2010", |
| 322 nullptr, false}, | 329 "1", nullptr, false}, |
| 323 IsLocalDuplicateOfServerCardTestCase{ | 330 IsLocalDuplicateOfServerCardTestCase{ |
| 324 LOCAL_CARD, "", "423456789012", "01", "2010", FULL_SERVER_CARD, | 331 LOCAL_CARD, "", "423456789012", "01", "2010", "1", FULL_SERVER_CARD, |
| 325 "John Dillinger", "423456789012", "01", "2010", nullptr, true}, | 332 "John Dillinger", "423456789012", "01", "2010", "1", nullptr, true}, |
| 326 IsLocalDuplicateOfServerCardTestCase{ | 333 IsLocalDuplicateOfServerCardTestCase{ |
| 327 LOCAL_CARD, "", "423456789012", "", "", FULL_SERVER_CARD, | 334 LOCAL_CARD, "", "423456789012", "", "", "1", FULL_SERVER_CARD, |
| 328 "John Dillinger", "423456789012", "01", "2010", nullptr, true}, | 335 "John Dillinger", "423456789012", "01", "2010", "1", nullptr, true}, |
| 329 IsLocalDuplicateOfServerCardTestCase{ | 336 IsLocalDuplicateOfServerCardTestCase{ |
| 330 LOCAL_CARD, "", "423456789012", "", "", MASKED_SERVER_CARD, | 337 LOCAL_CARD, "", "423456789012", "", "", "1", MASKED_SERVER_CARD, |
| 331 "John Dillinger", "9012", "01", "2010", kVisaCard, true}, | 338 "John Dillinger", "9012", "01", "2010", "1", kVisaCard, true}, |
| 332 IsLocalDuplicateOfServerCardTestCase{ | 339 IsLocalDuplicateOfServerCardTestCase{ |
| 333 LOCAL_CARD, "", "423456789012", "", "", MASKED_SERVER_CARD, | 340 LOCAL_CARD, "", "423456789012", "", "", "1", MASKED_SERVER_CARD, |
| 334 "John Dillinger", "9012", "01", "2010", kMasterCard, false}, | 341 "John Dillinger", "9012", "01", "2010", "1", kMasterCard, false}, |
| 335 IsLocalDuplicateOfServerCardTestCase{ | 342 IsLocalDuplicateOfServerCardTestCase{ |
| 336 LOCAL_CARD, "John Dillinger", "4234-5678-9012", "01", "2010", | 343 LOCAL_CARD, "John Dillinger", "4234-5678-9012", "01", "2010", "1", |
| 337 FULL_SERVER_CARD, "John Dillinger", "423456789012", "01", "2010", | 344 FULL_SERVER_CARD, "John Dillinger", "423456789012", "01", "2010", |
| 338 nullptr, true})); | 345 "1", nullptr, true}, |
| 346 IsLocalDuplicateOfServerCardTestCase{ |
| 347 LOCAL_CARD, "John Dillinger", "4234-5678-9012", "01", "2010", "1", |
| 348 FULL_SERVER_CARD, "John Dillinger", "423456789012", "01", "2010", |
| 349 "2", nullptr, false})); |
| 339 | 350 |
| 340 TEST(CreditCardTest, HasSameNumberAs) { | 351 TEST(CreditCardTest, HasSameNumberAs) { |
| 341 CreditCard a(base::GenerateGUID(), std::string()); | 352 CreditCard a(base::GenerateGUID(), std::string()); |
| 342 CreditCard b(base::GenerateGUID(), std::string()); | 353 CreditCard b(base::GenerateGUID(), std::string()); |
| 343 | 354 |
| 344 // Empty cards have the same empty number. | 355 // Empty cards have the same empty number. |
| 345 EXPECT_TRUE(a.HasSameNumberAs(b)); | 356 EXPECT_TRUE(a.HasSameNumberAs(b)); |
| 346 EXPECT_TRUE(b.HasSameNumberAs(a)); | 357 EXPECT_TRUE(b.HasSameNumberAs(a)); |
| 347 | 358 |
| 348 // Same number. | 359 // Same number. |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 a.set_guid(base::GenerateGUID()); | 394 a.set_guid(base::GenerateGUID()); |
| 384 b.set_guid(base::GenerateGUID()); | 395 b.set_guid(base::GenerateGUID()); |
| 385 EXPECT_EQ(0, a.Compare(b)); | 396 EXPECT_EQ(0, a.Compare(b)); |
| 386 | 397 |
| 387 // Origins don't count. | 398 // Origins don't count. |
| 388 a.set_origin("apple"); | 399 a.set_origin("apple"); |
| 389 b.set_origin("banana"); | 400 b.set_origin("banana"); |
| 390 EXPECT_EQ(0, a.Compare(b)); | 401 EXPECT_EQ(0, a.Compare(b)); |
| 391 | 402 |
| 392 // Different values produce non-zero results. | 403 // Different values produce non-zero results. |
| 393 test::SetCreditCardInfo(&a, "Jimmy", NULL, NULL, NULL); | 404 test::SetCreditCardInfo(&a, "Jimmy", NULL, NULL, NULL, ""); |
| 394 test::SetCreditCardInfo(&b, "Ringo", NULL, NULL, NULL); | 405 test::SetCreditCardInfo(&b, "Ringo", NULL, NULL, NULL, ""); |
| 395 EXPECT_GT(0, a.Compare(b)); | 406 EXPECT_GT(0, a.Compare(b)); |
| 396 EXPECT_LT(0, b.Compare(a)); | 407 EXPECT_LT(0, b.Compare(a)); |
| 397 } | 408 } |
| 398 | 409 |
| 399 // This method is not compiled for iOS because these resources are not used and | 410 // This method is not compiled for iOS because these resources are not used and |
| 400 // should not be shipped. | 411 // should not be shipped. |
| 401 #if !defined(OS_IOS) | 412 #if !defined(OS_IOS) |
| 402 // Test we get the correct icon for each card type. | 413 // Test we get the correct icon for each card type. |
| 403 TEST(CreditCardTest, IconResourceId) { | 414 TEST(CreditCardTest, IconResourceId) { |
| 404 EXPECT_EQ(IDR_AUTOFILL_CC_AMEX, | 415 EXPECT_EQ(IDR_AUTOFILL_CC_AMEX, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 415 CreditCard::IconResourceId(kMirCard)); | 426 CreditCard::IconResourceId(kMirCard)); |
| 416 EXPECT_EQ(IDR_AUTOFILL_CC_UNIONPAY, | 427 EXPECT_EQ(IDR_AUTOFILL_CC_UNIONPAY, |
| 417 CreditCard::IconResourceId(kUnionPay)); | 428 CreditCard::IconResourceId(kUnionPay)); |
| 418 EXPECT_EQ(IDR_AUTOFILL_CC_VISA, | 429 EXPECT_EQ(IDR_AUTOFILL_CC_VISA, |
| 419 CreditCard::IconResourceId(kVisaCard)); | 430 CreditCard::IconResourceId(kVisaCard)); |
| 420 } | 431 } |
| 421 #endif // #if !defined(OS_IOS) | 432 #endif // #if !defined(OS_IOS) |
| 422 | 433 |
| 423 TEST(CreditCardTest, UpdateFromImportedCard) { | 434 TEST(CreditCardTest, UpdateFromImportedCard) { |
| 424 CreditCard original_card(base::GenerateGUID(), "https://www.example.com"); | 435 CreditCard original_card(base::GenerateGUID(), "https://www.example.com"); |
| 425 test::SetCreditCardInfo( | 436 test::SetCreditCardInfo(&original_card, "John Dillinger", "123456789012", |
| 426 &original_card, "John Dillinger", "123456789012", "09", "2017"); | 437 "09", "2017", "1"); |
| 427 | 438 |
| 428 CreditCard a = original_card; | 439 CreditCard a = original_card; |
| 429 | 440 |
| 430 // The new card has a different name, expiration date, and origin. | 441 // The new card has a different name, expiration date, and origin. |
| 431 CreditCard b = a; | 442 CreditCard b = a; |
| 432 b.set_guid(base::GenerateGUID()); | 443 b.set_guid(base::GenerateGUID()); |
| 433 b.set_origin("https://www.example.org"); | 444 b.set_origin("https://www.example.org"); |
| 434 b.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); | 445 b.SetRawInfo(CREDIT_CARD_NAME_FULL, ASCIIToUTF16("J. Dillinger")); |
| 435 b.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("08")); | 446 b.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("08")); |
| 436 b.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2019")); | 447 b.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2019")); |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 571 SCOPED_TRACE(invalid_number); | 582 SCOPED_TRACE(invalid_number); |
| 572 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(invalid_number)); | 583 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(invalid_number)); |
| 573 EXPECT_FALSE(card.IsValid()); | 584 EXPECT_FALSE(card.IsValid()); |
| 574 } | 585 } |
| 575 } | 586 } |
| 576 | 587 |
| 577 // Verify that we preserve exactly what the user typed for credit card numbers. | 588 // Verify that we preserve exactly what the user typed for credit card numbers. |
| 578 TEST(CreditCardTest, SetRawInfoCreditCardNumber) { | 589 TEST(CreditCardTest, SetRawInfoCreditCardNumber) { |
| 579 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); | 590 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); |
| 580 | 591 |
| 581 test::SetCreditCardInfo(&card, "Bob Dylan", | 592 test::SetCreditCardInfo(&card, "Bob Dylan", "4321-5432-6543-xxxx", "07", |
| 582 "4321-5432-6543-xxxx", "07", "2013"); | 593 "2013", "1"); |
| 583 EXPECT_EQ(ASCIIToUTF16("4321-5432-6543-xxxx"), | 594 EXPECT_EQ(ASCIIToUTF16("4321-5432-6543-xxxx"), |
| 584 card.GetRawInfo(CREDIT_CARD_NUMBER)); | 595 card.GetRawInfo(CREDIT_CARD_NUMBER)); |
| 585 } | 596 } |
| 586 | 597 |
| 587 // Verify that we can handle both numeric and named months. | 598 // Verify that we can handle both numeric and named months. |
| 588 TEST(CreditCardTest, SetExpirationMonth) { | 599 TEST(CreditCardTest, SetExpirationMonth) { |
| 589 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); | 600 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); |
| 590 | 601 |
| 591 card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("05")); | 602 card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("05")); |
| 592 EXPECT_EQ(ASCIIToUTF16("05"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); | 603 EXPECT_EQ(ASCIIToUTF16("05"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 GetCardNetworkTestCase{"9", kGenericCard, false}, | 855 GetCardNetworkTestCase{"9", kGenericCard, false}, |
| 845 | 856 |
| 846 // Oddball case: Unknown issuer, but valid Luhn check and plausible | 857 // Oddball case: Unknown issuer, but valid Luhn check and plausible |
| 847 // length. | 858 // length. |
| 848 GetCardNetworkTestCase{"7000700070007000", kGenericCard, true})); | 859 GetCardNetworkTestCase{"7000700070007000", kGenericCard, true})); |
| 849 | 860 |
| 850 TEST(CreditCardTest, LastFourDigits) { | 861 TEST(CreditCardTest, LastFourDigits) { |
| 851 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); | 862 CreditCard card(base::GenerateGUID(), "https://www.example.com/"); |
| 852 ASSERT_EQ(base::string16(), card.LastFourDigits()); | 863 ASSERT_EQ(base::string16(), card.LastFourDigits()); |
| 853 | 864 |
| 854 test::SetCreditCardInfo(&card, "Baby Face Nelson", | 865 test::SetCreditCardInfo(&card, "Baby Face Nelson", "5212341234123489", "01", |
| 855 "5212341234123489", "01", "2010"); | 866 "2010", "1"); |
| 856 ASSERT_EQ(base::ASCIIToUTF16("3489"), card.LastFourDigits()); | 867 ASSERT_EQ(base::ASCIIToUTF16("3489"), card.LastFourDigits()); |
| 857 | 868 |
| 858 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("3489")); | 869 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("3489")); |
| 859 ASSERT_EQ(base::ASCIIToUTF16("3489"), card.LastFourDigits()); | 870 ASSERT_EQ(base::ASCIIToUTF16("3489"), card.LastFourDigits()); |
| 860 | 871 |
| 861 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("489")); | 872 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("489")); |
| 862 ASSERT_EQ(base::ASCIIToUTF16("489"), card.LastFourDigits()); | 873 ASSERT_EQ(base::ASCIIToUTF16("489"), card.LastFourDigits()); |
| 863 } | 874 } |
| 864 | 875 |
| 865 // Verifies that a credit card should be updated. | 876 // Verifies that a credit card should be updated. |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1015 }; | 1026 }; |
| 1016 base::Time kArbitraryTime; | 1027 base::Time kArbitraryTime; |
| 1017 EXPECT_TRUE( | 1028 EXPECT_TRUE( |
| 1018 base::Time::FromLocalExploded(kTestDateTimeExploded, &kArbitraryTime)); | 1029 base::Time::FromLocalExploded(kTestDateTimeExploded, &kArbitraryTime)); |
| 1019 | 1030 |
| 1020 // Test for added to chrome/chromium. | 1031 // Test for added to chrome/chromium. |
| 1021 CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com"); | 1032 CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com"); |
| 1022 credit_card0.set_use_count(1); | 1033 credit_card0.set_use_count(1); |
| 1023 credit_card0.set_use_date(kArbitraryTime - base::TimeDelta::FromDays(1)); | 1034 credit_card0.set_use_date(kArbitraryTime - base::TimeDelta::FromDays(1)); |
| 1024 test::SetCreditCardInfo(&credit_card0, "John Dillinger", | 1035 test::SetCreditCardInfo(&credit_card0, "John Dillinger", |
| 1025 "423456789012" /* Visa */, "01", "2021"); | 1036 "423456789012" /* Visa */, "01", "2021", "1"); |
| 1026 | 1037 |
| 1027 // Test for last used date. | 1038 // Test for last used date. |
| 1028 CreditCard credit_card1(base::GenerateGUID(), "https://www.example.com"); | 1039 CreditCard credit_card1(base::GenerateGUID(), "https://www.example.com"); |
| 1029 test::SetCreditCardInfo(&credit_card1, "Clyde Barrow", | 1040 test::SetCreditCardInfo(&credit_card1, "Clyde Barrow", |
| 1030 "347666888555" /* American Express */, "04", "2021"); | 1041 "347666888555" /* American Express */, "04", "2021", |
| 1042 "1"); |
| 1031 credit_card1.set_use_count(10); | 1043 credit_card1.set_use_count(10); |
| 1032 credit_card1.set_use_date(kArbitraryTime - base::TimeDelta::FromDays(10)); | 1044 credit_card1.set_use_date(kArbitraryTime - base::TimeDelta::FromDays(10)); |
| 1033 | 1045 |
| 1034 // Test for last used more than one year ago. | 1046 // Test for last used more than one year ago. |
| 1035 CreditCard credit_card2(base::GenerateGUID(), "https://www.example.com"); | 1047 CreditCard credit_card2(base::GenerateGUID(), "https://www.example.com"); |
| 1036 credit_card2.set_use_count(5); | 1048 credit_card2.set_use_count(5); |
| 1037 credit_card2.set_use_date(kArbitraryTime - base::TimeDelta::FromDays(366)); | 1049 credit_card2.set_use_date(kArbitraryTime - base::TimeDelta::FromDays(366)); |
| 1038 test::SetCreditCardInfo(&credit_card2, "Bonnie Parker", | 1050 test::SetCreditCardInfo(&credit_card2, "Bonnie Parker", |
| 1039 "518765432109" /* Mastercard */, "12", "2021"); | 1051 "518765432109" /* Mastercard */, "12", "2021", "1"); |
| 1040 | 1052 |
| 1041 static const struct { | 1053 static const struct { |
| 1042 const char* show_expiration_date; | 1054 const char* show_expiration_date; |
| 1043 const std::string& app_locale; | 1055 const std::string& app_locale; |
| 1044 base::string16 added_to_autofill_date; | 1056 base::string16 added_to_autofill_date; |
| 1045 base::string16 last_used_date; | 1057 base::string16 last_used_date; |
| 1046 base::string16 last_used_year_ago; | 1058 base::string16 last_used_year_ago; |
| 1047 } kTestCases[] = { | 1059 } kTestCases[] = { |
| 1048 // only show last used date. | 1060 // only show last used date. |
| 1049 {"false", "en_US", ASCIIToUTF16("Added Dec 09"), | 1061 {"false", "en_US", ASCIIToUTF16("Added Dec 09"), |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1068 credit_card0.GetLastUsedDateForDisplay(test_case.app_locale)); | 1080 credit_card0.GetLastUsedDateForDisplay(test_case.app_locale)); |
| 1069 EXPECT_EQ(test_case.last_used_date, | 1081 EXPECT_EQ(test_case.last_used_date, |
| 1070 credit_card1.GetLastUsedDateForDisplay(test_case.app_locale)); | 1082 credit_card1.GetLastUsedDateForDisplay(test_case.app_locale)); |
| 1071 EXPECT_EQ(test_case.last_used_year_ago, | 1083 EXPECT_EQ(test_case.last_used_year_ago, |
| 1072 credit_card2.GetLastUsedDateForDisplay(test_case.app_locale)); | 1084 credit_card2.GetLastUsedDateForDisplay(test_case.app_locale)); |
| 1073 variation_params_.ClearAllVariationParams(); | 1085 variation_params_.ClearAllVariationParams(); |
| 1074 } | 1086 } |
| 1075 } | 1087 } |
| 1076 | 1088 |
| 1077 } // namespace autofill | 1089 } // namespace autofill |
| OLD | NEW |