diff options
Diffstat (limited to 'chromium/components/autofill/core/browser/credit_card_unittest.cc')
-rw-r--r-- | chromium/components/autofill/core/browser/credit_card_unittest.cc | 527 |
1 files changed, 0 insertions, 527 deletions
diff --git a/chromium/components/autofill/core/browser/credit_card_unittest.cc b/chromium/components/autofill/core/browser/credit_card_unittest.cc deleted file mode 100644 index 1e8e27ef45d..00000000000 --- a/chromium/components/autofill/core/browser/credit_card_unittest.cc +++ /dev/null @@ -1,527 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/basictypes.h" -#include "base/guid.h" -#include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" -#include "components/autofill/core/browser/validation.h" -#include "components/autofill/core/common/form_field_data.h" -#include "grit/webkit_resources.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace autofill { -namespace { - -// From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm -const char* const kValidNumbers[] = { - "378282246310005", - "3714 4963 5398 431", - "3787-3449-3671-000", - "5610591081018250", - "3056 9309 0259 04", - "3852-0000-0232-37", - "6011111111111117", - "6011 0009 9013 9424", - "3530-1113-3330-0000", - "3566002020360505", - "5555 5555 5555 4444", - "5105-1051-0510-5100", - "4111111111111111", - "4012 8888 8888 1881", - "4222-2222-2222-2", - "5019717010103742", - "6331101999990016", - - // A UnionPay card that doesn't pass the Luhn checksum - "6200000000000000", -}; -const char* const kInvalidNumbers[] = { - "4111 1111 112", /* too short */ - "41111111111111111115", /* too long */ - "4111-1111-1111-1110", /* wrong Luhn checksum */ - "3056 9309 0259 04aa", /* non-digit characters */ -}; - -} // namespace - -// Tests credit card summary string generation. This test simulates a variety -// of different possible summary strings. Variations occur based on the -// existence of credit card number, month, and year fields. -TEST(CreditCardTest, PreviewSummaryAndObfuscatedNumberStrings) { - // Case 0: empty credit card. - CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com/"); - base::string16 summary0 = credit_card0.Label(); - EXPECT_EQ(base::string16(), summary0); - base::string16 obfuscated0 = credit_card0.ObfuscatedNumber(); - EXPECT_EQ(base::string16(), obfuscated0); - - // Case 00: Empty credit card with empty strings. - CreditCard credit_card00(base::GenerateGUID(), "https://www.example.com/"); - test::SetCreditCardInfo(&credit_card00,"John Dillinger", "", "", ""); - base::string16 summary00 = credit_card00.Label(); - EXPECT_EQ(base::string16(ASCIIToUTF16("John Dillinger")), summary00); - base::string16 obfuscated00 = credit_card00.ObfuscatedNumber(); - EXPECT_EQ(base::string16(), obfuscated00); - - // Case 1: No credit card number. - CreditCard credit_card1(base::GenerateGUID(), "https://www.example.com/"); - test::SetCreditCardInfo(&credit_card1,"John Dillinger", "", "01", "2010"); - base::string16 summary1 = credit_card1.Label(); - EXPECT_EQ(base::string16(ASCIIToUTF16("John Dillinger")), summary1); - base::string16 obfuscated1 = credit_card1.ObfuscatedNumber(); - EXPECT_EQ(base::string16(), obfuscated1); - - // Case 2: No month. - CreditCard credit_card2(base::GenerateGUID(), "https://www.example.com/"); - test::SetCreditCardInfo( - &credit_card2, "John Dillinger", "5105 1051 0510 5100", "", "2010"); - base::string16 summary2 = credit_card2.Label(); - EXPECT_EQ(ASCIIToUTF16("************5100"), summary2); - base::string16 obfuscated2 = credit_card2.ObfuscatedNumber(); - EXPECT_EQ(ASCIIToUTF16("************5100"), obfuscated2); - - // Case 3: No year. - CreditCard credit_card3(base::GenerateGUID(), "https://www.example.com/"); - test::SetCreditCardInfo( - &credit_card3, "John Dillinger", "5105 1051 0510 5100", "01", ""); - base::string16 summary3 = credit_card3.Label(); - EXPECT_EQ(ASCIIToUTF16("************5100"), summary3); - base::string16 obfuscated3 = credit_card3.ObfuscatedNumber(); - EXPECT_EQ(ASCIIToUTF16("************5100"), obfuscated3); - - // Case 4: Have everything. - CreditCard credit_card4(base::GenerateGUID(), "https://www.example.com/"); - test::SetCreditCardInfo( - &credit_card4, "John Dillinger", "5105 1051 0510 5100", "01", "2010"); - base::string16 summary4 = credit_card4.Label(); - EXPECT_EQ(ASCIIToUTF16("************5100, Exp: 01/2010"), summary4); - base::string16 obfuscated4 = credit_card4.ObfuscatedNumber(); - EXPECT_EQ(ASCIIToUTF16("************5100"), obfuscated4); - - // Case 5: Very long credit card - CreditCard credit_card5(base::GenerateGUID(), "https://www.example.com/"); - test::SetCreditCardInfo( - &credit_card5, - "John Dillinger", - "0123456789 0123456789 0123456789 5105 1051 0510 5100", "01", "2010"); - base::string16 summary5 = credit_card5.Label(); - EXPECT_EQ(ASCIIToUTF16("********************5100, Exp: 01/2010"), summary5); - base::string16 obfuscated5 = credit_card5.ObfuscatedNumber(); - EXPECT_EQ(ASCIIToUTF16("********************5100"), obfuscated5); -} - -TEST(CreditCardTest, AssignmentOperator) { - CreditCard a(base::GenerateGUID(), "some origin"); - test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010"); - - // Result of assignment should be logically equal to the original profile. - CreditCard b(base::GenerateGUID(), "some other origin"); - b = a; - EXPECT_TRUE(a == b); - - // Assignment to self should not change the profile value. - a = a; - EXPECT_TRUE(a == b); -} - -TEST(CreditCardTest, Copy) { - CreditCard a(base::GenerateGUID(), "https://www.example.com"); - test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010"); - - // Clone should be logically equal to the original. - CreditCard b(a); - EXPECT_TRUE(a == b); -} - -TEST(CreditCardTest, Compare) { - CreditCard a(base::GenerateGUID(), std::string()); - CreditCard b(base::GenerateGUID(), std::string()); - - // Empty cards are the same. - EXPECT_EQ(0, a.Compare(b)); - - // GUIDs don't count. - a.set_guid(base::GenerateGUID()); - b.set_guid(base::GenerateGUID()); - EXPECT_EQ(0, a.Compare(b)); - - // Origins don't count. - a.set_origin("apple"); - b.set_origin("banana"); - EXPECT_EQ(0, a.Compare(b)); - - // Different values produce non-zero results. - test::SetCreditCardInfo(&a, "Jimmy", NULL, NULL, NULL); - test::SetCreditCardInfo(&b, "Ringo", NULL, NULL, NULL); - EXPECT_GT(0, a.Compare(b)); - EXPECT_LT(0, b.Compare(a)); -} - -// Test we get the correct icon for each card type. -TEST(CreditCardTest, IconResourceId) { - EXPECT_EQ(IDR_AUTOFILL_CC_AMEX, - CreditCard::IconResourceId(kAmericanExpressCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_DINERS, - CreditCard::IconResourceId(kDinersCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_DISCOVER, - CreditCard::IconResourceId(kDiscoverCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_JCB, - CreditCard::IconResourceId(kJCBCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_MASTERCARD, - CreditCard::IconResourceId(kMasterCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_VISA, - CreditCard::IconResourceId(kVisaCard)); -} - -TEST(CreditCardTest, UpdateFromImportedCard) { - CreditCard original_card(base::GenerateGUID(), "https://www.example.com"); - test::SetCreditCardInfo( - &original_card, "John Dillinger", "123456789012", "09", "2017"); - - CreditCard a = original_card; - - // The new card has a different name, expiration date, and origin. - CreditCard b = a; - b.set_guid(base::GenerateGUID()); - b.set_origin("https://www.example.org"); - b.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("J. Dillinger")); - b.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("08")); - b.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2019")); - - EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); - EXPECT_EQ("https://www.example.org", a.origin()); - EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME)); - EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); - - // Try again, but with no name set for |b|. - a = original_card; - b.SetRawInfo(CREDIT_CARD_NAME, base::string16()); - - EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); - EXPECT_EQ("https://www.example.org", a.origin()); - EXPECT_EQ(ASCIIToUTF16("John Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME)); - EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); - - // Try again, but with only the original card having a verified origin. - // |a| should be unchanged. - a = original_card; - a.set_origin("Chrome settings"); - b.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("J. Dillinger")); - - EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); - EXPECT_EQ("Chrome settings", a.origin()); - EXPECT_EQ(ASCIIToUTF16("John Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME)); - EXPECT_EQ(ASCIIToUTF16("09"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(ASCIIToUTF16("2017"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); - - // Try again, but with only the new card having a verified origin. - a = original_card; - b.set_origin("Chrome settings"); - - EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); - EXPECT_EQ("Chrome settings", a.origin()); - EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME)); - EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); - - // Try again, with both cards having a verified origin. - a = original_card; - a.set_origin("Chrome Autofill dialog"); - b.set_origin("Chrome settings"); - - EXPECT_TRUE(a.UpdateFromImportedCard(b, "en-US")); - EXPECT_EQ("Chrome settings", a.origin()); - EXPECT_EQ(ASCIIToUTF16("J. Dillinger"), a.GetRawInfo(CREDIT_CARD_NAME)); - EXPECT_EQ(ASCIIToUTF16("08"), a.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(ASCIIToUTF16("2019"), a.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); - - // Try again, but with |b| having a different card number. - // |a| should be unchanged. - a = original_card; - b.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111")); - - EXPECT_FALSE(a.UpdateFromImportedCard(b, "en-US")); - EXPECT_EQ(original_card, a); -} - -TEST(CreditCardTest, IsComplete) { - CreditCard card(base::GenerateGUID(), "https://www.example.com/"); - EXPECT_FALSE(card.IsComplete()); - card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Wally T. Walrus")); - EXPECT_FALSE(card.IsComplete()); - card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); - EXPECT_FALSE(card.IsComplete()); - card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2014")); - - for (size_t i = 0; i < arraysize(kValidNumbers); ++i) { - SCOPED_TRACE(kValidNumbers[i]); - card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(kValidNumbers[i])); - EXPECT_TRUE(card.IsComplete()); - } - for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { - SCOPED_TRACE(kInvalidNumbers[i]); - card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(kInvalidNumbers[i])); - EXPECT_FALSE(card.IsComplete()); - } -} - -TEST(CreditCardTest, IsValid) { - CreditCard card; - // Invalid because expired - card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); - card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2010")); - card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111")); - EXPECT_FALSE(card.IsValid()); - - // Invalid because card number is not complete - card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("12")); - card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("9999")); - card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("41111")); - EXPECT_FALSE(card.IsValid()); - - // Valid - card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("12")); - card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("9999")); - card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111")); - EXPECT_TRUE(card.IsValid()); -} - -TEST(CreditCardTest, InvalidMastercardNumber) { - CreditCard card(base::GenerateGUID(), "https://www.example.com/"); - - test::SetCreditCardInfo(&card, "Baby Face Nelson", - "5200000000000004", "01", "2010"); - EXPECT_EQ(kMasterCard, card.type()); - EXPECT_FALSE(card.IsComplete()); -} - -// Verify that we preserve exactly what the user typed for credit card numbers. -TEST(CreditCardTest, SetRawInfoCreditCardNumber) { - CreditCard card(base::GenerateGUID(), "https://www.example.com/"); - - test::SetCreditCardInfo(&card, "Bob Dylan", - "4321-5432-6543-xxxx", "07", "2013"); - EXPECT_EQ(ASCIIToUTF16("4321-5432-6543-xxxx"), - card.GetRawInfo(CREDIT_CARD_NUMBER)); -} - -// Verify that we can handle both numeric and named months. -TEST(CreditCardTest, SetExpirationMonth) { - CreditCard card(base::GenerateGUID(), "https://www.example.com/"); - - card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("05")); - EXPECT_EQ(ASCIIToUTF16("05"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(5, card.expiration_month()); - - card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("7")); - EXPECT_EQ(ASCIIToUTF16("07"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(7, card.expiration_month()); - - // This should fail, and preserve the previous value. - card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("January")); - EXPECT_EQ(ASCIIToUTF16("07"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(7, card.expiration_month()); - - card.SetInfo( - AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("January"), "en-US"); - EXPECT_EQ(ASCIIToUTF16("01"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(1, card.expiration_month()); - - card.SetInfo( - AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("Apr"), "en-US"); - EXPECT_EQ(ASCIIToUTF16("04"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); - EXPECT_EQ(4, card.expiration_month()); -} - -TEST(CreditCardTest, CreditCardType) { - CreditCard card(base::GenerateGUID(), "https://www.example.com/"); - - // The card type cannot be set directly. - card.SetRawInfo(CREDIT_CARD_TYPE, ASCIIToUTF16("Visa")); - EXPECT_EQ(base::string16(), card.GetRawInfo(CREDIT_CARD_TYPE)); - - // Setting the number should implicitly set the type. - card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111 1111 1111 1111")); - EXPECT_EQ(ASCIIToUTF16("Visa"), card.GetRawInfo(CREDIT_CARD_TYPE)); -} - -TEST(CreditCardTest, CreditCardVerificationCode) { - CreditCard card(base::GenerateGUID(), "https://www.example.com/"); - - // The verification code cannot be set, as Chrome does not store this data. - card.SetRawInfo(CREDIT_CARD_VERIFICATION_CODE, ASCIIToUTF16("999")); - EXPECT_EQ(base::string16(), card.GetRawInfo(CREDIT_CARD_VERIFICATION_CODE)); -} - - -TEST(CreditCardTest, GetCreditCardType) { - struct { - std::string card_number; - std::string type; - bool is_valid; - } test_cases[] = { - // The relevant sample numbers from - // http://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm - { "378282246310005", kAmericanExpressCard, true }, - { "371449635398431", kAmericanExpressCard, true }, - { "378734493671000", kAmericanExpressCard, true }, - { "30569309025904", kDinersCard, true }, - { "38520000023237", kDinersCard, true }, - { "6011111111111117", kDiscoverCard, true }, - { "6011000990139424", kDiscoverCard, true }, - { "3530111333300000", kJCBCard, true }, - { "3566002020360505", kJCBCard, true }, - { "5555555555554444", kMasterCard, true }, - { "5105105105105100", kMasterCard, true }, - { "4111111111111111", kVisaCard, true }, - { "4012888888881881", kVisaCard, true }, - { "4222222222222", kVisaCard, true }, - - // The relevant sample numbers from - // http://auricsystems.com/support-center/sample-credit-card-numbers/ - { "343434343434343", kAmericanExpressCard, true }, - { "371144371144376", kAmericanExpressCard, true }, - { "341134113411347", kAmericanExpressCard, true }, - { "36438936438936", kDinersCard, true }, - { "36110361103612", kDinersCard, true }, - { "36111111111111", kDinersCard, true }, - { "6011016011016011", kDiscoverCard, true }, - { "6011000990139424", kDiscoverCard, true }, - { "6011000000000004", kDiscoverCard, true }, - { "6011000995500000", kDiscoverCard, true }, - { "6500000000000002", kDiscoverCard, true }, - { "3566002020360505", kJCBCard, true }, - { "3528000000000007", kJCBCard, true }, - { "5500005555555559", kMasterCard, true }, - { "5555555555555557", kMasterCard, true }, - { "5454545454545454", kMasterCard, true }, - { "5555515555555551", kMasterCard, true }, - { "5405222222222226", kMasterCard, true }, - { "5478050000000007", kMasterCard, true }, - { "5111005111051128", kMasterCard, true }, - { "5112345112345114", kMasterCard, true }, - { "5115915115915118", kMasterCard, true }, - - // A UnionPay card that doesn't pass the Luhn checksum - { "6200000000000000", kUnionPay, true }, - - // Empty string - { std::string(), kGenericCard, false }, - - // Non-numeric - { "garbage", kGenericCard, false }, - { "4garbage", kVisaCard, false }, - - // Fails Luhn check. - { "4111111111111112", kVisaCard, false }, - - // Invalid length. - { "3434343434343434", kAmericanExpressCard, false }, - { "411111111111116", kVisaCard, false }, - - // Issuer Identification Numbers (IINs) that Chrome recognizes. - { "4", kVisaCard, false }, - { "34", kAmericanExpressCard, false }, - { "37", kAmericanExpressCard, false }, - { "300", kDinersCard, false }, - { "301", kDinersCard, false }, - { "302", kDinersCard, false }, - { "303", kDinersCard, false }, - { "304", kDinersCard, false }, - { "305", kDinersCard, false }, - { "3095", kDinersCard, false }, - { "36", kDinersCard, false }, - { "38", kDinersCard, false }, - { "39", kDinersCard, false }, - { "6011", kDiscoverCard, false }, - { "644", kDiscoverCard, false }, - { "645", kDiscoverCard, false }, - { "646", kDiscoverCard, false }, - { "647", kDiscoverCard, false }, - { "648", kDiscoverCard, false }, - { "649", kDiscoverCard, false }, - { "65", kDiscoverCard, false }, - { "3528", kJCBCard, false }, - { "3531", kJCBCard, false }, - { "3589", kJCBCard, false }, - { "51", kMasterCard, false }, - { "52", kMasterCard, false }, - { "53", kMasterCard, false }, - { "54", kMasterCard, false }, - { "55", kMasterCard, false }, - { "62", kUnionPay, false }, - - // Not enough data to determine an IIN uniquely. - { "3", kGenericCard, false }, - { "30", kGenericCard, false }, - { "309", kGenericCard, false }, - { "35", kGenericCard, false }, - { "5", kGenericCard, false }, - { "6", kGenericCard, false }, - { "60", kGenericCard, false }, - { "601", kGenericCard, false }, - { "64", kGenericCard, false }, - - // Unknown IINs. - { "0", kGenericCard, false }, - { "1", kGenericCard, false }, - { "2", kGenericCard, false }, - { "306", kGenericCard, false }, - { "307", kGenericCard, false }, - { "308", kGenericCard, false }, - { "3091", kGenericCard, false }, - { "3094", kGenericCard, false }, - { "3096", kGenericCard, false }, - { "31", kGenericCard, false }, - { "32", kGenericCard, false }, - { "33", kGenericCard, false }, - { "351", kGenericCard, false }, - { "3527", kGenericCard, false }, - { "359", kGenericCard, false }, - { "50", kGenericCard, false }, - { "56", kGenericCard, false }, - { "57", kGenericCard, false }, - { "58", kGenericCard, false }, - { "59", kGenericCard, false }, - { "600", kGenericCard, false }, - { "602", kGenericCard, false }, - { "603", kGenericCard, false }, - { "604", kGenericCard, false }, - { "605", kGenericCard, false }, - { "606", kGenericCard, false }, - { "607", kGenericCard, false }, - { "608", kGenericCard, false }, - { "609", kGenericCard, false }, - { "61", kGenericCard, false }, - { "63", kGenericCard, false }, - { "640", kGenericCard, false }, - { "641", kGenericCard, false }, - { "642", kGenericCard, false }, - { "643", kGenericCard, false }, - { "66", kGenericCard, false }, - { "67", kGenericCard, false }, - { "68", kGenericCard, false }, - { "69", kGenericCard, false }, - { "7", kGenericCard, false }, - { "8", kGenericCard, false }, - { "9", kGenericCard, false }, - - // Oddball case: Unknown issuer, but valid Luhn check and plausible length. - { "7000700070007000", kGenericCard, true }, - }; - - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { - base::string16 card_number = ASCIIToUTF16(test_cases[i].card_number); - SCOPED_TRACE(card_number); - EXPECT_EQ(test_cases[i].type, CreditCard::GetCreditCardType(card_number)); - EXPECT_EQ(test_cases[i].is_valid, IsValidCreditCardNumber(card_number)); - } -} - -} // namespace autofill |