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

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

Issue 2136453003: [Autofill] Improve support for various credit card expiration dates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final nits Created 4 years, 5 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "components/autofill/core/browser/validation.h" 10 #include "components/autofill/core/browser/validation.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 // A UnionPay card that doesn't pass the Luhn checksum 48 // A UnionPay card that doesn't pass the Luhn checksum
49 "6200000000000000", 49 "6200000000000000",
50 }; 50 };
51 const char* const kInvalidNumbers[] = { 51 const char* const kInvalidNumbers[] = {
52 "4111 1111 112", /* too short */ 52 "4111 1111 112", /* too short */
53 "41111111111111111115", /* too long */ 53 "41111111111111111115", /* too long */
54 "4111-1111-1111-1110", /* wrong Luhn checksum */ 54 "4111-1111-1111-1110", /* wrong Luhn checksum */
55 "3056 9309 0259 04aa", /* non-digit characters */ 55 "3056 9309 0259 04aa", /* non-digit characters */
56 }; 56 };
57 const char kCurrentDate[]="1 May 2013"; 57 const char kCurrentDate[]="1 May 2013";
58 const ExpirationDate kValidCreditCardExpirationDate[] = {
59 { "2013", "5" }, // Valid month in current year.
60 { "2014", "1" }, // Any month in next year.
61 { "2014", "12" }, // Edge condition.
62 { "2014", " 1" }, // Whitespace in month.
63 { " 2014", "1" }, // Whitespace in year.
64 };
65 const IntExpirationDate kValidCreditCardIntExpirationDate[] = { 58 const IntExpirationDate kValidCreditCardIntExpirationDate[] = {
66 { 2013, 5 }, // Valid month in current year. 59 { 2013, 5 }, // Valid month in current year.
67 { 2014, 1 }, // Any month in next year. 60 { 2014, 1 }, // Any month in next year.
68 { 2014, 12 }, // Edge condition. 61 { 2014, 12 }, // Edge condition.
69 }; 62 };
70 const ExpirationDate kInvalidCreditCardExpirationDate[] = {
71 { "2013", "04" }, // Previous month in current year.
72 { "2012", "12" }, // Any month in previous year.
73 { "2015", "13" }, // Not a real month.
74 { "2015", "00" }, // Zero is legal in the CC class but is not a valid date.
75 };
76 const IntExpirationDate kInvalidCreditCardIntExpirationDate[] = { 63 const IntExpirationDate kInvalidCreditCardIntExpirationDate[] = {
77 { 2013, 4 }, // Previous month in current year. 64 { 2013, 4 }, // Previous month in current year.
78 { 2012, 12 }, // Any month in previous year. 65 { 2012, 12 }, // Any month in previous year.
79 { 2015, 13 }, // Not a real month. 66 { 2015, 13 }, // Not a real month.
80 { 2015, 0 }, // Zero is legal in the CC class but is not a valid date. 67 { 2015, 0 }, // Zero is legal in the CC class but is not a valid date.
81 }; 68 };
82 const char* const kValidCreditCardSecurityCode[] = { 69 const char* const kValidCreditCardSecurityCode[] = {
83 "323", // 3-digit CSC. 70 "323", // 3-digit CSC.
84 "3234", // 4-digit CSC. 71 "3234", // 4-digit CSC.
85 }; 72 };
(...skipping 25 matching lines...) Expand all
111 SCOPED_TRACE(kValidNumbers[i]); 98 SCOPED_TRACE(kValidNumbers[i]);
112 EXPECT_TRUE( 99 EXPECT_TRUE(
113 IsValidCreditCardNumber(ASCIIToUTF16(kValidNumbers[i]))); 100 IsValidCreditCardNumber(ASCIIToUTF16(kValidNumbers[i])));
114 } 101 }
115 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { 102 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) {
116 SCOPED_TRACE(kInvalidNumbers[i]); 103 SCOPED_TRACE(kInvalidNumbers[i]);
117 EXPECT_FALSE(IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i]))); 104 EXPECT_FALSE(IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i])));
118 } 105 }
119 } 106 }
120 107
121 TEST(AutofillValidation, IsValidCreditCardExpirationDate) {
122 base::Time now;
123 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now));
124
125 for (size_t i = 0; i < arraysize(kValidCreditCardExpirationDate); ++i) {
126 const ExpirationDate& data = kValidCreditCardExpirationDate[i];
127 SCOPED_TRACE(data.year);
128 SCOPED_TRACE(data.month);
129 EXPECT_TRUE(IsValidCreditCardExpirationDate(ASCIIToUTF16(data.year),
130 ASCIIToUTF16(data.month),
131 now));
132 }
133 for (size_t i = 0; i < arraysize(kInvalidCreditCardExpirationDate); ++i) {
134 const ExpirationDate& data = kInvalidCreditCardExpirationDate[i];
135 SCOPED_TRACE(data.year);
136 SCOPED_TRACE(data.month);
137 EXPECT_TRUE(!IsValidCreditCardExpirationDate(ASCIIToUTF16(data.year),
138 ASCIIToUTF16(data.month),
139 now));
140 }
141 }
142
143 TEST(AutofillValidation, IsValidCreditCardIntExpirationDate) { 108 TEST(AutofillValidation, IsValidCreditCardIntExpirationDate) {
144 base::Time now; 109 base::Time now;
145 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now)); 110 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now));
146 111
147 for (size_t i = 0; i < arraysize(kValidCreditCardIntExpirationDate); ++i) { 112 for (size_t i = 0; i < arraysize(kValidCreditCardIntExpirationDate); ++i) {
148 const IntExpirationDate& data = kValidCreditCardIntExpirationDate[i]; 113 const IntExpirationDate& data = kValidCreditCardIntExpirationDate[i];
149 SCOPED_TRACE(data.year); 114 SCOPED_TRACE(data.year);
150 SCOPED_TRACE(data.month); 115 SCOPED_TRACE(data.month);
151 EXPECT_TRUE(IsValidCreditCardExpirationDate(data.year, data.month, now)); 116 EXPECT_TRUE(IsValidCreditCardExpirationDate(data.year, data.month, now));
152 } 117 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kAmericanExpressCard))); 155 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kAmericanExpressCard)));
191 EXPECT_FALSE(IsValidCreditCardSecurityCode( 156 EXPECT_FALSE(IsValidCreditCardSecurityCode(
192 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kVisaCard))); 157 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kVisaCard)));
193 EXPECT_TRUE(IsValidCreditCardSecurityCode( 158 EXPECT_TRUE(IsValidCreditCardSecurityCode(
194 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kInvalidNumbers[0]))); 159 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kInvalidNumbers[0])));
195 EXPECT_FALSE(IsValidCreditCardSecurityCode( 160 EXPECT_FALSE(IsValidCreditCardSecurityCode(
196 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kInvalidNumbers[0]))); 161 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kInvalidNumbers[0])));
197 } 162 }
198 163
199 } // namespace autofill 164 } // 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