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

Side by Side Diff: components/autofill/core/browser/validation_unittest.cc

Issue 17099006: Validate saved credit card number in interactive autocomplete (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Merge master Created 7 years, 6 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
« no previous file with comments | « components/autofill/core/browser/validation.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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/strings/utf_string_conversions.h" 5 #include "base/strings/utf_string_conversions.h"
6 #include "base/time.h" 6 #include "base/time.h"
7 #include "components/autofill/core/browser/validation.h" 7 #include "components/autofill/core/browser/validation.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace autofill { 10 namespace autofill {
11 namespace { 11 namespace {
12 12
13 struct ExpirationDate { 13 struct ExpirationDate {
14 const char* year; 14 const char* year;
15 const char* month; 15 const char* month;
16 }; 16 };
17 17
18 struct IntExpirationDate {
19 const int year;
20 const int month;
21 };
22
18 // From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card _numbers.htm 23 // From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card _numbers.htm
19 const char* const kValidNumbers[] = { 24 const char* const kValidNumbers[] = {
20 "378282246310005", 25 "378282246310005",
21 "3714 4963 5398 431", 26 "3714 4963 5398 431",
22 "3787-3449-3671-000", 27 "3787-3449-3671-000",
23 "5610591081018250", 28 "5610591081018250",
24 "3056 9309 0259 04", 29 "3056 9309 0259 04",
25 "3852-0000-0232-37", 30 "3852-0000-0232-37",
26 "6011111111111117", 31 "6011111111111117",
27 "6011 0009 9013 9424", 32 "6011 0009 9013 9424",
(...skipping 13 matching lines...) Expand all
41 "4111-1111-1111-1110", /* wrong Luhn checksum */ 46 "4111-1111-1111-1110", /* wrong Luhn checksum */
42 "3056 9309 0259 04aa", /* non-digit characters */ 47 "3056 9309 0259 04aa", /* non-digit characters */
43 }; 48 };
44 const char kCurrentDate[]="1 May 2013"; 49 const char kCurrentDate[]="1 May 2013";
45 const ExpirationDate kValidCreditCardExpirationDate[] = { 50 const ExpirationDate kValidCreditCardExpirationDate[] = {
46 { "2013", "5" }, // Valid month in current year. 51 { "2013", "5" }, // Valid month in current year.
47 { "2014", "1" }, // Any month in next year. 52 { "2014", "1" }, // Any month in next year.
48 { "2014", " 1" }, // Whitespace in month. 53 { "2014", " 1" }, // Whitespace in month.
49 { " 2014", "1" }, // Whitespace in year. 54 { " 2014", "1" }, // Whitespace in year.
50 }; 55 };
56 const IntExpirationDate kValidCreditCardIntExpirationDate[] = {
57 { 2013, 5 }, // Valid month in current year.
58 { 2014, 1 }, // Any month in next year.
59 };
51 const ExpirationDate kInvalidCreditCardExpirationDate[] = { 60 const ExpirationDate kInvalidCreditCardExpirationDate[] = {
52 { "2013", "04" }, // Previous month in current year. 61 { "2013", "04" }, // Previous month in current year.
53 { "2012", "12" }, // Any month in previous year. 62 { "2012", "12" }, // Any month in previous year.
54 }; 63 };
64 const IntExpirationDate kInvalidCreditCardIntExpirationDate[] = {
65 { 2013, 4 }, // Previous month in current year.
66 { 2012, 12 }, // Any month in previous year.
67 };
55 const char* const kValidCreditCardSecurityCode[] = { 68 const char* const kValidCreditCardSecurityCode[] = {
56 "323", // 3-digit CSC. 69 "323", // 3-digit CSC.
57 "3234", // 4-digit CSC. 70 "3234", // 4-digit CSC.
58 }; 71 };
59 const char* const kInvalidCreditCardSecurityCode[] = { 72 const char* const kInvalidCreditCardSecurityCode[] = {
60 "32", // CSC too short. 73 "32", // CSC too short.
61 "12345", // CSC too long. 74 "12345", // CSC too long.
62 "asd", // non-numeric CSC. 75 "asd", // non-numeric CSC.
63 }; 76 };
64 const char* const kValidEmailAddress[] = { 77 const char* const kValidEmailAddress[] = {
(...skipping 26 matching lines...) Expand all
91 autofill::IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i]))); 104 autofill::IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i])));
92 } 105 }
93 } 106 }
94 107
95 TEST(AutofillValidation, IsValidCreditCardExpirationDate) 108 TEST(AutofillValidation, IsValidCreditCardExpirationDate)
96 { 109 {
97 base::Time now; 110 base::Time now;
98 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now)); 111 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now));
99 112
100 for (size_t i = 0; i < arraysize(kValidCreditCardExpirationDate); ++i) { 113 for (size_t i = 0; i < arraysize(kValidCreditCardExpirationDate); ++i) {
101 const ExpirationDate data = kValidCreditCardExpirationDate[i]; 114 const ExpirationDate& data = kValidCreditCardExpirationDate[i];
102 SCOPED_TRACE(data.year); 115 SCOPED_TRACE(data.year);
103 SCOPED_TRACE(data.month); 116 SCOPED_TRACE(data.month);
104 EXPECT_TRUE( 117 EXPECT_TRUE(
105 autofill::IsValidCreditCardExpirationDate(ASCIIToUTF16(data.year), 118 autofill::IsValidCreditCardExpirationDate(ASCIIToUTF16(data.year),
106 ASCIIToUTF16(data.month), 119 ASCIIToUTF16(data.month),
107 now)); 120 now));
108 } 121 }
109 for (size_t i = 0; i < arraysize(kInvalidCreditCardExpirationDate); ++i) { 122 for (size_t i = 0; i < arraysize(kInvalidCreditCardExpirationDate); ++i) {
110 const ExpirationDate data = kInvalidCreditCardExpirationDate[i]; 123 const ExpirationDate& data = kInvalidCreditCardExpirationDate[i];
111 SCOPED_TRACE(data.year); 124 SCOPED_TRACE(data.year);
112 SCOPED_TRACE(data.month); 125 SCOPED_TRACE(data.month);
113 EXPECT_TRUE( 126 EXPECT_TRUE(
114 !autofill::IsValidCreditCardExpirationDate(ASCIIToUTF16(data.year), 127 !autofill::IsValidCreditCardExpirationDate(ASCIIToUTF16(data.year),
115 ASCIIToUTF16(data.month), 128 ASCIIToUTF16(data.month),
116 now)); 129 now));
117 } 130 }
118 } 131 }
119 132
133 TEST(AutofillValidation, IsValidCreditCardIntExpirationDate)
134 {
135 base::Time now;
136 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now));
137
138 for (size_t i = 0; i < arraysize(kValidCreditCardIntExpirationDate); ++i) {
139 const IntExpirationDate& data = kValidCreditCardIntExpirationDate[i];
140 SCOPED_TRACE(data.year);
141 SCOPED_TRACE(data.month);
142 EXPECT_TRUE(
143 autofill::IsValidCreditCardExpirationDate(data.year, data.month, now));
144 }
145 for (size_t i = 0; i < arraysize(kInvalidCreditCardIntExpirationDate); ++i) {
146 const IntExpirationDate& data = kInvalidCreditCardIntExpirationDate[i];
147 SCOPED_TRACE(data.year);
148 SCOPED_TRACE(data.month);
149 EXPECT_TRUE(
150 !autofill::IsValidCreditCardExpirationDate(data.year, data.month, now));
151 }
152 }
120 TEST(AutofillValidation, IsValidCreditCardSecurityCode) { 153 TEST(AutofillValidation, IsValidCreditCardSecurityCode) {
121 for (size_t i = 0; i < arraysize(kValidCreditCardSecurityCode); ++i) { 154 for (size_t i = 0; i < arraysize(kValidCreditCardSecurityCode); ++i) {
122 SCOPED_TRACE(kValidCreditCardSecurityCode[i]); 155 SCOPED_TRACE(kValidCreditCardSecurityCode[i]);
123 EXPECT_TRUE( 156 EXPECT_TRUE(
124 autofill::IsValidCreditCardSecurityCode( 157 autofill::IsValidCreditCardSecurityCode(
125 ASCIIToUTF16(kValidCreditCardSecurityCode[i]))); 158 ASCIIToUTF16(kValidCreditCardSecurityCode[i])));
126 } 159 }
127 for (size_t i = 0; i < arraysize(kInvalidCreditCardSecurityCode); ++i) { 160 for (size_t i = 0; i < arraysize(kInvalidCreditCardSecurityCode); ++i) {
128 SCOPED_TRACE(kInvalidCreditCardSecurityCode[i]); 161 SCOPED_TRACE(kInvalidCreditCardSecurityCode[i]);
129 EXPECT_FALSE( 162 EXPECT_FALSE(
(...skipping 24 matching lines...) Expand all
154 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kAmericanExpressCard))); 187 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kAmericanExpressCard)));
155 EXPECT_FALSE(autofill::IsValidCreditCardSecurityCode( 188 EXPECT_FALSE(autofill::IsValidCreditCardSecurityCode(
156 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kVisaCard))); 189 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kVisaCard)));
157 EXPECT_TRUE(autofill::IsValidCreditCardSecurityCode( 190 EXPECT_TRUE(autofill::IsValidCreditCardSecurityCode(
158 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kInvalidNumbers[0]))); 191 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kInvalidNumbers[0])));
159 EXPECT_FALSE(autofill::IsValidCreditCardSecurityCode( 192 EXPECT_FALSE(autofill::IsValidCreditCardSecurityCode(
160 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kInvalidNumbers[0]))); 193 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kInvalidNumbers[0])));
161 } 194 }
162 195
163 } // namespace autofill 196 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/validation.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698