| Index: components/autofill/core/browser/validation_unittest.cc
|
| diff --git a/components/autofill/core/browser/validation_unittest.cc b/components/autofill/core/browser/validation_unittest.cc
|
| index c2589da9d7a0a2771c8dedcd5dacf6f1add13834..1e3a6e9d009af5d41e6523985b3fecdee819bec8 100644
|
| --- a/components/autofill/core/browser/validation_unittest.cc
|
| +++ b/components/autofill/core/browser/validation_unittest.cc
|
| @@ -38,24 +38,24 @@ struct SecurityCodeCardTypePair {
|
|
|
| // 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",
|
| - "6247130048162403",
|
| + "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", // Mastercard.
|
| + "5105-1051-0510-5100",
|
| + "4111111111111111", // Visa.
|
| + "4012 8888 8888 1881",
|
| + "4222-2222-2222-2",
|
| + "5019717010103742",
|
| + "6331101999990016",
|
| + "6247130048162403",
|
| };
|
| const char* const kInvalidNumbers[] = {
|
| "4111 1111 112", /* too short */
|
| @@ -230,46 +230,6 @@ INSTANTIATE_TEST_CASE_P(
|
| IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRED)));
|
|
|
| INSTANTIATE_TEST_CASE_P(
|
| - CreditCardNumber,
|
| - AutofillTypeValidationTest,
|
| - testing::Values(
|
| - ValidationCase(kValidNumbers[0], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[1], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[2], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[3], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[4], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[5], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[6], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[7], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[8], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[9], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[10], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[11], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[12], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[13], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[14], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[15], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[16], CREDIT_CARD_NUMBER, true, 0),
|
| - ValidationCase(kValidNumbers[17], CREDIT_CARD_NUMBER, true, 0),
|
| -
|
| - ValidationCase(kInvalidNumbers[0],
|
| - CREDIT_CARD_NUMBER,
|
| - false,
|
| - IDS_PAYMENTS_CARD_NUMBER_INVALID_VALIDATION_MESSAGE),
|
| - ValidationCase(kInvalidNumbers[1],
|
| - CREDIT_CARD_NUMBER,
|
| - false,
|
| - IDS_PAYMENTS_CARD_NUMBER_INVALID_VALIDATION_MESSAGE),
|
| - ValidationCase(kInvalidNumbers[2],
|
| - CREDIT_CARD_NUMBER,
|
| - false,
|
| - IDS_PAYMENTS_CARD_NUMBER_INVALID_VALIDATION_MESSAGE),
|
| - ValidationCase(kInvalidNumbers[3],
|
| - CREDIT_CARD_NUMBER,
|
| - false,
|
| - IDS_PAYMENTS_CARD_NUMBER_INVALID_VALIDATION_MESSAGE)));
|
| -
|
| -INSTANTIATE_TEST_CASE_P(
|
| CreditCardMonth,
|
| AutofillTypeValidationTest,
|
| testing::Values(
|
| @@ -352,4 +312,104 @@ INSTANTIATE_TEST_CASE_P(
|
| false,
|
| IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR)));
|
|
|
| +struct CCNumberCase {
|
| + CCNumberCase(const char* value,
|
| + const std::set<std::string> supported_basic_card_networks,
|
| + bool expected_valid,
|
| + int expected_error_id)
|
| + : value(value),
|
| + supported_basic_card_networks(supported_basic_card_networks),
|
| + expected_valid(expected_valid),
|
| + expected_error_id(expected_error_id) {}
|
| + ~CCNumberCase() {}
|
| +
|
| + const char* const value;
|
| + const std::set<std::string> supported_basic_card_networks;
|
| + const bool expected_valid;
|
| + const int expected_error_id;
|
| +};
|
| +
|
| +class AutofillCCNumberValidationTest
|
| + : public testing::TestWithParam<CCNumberCase> {};
|
| +
|
| +TEST_P(AutofillCCNumberValidationTest, IsValidCreditCardNumber) {
|
| + base::string16 error_message;
|
| + EXPECT_EQ(GetParam().expected_valid,
|
| + IsValidCreditCardNumberForBasicCardNetworks(
|
| + ASCIIToUTF16(GetParam().value),
|
| + GetParam().supported_basic_card_networks, &error_message))
|
| + << "Failed to validate CC number " << GetParam().value;
|
| + if (!GetParam().expected_valid) {
|
| + EXPECT_EQ(l10n_util::GetStringUTF16(GetParam().expected_error_id),
|
| + error_message);
|
| + }
|
| +}
|
| +
|
| +const static std::set<std::string> kAllBasicCardNetworks{
|
| + "amex", "discover", "diners", "jcb",
|
| + "mastercard", "mir", "unionpay", "visa"};
|
| +
|
| +INSTANTIATE_TEST_CASE_P(
|
| + CreditCardNumber,
|
| + AutofillCCNumberValidationTest,
|
| + testing::Values(
|
| + CCNumberCase(kValidNumbers[0], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[1], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[2], kAllBasicCardNetworks, true, 0),
|
| + // Generic card not supported.
|
| + CCNumberCase(kValidNumbers[3],
|
| + kAllBasicCardNetworks,
|
| + false,
|
| + IDS_PAYMENTS_VALIDATION_UNSUPPORTED_CREDIT_CARD_TYPE),
|
| +
|
| + CCNumberCase(kValidNumbers[4], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[5], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[6], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[7], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[8], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[9], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[10], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[11], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[12], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[13], kAllBasicCardNetworks, true, 0),
|
| + CCNumberCase(kValidNumbers[14], kAllBasicCardNetworks, true, 0),
|
| + // Generic cards not supported.
|
| + CCNumberCase(kValidNumbers[15],
|
| + kAllBasicCardNetworks,
|
| + false,
|
| + IDS_PAYMENTS_VALIDATION_UNSUPPORTED_CREDIT_CARD_TYPE),
|
| + CCNumberCase(kValidNumbers[16],
|
| + kAllBasicCardNetworks,
|
| + false,
|
| + IDS_PAYMENTS_VALIDATION_UNSUPPORTED_CREDIT_CARD_TYPE),
|
| +
|
| + CCNumberCase(kValidNumbers[17], kAllBasicCardNetworks, true, 0),
|
| +
|
| + CCNumberCase(kInvalidNumbers[0],
|
| + kAllBasicCardNetworks,
|
| + false,
|
| + IDS_PAYMENTS_CARD_NUMBER_INVALID_VALIDATION_MESSAGE),
|
| + CCNumberCase(kInvalidNumbers[1],
|
| + kAllBasicCardNetworks,
|
| + false,
|
| + IDS_PAYMENTS_CARD_NUMBER_INVALID_VALIDATION_MESSAGE),
|
| + CCNumberCase(kInvalidNumbers[2],
|
| + kAllBasicCardNetworks,
|
| + false,
|
| + IDS_PAYMENTS_CARD_NUMBER_INVALID_VALIDATION_MESSAGE),
|
| + CCNumberCase(kInvalidNumbers[3],
|
| + kAllBasicCardNetworks,
|
| + false,
|
| + IDS_PAYMENTS_CARD_NUMBER_INVALID_VALIDATION_MESSAGE),
|
| +
|
| + // Valid numbers can still be invalid if the type is not supported.
|
| + CCNumberCase(kValidNumbers[10], // Mastercard number.
|
| + {"visa"},
|
| + false,
|
| + IDS_PAYMENTS_VALIDATION_UNSUPPORTED_CREDIT_CARD_TYPE),
|
| + CCNumberCase(kValidNumbers[12], // Visa number.
|
| + {"jcb", "diners", "unionpay", "mastercard"},
|
| + false,
|
| + IDS_PAYMENTS_VALIDATION_UNSUPPORTED_CREDIT_CARD_TYPE)));
|
| +
|
| } // namespace autofill
|
|
|