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

Unified Diff: components/autofill/core/browser/validation_unittest.cc

Issue 2713873002: [Payments] Add validation for unsupported credit card types in editor. (Closed)
Patch Set: addressed comments Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/autofill/core/browser/validation.cc ('k') | components/payments_strings.grdp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « components/autofill/core/browser/validation.cc ('k') | components/payments_strings.grdp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698