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

Side by Side Diff: chrome/browser/autofill/validation_unittest.cc

Issue 12213077: [Autofill] Credit Card validation for rAc. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/time.h"
5 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
6 #include "chrome/browser/autofill/validation.h" 7 #include "chrome/browser/autofill/validation.h"
7 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
8 9
9 namespace { 10 namespace {
10 11
12 // Test data for expiration date validation.
13 struct DateTestData {
14 const char* const value; // Expiration date.
15 int digits; // Number of expected digits for expiration year.
16 };
17
11 // From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card _numbers.htm 18 // From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card _numbers.htm
12 const char* const kValidNumbers[] = { 19 const char* const kValidNumbers[] = {
13 "378282246310005", 20 "378282246310005",
14 "3714 4963 5398 431", 21 "3714 4963 5398 431",
15 "3787-3449-3671-000", 22 "3787-3449-3671-000",
16 "5610591081018250", 23 "5610591081018250",
17 "3056 9309 0259 04", 24 "3056 9309 0259 04",
18 "3852-0000-0232-37", 25 "3852-0000-0232-37",
19 "6011111111111117", 26 "6011111111111117",
20 "6011 0009 9013 9424", 27 "6011 0009 9013 9424",
21 "3530-1113-3330-0000", 28 "3530-1113-3330-0000",
22 "3566002020360505", 29 "3566002020360505",
23 "5555 5555 5555 4444", 30 "5555 5555 5555 4444",
24 "5105-1051-0510-5100", 31 "5105-1051-0510-5100",
25 "4111111111111111", 32 "4111111111111111",
26 "4012 8888 8888 1881", 33 "4012 8888 8888 1881",
27 "4222-2222-2222-2", 34 "4222-2222-2222-2",
28 "5019717010103742", 35 "5019717010103742",
29 "6331101999990016", 36 "6331101999990016",
30 }; 37 };
31 const char* const kInvalidNumbers[] = { 38 const char* const kInvalidNumbers[] = {
32 "4111 1111 112", /* too short */ 39 "4111 1111 112", /* too short */
33 "41111111111111111115", /* too long */ 40 "41111111111111111115", /* too long */
34 "4111-1111-1111-1110", /* wrong Luhn checksum */ 41 "4111-1111-1111-1110", /* wrong Luhn checksum */
35 "3056 9309 0259 04aa", /* non-digit characters */ 42 "3056 9309 0259 04aa", /* non-digit characters */
36 }; 43 };
37 44 const char kCurrentDate[]="1 May 2013";
45 DateTestData kValidCCYears[] = {
46 { "13", 2 }, // Current year.
47 { "2013", 4 }, // Current year.
48 { "23", 2 }, // Future year.
49 { "2023", 4 }, // Future year.
50 };
51 DateTestData kInvalidCCYears[] = {
52 { "12", 2 }, // Past year.
53 { "2012", 4 }, // Past year.
54 { "1812", 4 }, // Past year.
55 { "rr", 2 }, // Invalid characters.
56 { "2r", 2 }, // Invalid characters.
57 { "rrrr", 4 }, // Invalid characters.
58 { "2rrr", 4 }, // Invalid characters.
59 { "3", 2 }, // string too short.
60 { "333", 4 }, // string too short.
61 { "333", 2 }, // string too long.
62 { "33333", 4 }, // string too long.
63 };
64 DateTestData kValidCCDates[] = {
65 { "05/13", 2 }, // Current month & year.
66 { "05/2013", 4 }, // Current month & year.
67 { "13-05", 2 }, // Current month & year.
68 { "2013-05", 4 }, // Current month & year.
69 { "01/14", 2 }, // Next month & year.
70 { "01/2014", 4 }, // Next month & year.
71 { "14-01", 2 }, // Next month & year.
72 { "2014-01", 4 }, // Next month & year.
73 };
74 DateTestData kInvalidCCDates[] = {
75 { "04/13", 2 }, // Past month.
76 { "04/2013", 4 }, // Past month.
77 { "13-04", 2 }, // Past month.
78 { "2013-04", 4 }, // Past month.
79 { "12/12", 2 }, // Past month.
80 { "12/2012", 4 }, // Past year.
81 { "12-12", 2 }, // Past year.
82 { "2012-12", 4 }, // Past year.
83 { "1/14", 2 }, // Month too short.
84 { "1/2014", 4 }, // Month too short.
85 { "14-1", 2 }, // Month too short.
86 { "2014-1", 4 }, // Month too short.
87 { "111/14", 2 }, // Month too long.
88 { "111/2014", 4 }, // Month too long.
89 { "14-111", 2 }, // Month too long.
90 { "2014-111", 4 }, // Month too long.
91 { "12/133", 2 }, // Year too long.
92 { "12/20133", 4 }, // Year too long.
93 { "133-12", 2 }, // Year too long.
94 { "20133-12", 4 }, // Year too long.
95 { "12/1a", 2 }, // Invalid character (month).
96 { "12/20a3", 4 }, // Invalid character (month).
97 { "13-1a", 2 }, // Invalid character (month).
98 { "2013-1a", 4 }, // Invalid character (month).
99 { "12/a3", 2 }, // Invalid character (year).
100 { "12/2a13", 4 }, // Invalid character (year).
101 { "a3-12", 2 }, // Invalid character (year).
102 { "2a13-12", 4 }, // Invalid character (year).
103 { "12+12", 2 }, // Invalid separator.
104 { "12+2012", 4 }, // Invalid separator.
105 { "2012+12", 4 }, // Invalid separator.
106 };
107 const char* const kValidCSC[] = {
108 "323", // 3-digit CSC.
109 "3234", // 4-digit CSC.
110 };
111 const char* const kInvalidCSC[] = {
112 "32", // CSC too short.
113 "12345", // CSC too long.
114 "asd", // non-numeric CSC.
115 };
38 } // namespace 116 } // namespace
39 117
40 TEST(AutofillValidation, IsValidCreditCardNumber) { 118 TEST(AutofillValidation, IsValidCreditCardNumber) {
41 for (size_t i = 0; i < arraysize(kValidNumbers); ++i) { 119 for (size_t i = 0; i < arraysize(kValidNumbers); ++i) {
42 SCOPED_TRACE(kValidNumbers[i]); 120 SCOPED_TRACE(kValidNumbers[i]);
43 EXPECT_TRUE( 121 EXPECT_TRUE(
44 autofill::IsValidCreditCardNumber(ASCIIToUTF16(kValidNumbers[i]))); 122 autofill::IsValidCreditCardNumber(ASCIIToUTF16(kValidNumbers[i])));
45 } 123 }
46 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { 124 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) {
47 SCOPED_TRACE(kInvalidNumbers[i]); 125 SCOPED_TRACE(kInvalidNumbers[i]);
48 EXPECT_FALSE( 126 EXPECT_FALSE(
49 autofill::IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i]))); 127 autofill::IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i])));
50 } 128 }
51 } 129 }
130
131 TEST(AutofillValidation, IsValidCreditCardExpirationYear)
132 {
133 base::Time now;
134 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now));
135
136 for (size_t i = 0; i < arraysize(kValidCCYears); ++i) {
137 const DateTestData data = kValidCCYears[i];
138 SCOPED_TRACE(data.value);
139 EXPECT_TRUE(
140 autofill::IsValidCreditCardExpirationYear(
141 ASCIIToUTF16(data.value), data.digits, now));
142 }
143 for (size_t i = 0; i < arraysize(kInvalidCCYears); ++i) {
144 const DateTestData data = kInvalidCCYears[i];
145 SCOPED_TRACE(data.value);
146 EXPECT_FALSE(
147 autofill::IsValidCreditCardExpirationYear(
148 ASCIIToUTF16(data.value), data.digits, now));
149 }
150 }
151
152 TEST(AutofillValidation, IsValidCreditCardExpirationDate)
153 {
154 base::Time now;
155 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now));
156
157 for (size_t i = 0; i < arraysize(kValidCCDates); ++i) {
158 const DateTestData data = kValidCCDates[i];
159 SCOPED_TRACE(data.value);
160 EXPECT_TRUE(
161 autofill::IsValidCreditCardExpirationDate(
162 ASCIIToUTF16(data.value), data.digits, now));
163 }
164 for (size_t i = 0; i < arraysize(kInvalidCCDates); ++i) {
165 const DateTestData data = kInvalidCCDates[i];
166 SCOPED_TRACE(data.value);
167 EXPECT_FALSE(
168 autofill::IsValidCreditCardExpirationDate(
169 ASCIIToUTF16(data.value), data.digits, now));
170 }
171 }
172
173 TEST(AutofillValidation, IsValidCreditCardCSC) {
174 for (size_t i = 0; i < arraysize(kValidCSC); ++i) {
175 SCOPED_TRACE(kValidCSC[i]);
176 EXPECT_TRUE(
177 autofill::IsValidCreditCardCSC(ASCIIToUTF16(kValidCSC[i])));
178 }
179 for (size_t i = 0; i < arraysize(kInvalidCSC); ++i) {
180 SCOPED_TRACE(kInvalidCSC[i]);
181 EXPECT_FALSE(
182 autofill::IsValidCreditCardCSC(ASCIIToUTF16(kInvalidCSC[i])));
183 }
184 }
185
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698