| Index: chrome/browser/autofill/validation_unittest.cc
|
| diff --git a/chrome/browser/autofill/validation_unittest.cc b/chrome/browser/autofill/validation_unittest.cc
|
| index bb94a0fcc07796f9befdeed660c5e2eea9ccba6d..077582c904b1bf030463d0652805fc7bf45bb600 100644
|
| --- a/chrome/browser/autofill/validation_unittest.cc
|
| +++ b/chrome/browser/autofill/validation_unittest.cc
|
| @@ -2,12 +2,19 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "base/time.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/browser/autofill/validation.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace {
|
|
|
| +// Test data for expiration date validation.
|
| +struct DateTestData {
|
| + const char* const value; // Expiration date.
|
| + int digits; // Number of expected digits for expiration year.
|
| +};
|
| +
|
| // From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm
|
| const char* const kValidNumbers[] = {
|
| "378282246310005",
|
| @@ -34,7 +41,78 @@ const char* const kInvalidNumbers[] = {
|
| "4111-1111-1111-1110", /* wrong Luhn checksum */
|
| "3056 9309 0259 04aa", /* non-digit characters */
|
| };
|
| -
|
| +const char kCurrentDate[]="1 May 2013";
|
| +DateTestData kValidCCYears[] = {
|
| + { "13", 2 }, // Current year.
|
| + { "2013", 4 }, // Current year.
|
| + { "23", 2 }, // Future year.
|
| + { "2023", 4 }, // Future year.
|
| +};
|
| +DateTestData kInvalidCCYears[] = {
|
| + { "12", 2 }, // Past year.
|
| + { "2012", 4 }, // Past year.
|
| + { "1812", 4 }, // Past year.
|
| + { "rr", 2 }, // Invalid characters.
|
| + { "2r", 2 }, // Invalid characters.
|
| + { "rrrr", 4 }, // Invalid characters.
|
| + { "2rrr", 4 }, // Invalid characters.
|
| + { "3", 2 }, // string too short.
|
| + { "333", 4 }, // string too short.
|
| + { "333", 2 }, // string too long.
|
| + { "33333", 4 }, // string too long.
|
| +};
|
| +DateTestData kValidCCDates[] = {
|
| + { "05/13", 2 }, // Current month & year.
|
| + { "05/2013", 4 }, // Current month & year.
|
| + { "13-05", 2 }, // Current month & year.
|
| + { "2013-05", 4 }, // Current month & year.
|
| + { "01/14", 2 }, // Next month & year.
|
| + { "01/2014", 4 }, // Next month & year.
|
| + { "14-01", 2 }, // Next month & year.
|
| + { "2014-01", 4 }, // Next month & year.
|
| +};
|
| +DateTestData kInvalidCCDates[] = {
|
| + { "04/13", 2 }, // Past month.
|
| + { "04/2013", 4 }, // Past month.
|
| + { "13-04", 2 }, // Past month.
|
| + { "2013-04", 4 }, // Past month.
|
| + { "12/12", 2 }, // Past month.
|
| + { "12/2012", 4 }, // Past year.
|
| + { "12-12", 2 }, // Past year.
|
| + { "2012-12", 4 }, // Past year.
|
| + { "1/14", 2 }, // Month too short.
|
| + { "1/2014", 4 }, // Month too short.
|
| + { "14-1", 2 }, // Month too short.
|
| + { "2014-1", 4 }, // Month too short.
|
| + { "111/14", 2 }, // Month too long.
|
| + { "111/2014", 4 }, // Month too long.
|
| + { "14-111", 2 }, // Month too long.
|
| + { "2014-111", 4 }, // Month too long.
|
| + { "12/133", 2 }, // Year too long.
|
| + { "12/20133", 4 }, // Year too long.
|
| + { "133-12", 2 }, // Year too long.
|
| + { "20133-12", 4 }, // Year too long.
|
| + { "12/1a", 2 }, // Invalid character (month).
|
| + { "12/20a3", 4 }, // Invalid character (month).
|
| + { "13-1a", 2 }, // Invalid character (month).
|
| + { "2013-1a", 4 }, // Invalid character (month).
|
| + { "12/a3", 2 }, // Invalid character (year).
|
| + { "12/2a13", 4 }, // Invalid character (year).
|
| + { "a3-12", 2 }, // Invalid character (year).
|
| + { "2a13-12", 4 }, // Invalid character (year).
|
| + { "12+12", 2 }, // Invalid separator.
|
| + { "12+2012", 4 }, // Invalid separator.
|
| + { "2012+12", 4 }, // Invalid separator.
|
| +};
|
| +const char* const kValidCSC[] = {
|
| + "323", // 3-digit CSC.
|
| + "3234", // 4-digit CSC.
|
| +};
|
| +const char* const kInvalidCSC[] = {
|
| + "32", // CSC too short.
|
| + "12345", // CSC too long.
|
| + "asd", // non-numeric CSC.
|
| +};
|
| } // namespace
|
|
|
| TEST(AutofillValidation, IsValidCreditCardNumber) {
|
| @@ -49,3 +127,59 @@ TEST(AutofillValidation, IsValidCreditCardNumber) {
|
| autofill::IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i])));
|
| }
|
| }
|
| +
|
| +TEST(AutofillValidation, IsValidCreditCardExpirationYear)
|
| +{
|
| + base::Time now;
|
| + ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now));
|
| +
|
| + for (size_t i = 0; i < arraysize(kValidCCYears); ++i) {
|
| + const DateTestData data = kValidCCYears[i];
|
| + SCOPED_TRACE(data.value);
|
| + EXPECT_TRUE(
|
| + autofill::IsValidCreditCardExpirationYear(
|
| + ASCIIToUTF16(data.value), data.digits, now));
|
| + }
|
| + for (size_t i = 0; i < arraysize(kInvalidCCYears); ++i) {
|
| + const DateTestData data = kInvalidCCYears[i];
|
| + SCOPED_TRACE(data.value);
|
| + EXPECT_FALSE(
|
| + autofill::IsValidCreditCardExpirationYear(
|
| + ASCIIToUTF16(data.value), data.digits, now));
|
| + }
|
| +}
|
| +
|
| +TEST(AutofillValidation, IsValidCreditCardExpirationDate)
|
| +{
|
| + base::Time now;
|
| + ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now));
|
| +
|
| + for (size_t i = 0; i < arraysize(kValidCCDates); ++i) {
|
| + const DateTestData data = kValidCCDates[i];
|
| + SCOPED_TRACE(data.value);
|
| + EXPECT_TRUE(
|
| + autofill::IsValidCreditCardExpirationDate(
|
| + ASCIIToUTF16(data.value), data.digits, now));
|
| + }
|
| + for (size_t i = 0; i < arraysize(kInvalidCCDates); ++i) {
|
| + const DateTestData data = kInvalidCCDates[i];
|
| + SCOPED_TRACE(data.value);
|
| + EXPECT_FALSE(
|
| + autofill::IsValidCreditCardExpirationDate(
|
| + ASCIIToUTF16(data.value), data.digits, now));
|
| + }
|
| +}
|
| +
|
| +TEST(AutofillValidation, IsValidCreditCardCSC) {
|
| + for (size_t i = 0; i < arraysize(kValidCSC); ++i) {
|
| + SCOPED_TRACE(kValidCSC[i]);
|
| + EXPECT_TRUE(
|
| + autofill::IsValidCreditCardCSC(ASCIIToUTF16(kValidCSC[i])));
|
| + }
|
| + for (size_t i = 0; i < arraysize(kInvalidCSC); ++i) {
|
| + SCOPED_TRACE(kInvalidCSC[i]);
|
| + EXPECT_FALSE(
|
| + autofill::IsValidCreditCardCSC(ASCIIToUTF16(kInvalidCSC[i])));
|
| + }
|
| +}
|
| +
|
|
|