Chromium Code Reviews| 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 798f53462bd8be19245263e7d32851f75d83d5b5..a261c10778810c8d1dfe056b0711c8855064be73 100644 |
| --- a/components/autofill/core/browser/validation_unittest.cc |
| +++ b/components/autofill/core/browser/validation_unittest.cc |
| @@ -2,14 +2,19 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include "components/autofill/core/browser/validation.h" |
| + |
| #include <stddef.h> |
| #include "base/macros.h" |
| +#include "base/strings/string16.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/time/time.h" |
| #include "components/autofill/core/browser/credit_card.h" |
| -#include "components/autofill/core/browser/validation.h" |
| +#include "components/autofill/core/browser/field_types.h" |
| +#include "grit/components_strings.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +#include "ui/base/l10n/l10n_util.h" |
| using base::ASCIIToUTF16; |
| @@ -148,4 +153,208 @@ TEST(AutofillValidation, IsValidEmailAddress) { |
| } |
| } |
| +struct ValidationCase { |
| + ValidationCase(const char* value, |
| + ServerFieldType field_type, |
| + bool expected_valid, |
| + int expected_error_id) |
| + : value(value), |
| + field_type(field_type), |
| + expected_valid(expected_valid), |
| + expected_error_id(expected_error_id) {} |
| + ~ValidationCase() {} |
| + |
| + const char* value; |
|
please use gerrit instead
2017/02/07 21:55:22
const char* const
(First const says don't change
Mathieu
2017/02/08 02:03:25
Done.
|
| + ServerFieldType field_type; |
|
please use gerrit instead
2017/02/07 21:55:22
const
Mathieu
2017/02/08 02:03:25
Done.
|
| + bool expected_valid; |
|
please use gerrit instead
2017/02/07 21:55:22
const
Mathieu
2017/02/08 02:03:25
Done.
|
| + int expected_error_id; |
|
please use gerrit instead
2017/02/07 21:55:22
const
Mathieu
2017/02/08 02:03:25
Done.
|
| +}; |
| + |
| +class AutofillTypeValidationTest |
| + : public testing::TestWithParam<ValidationCase> {}; |
| + |
| +TEST_P(AutofillTypeValidationTest, IsValidForType) { |
| + base::string16 error_message; |
| + EXPECT_EQ(GetParam().expected_valid, |
| + IsValidForType(ASCIIToUTF16(GetParam().value), |
| + GetParam().field_type, &error_message)) |
| + << "Failed to validate " << GetParam().value << " (type " |
| + << GetParam().field_type << ")"; |
| + if (!GetParam().expected_valid) { |
| + EXPECT_EQ(l10n_util::GetStringUTF16(GetParam().expected_error_id), |
| + error_message); |
| + } |
| +} |
| + |
| +INSTANTIATE_TEST_CASE_P( |
| + CreditCardExpDate, |
| + AutofillTypeValidationTest, |
| + testing::Values( |
| + ValidationCase("05/2087", CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, true, 0), |
| + ValidationCase("05-2087", CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, true, 0), |
| + ValidationCase("052087", CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, true, 0), |
| + ValidationCase("05|2087", CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, true, 0), |
| + |
| + ValidationCase("05/2012", |
| + CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED), |
| + ValidationCase( |
| + "MM/2012", |
| + CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE), |
| + ValidationCase( |
| + "05/12", |
| + CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE), |
| + ValidationCase( |
| + "05/45", |
| + CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE), |
| + ValidationCase( |
| + "05/1987", |
| + CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE), |
| + |
| + ValidationCase("05/87", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0), |
| + ValidationCase("05-87", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0), |
| + ValidationCase("0587", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0), |
| + ValidationCase("05|87", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0), |
| + ValidationCase( |
| + "05/1987", |
| + CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE), |
| + ValidationCase("05/12", |
| + CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_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_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_NUMBER), |
| + ValidationCase(kInvalidNumbers[1], |
| + CREDIT_CARD_NUMBER, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_NUMBER), |
| + ValidationCase(kInvalidNumbers[2], |
| + CREDIT_CARD_NUMBER, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_NUMBER), |
| + ValidationCase(kInvalidNumbers[3], |
| + CREDIT_CARD_NUMBER, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_NUMBER))); |
| + |
| +INSTANTIATE_TEST_CASE_P( |
| + CreditCardMonth, |
| + AutofillTypeValidationTest, |
| + testing::Values( |
| + ValidationCase("01", CREDIT_CARD_EXP_MONTH, true, 0), |
| + ValidationCase("1", CREDIT_CARD_EXP_MONTH, true, 0), |
| + ValidationCase("12", CREDIT_CARD_EXP_MONTH, true, 0), |
| + ValidationCase( |
| + "0", |
| + CREDIT_CARD_EXP_MONTH, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_MONTH), |
| + ValidationCase( |
| + "-1", |
| + CREDIT_CARD_EXP_MONTH, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_MONTH), |
| + ValidationCase( |
| + "13", |
| + CREDIT_CARD_EXP_MONTH, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_MONTH))); |
| + |
| +INSTANTIATE_TEST_CASE_P( |
| + CreditCardYear, |
| + AutofillTypeValidationTest, |
| + testing::Values( |
| + /* 2-digit year */ |
| + ValidationCase("87", CREDIT_CARD_EXP_2_DIGIT_YEAR, true, 0), |
| + // These are considered expired in the context of this millenium. |
| + ValidationCase("02", |
| + CREDIT_CARD_EXP_2_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED), |
| + ValidationCase("15", |
| + CREDIT_CARD_EXP_2_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED), |
| + // Invalid formats. |
| + ValidationCase( |
| + "1", |
| + CREDIT_CARD_EXP_2_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR), |
| + ValidationCase( |
| + "123", |
| + CREDIT_CARD_EXP_2_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR), |
| + ValidationCase( |
| + "2087", |
| + CREDIT_CARD_EXP_2_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR), |
| + |
| + /* 4-digit year */ |
| + ValidationCase("2087", CREDIT_CARD_EXP_4_DIGIT_YEAR, true, 0), |
| + // Expired. |
| + ValidationCase("2000", |
| + CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED), |
| + ValidationCase("2015", |
| + CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED), |
| + // Invalid formats. |
| + ValidationCase( |
| + "00", |
| + CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR), |
| + ValidationCase( |
| + "123", |
| + CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR), |
| + ValidationCase( |
| + "87", |
| + CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| + false, |
| + IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR))); |
| + |
| } // namespace autofill |