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 |