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

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

Issue 2673753005: [Payments] Basic validation in the credit card editor. (Closed)
Patch Set: rebase Created 3 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
« no previous file with comments | « components/autofill/core/browser/validation.cc ('k') | components/autofill_strings.grdp » ('j') | 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 "components/autofill/core/browser/validation.h"
6
5 #include <stddef.h> 7 #include <stddef.h>
6 8
7 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/string16.h"
8 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
9 #include "base/time/time.h" 12 #include "base/time/time.h"
10 #include "components/autofill/core/browser/credit_card.h" 13 #include "components/autofill/core/browser/credit_card.h"
11 #include "components/autofill/core/browser/validation.h" 14 #include "components/autofill/core/browser/field_types.h"
15 #include "grit/components_strings.h"
12 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "ui/base/l10n/l10n_util.h"
13 18
14 using base::ASCIIToUTF16; 19 using base::ASCIIToUTF16;
15 20
16 namespace autofill { 21 namespace autofill {
17 namespace { 22 namespace {
18 23
19 struct ExpirationDate { 24 struct ExpirationDate {
20 const char* year; 25 const char* year;
21 const char* month; 26 const char* month;
22 }; 27 };
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 for (const char* valid_email : kValidEmailAddress) { 146 for (const char* valid_email : kValidEmailAddress) {
142 SCOPED_TRACE(valid_email); 147 SCOPED_TRACE(valid_email);
143 EXPECT_TRUE(IsValidEmailAddress(ASCIIToUTF16(valid_email))); 148 EXPECT_TRUE(IsValidEmailAddress(ASCIIToUTF16(valid_email)));
144 } 149 }
145 for (const char* invalid_email : kInvalidEmailAddress) { 150 for (const char* invalid_email : kInvalidEmailAddress) {
146 SCOPED_TRACE(invalid_email); 151 SCOPED_TRACE(invalid_email);
147 EXPECT_FALSE(IsValidEmailAddress(ASCIIToUTF16(invalid_email))); 152 EXPECT_FALSE(IsValidEmailAddress(ASCIIToUTF16(invalid_email)));
148 } 153 }
149 } 154 }
150 155
156 struct ValidationCase {
157 ValidationCase(const char* value,
158 ServerFieldType field_type,
159 bool expected_valid,
160 int expected_error_id)
161 : value(value),
162 field_type(field_type),
163 expected_valid(expected_valid),
164 expected_error_id(expected_error_id) {}
165 ~ValidationCase() {}
166
167 const char* const value;
168 const ServerFieldType field_type;
169 const bool expected_valid;
170 const int expected_error_id;
171 };
172
173 class AutofillTypeValidationTest
174 : public testing::TestWithParam<ValidationCase> {};
175
176 TEST_P(AutofillTypeValidationTest, IsValidForType) {
177 base::string16 error_message;
178 EXPECT_EQ(GetParam().expected_valid,
179 IsValidForType(ASCIIToUTF16(GetParam().value),
180 GetParam().field_type, &error_message))
181 << "Failed to validate " << GetParam().value << " (type "
182 << GetParam().field_type << ")";
183 if (!GetParam().expected_valid) {
184 EXPECT_EQ(l10n_util::GetStringUTF16(GetParam().expected_error_id),
185 error_message);
186 }
187 }
188
189 INSTANTIATE_TEST_CASE_P(
190 CreditCardExpDate,
191 AutofillTypeValidationTest,
192 testing::Values(
193 ValidationCase("05/2087", CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, true, 0),
194 ValidationCase("05-2087", CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, true, 0),
195 ValidationCase("052087", CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, true, 0),
196 ValidationCase("05|2087", CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, true, 0),
197
198 ValidationCase("05/2012",
199 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
200 false,
201 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
202 ValidationCase("MM/2012",
203 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
204 false,
205 IDS_PAYMENTS_CARD_EXPIRATION_INVALID_VALIDATION_MESSAGE),
206 ValidationCase("05/12",
207 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
208 false,
209 IDS_PAYMENTS_CARD_EXPIRATION_INVALID_VALIDATION_MESSAGE),
210 ValidationCase("05/45",
211 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
212 false,
213 IDS_PAYMENTS_CARD_EXPIRATION_INVALID_VALIDATION_MESSAGE),
214 ValidationCase("05/1987",
215 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
216 false,
217 IDS_PAYMENTS_CARD_EXPIRATION_INVALID_VALIDATION_MESSAGE),
218
219 ValidationCase("05/87", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0),
220 ValidationCase("05-87", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0),
221 ValidationCase("0587", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0),
222 ValidationCase("05|87", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0),
223 ValidationCase("05/1987",
224 CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR,
225 false,
226 IDS_PAYMENTS_CARD_EXPIRATION_INVALID_VALIDATION_MESSAGE),
227 ValidationCase("05/12",
228 CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR,
229 false,
230 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRED)));
231
232 INSTANTIATE_TEST_CASE_P(
233 CreditCardNumber,
234 AutofillTypeValidationTest,
235 testing::Values(
236 ValidationCase(kValidNumbers[0], CREDIT_CARD_NUMBER, true, 0),
237 ValidationCase(kValidNumbers[1], CREDIT_CARD_NUMBER, true, 0),
238 ValidationCase(kValidNumbers[2], CREDIT_CARD_NUMBER, true, 0),
239 ValidationCase(kValidNumbers[3], CREDIT_CARD_NUMBER, true, 0),
240 ValidationCase(kValidNumbers[4], CREDIT_CARD_NUMBER, true, 0),
241 ValidationCase(kValidNumbers[5], CREDIT_CARD_NUMBER, true, 0),
242 ValidationCase(kValidNumbers[6], CREDIT_CARD_NUMBER, true, 0),
243 ValidationCase(kValidNumbers[7], CREDIT_CARD_NUMBER, true, 0),
244 ValidationCase(kValidNumbers[8], CREDIT_CARD_NUMBER, true, 0),
245 ValidationCase(kValidNumbers[9], CREDIT_CARD_NUMBER, true, 0),
246 ValidationCase(kValidNumbers[10], CREDIT_CARD_NUMBER, true, 0),
247 ValidationCase(kValidNumbers[11], CREDIT_CARD_NUMBER, true, 0),
248 ValidationCase(kValidNumbers[12], CREDIT_CARD_NUMBER, true, 0),
249 ValidationCase(kValidNumbers[13], CREDIT_CARD_NUMBER, true, 0),
250 ValidationCase(kValidNumbers[14], CREDIT_CARD_NUMBER, true, 0),
251 ValidationCase(kValidNumbers[15], CREDIT_CARD_NUMBER, true, 0),
252 ValidationCase(kValidNumbers[16], CREDIT_CARD_NUMBER, true, 0),
253 ValidationCase(kValidNumbers[17], CREDIT_CARD_NUMBER, true, 0),
254
255 ValidationCase(kInvalidNumbers[0],
256 CREDIT_CARD_NUMBER,
257 false,
258 IDS_PAYMENTS_CARD_NUMBER_INVALID),
259 ValidationCase(kInvalidNumbers[1],
260 CREDIT_CARD_NUMBER,
261 false,
262 IDS_PAYMENTS_CARD_NUMBER_INVALID),
263 ValidationCase(kInvalidNumbers[2],
264 CREDIT_CARD_NUMBER,
265 false,
266 IDS_PAYMENTS_CARD_NUMBER_INVALID),
267 ValidationCase(kInvalidNumbers[3],
268 CREDIT_CARD_NUMBER,
269 false,
270 IDS_PAYMENTS_CARD_NUMBER_INVALID)));
271
272 INSTANTIATE_TEST_CASE_P(
273 CreditCardMonth,
274 AutofillTypeValidationTest,
275 testing::Values(
276 ValidationCase("01", CREDIT_CARD_EXP_MONTH, true, 0),
277 ValidationCase("1", CREDIT_CARD_EXP_MONTH, true, 0),
278 ValidationCase("12", CREDIT_CARD_EXP_MONTH, true, 0),
279 ValidationCase(
280 "0",
281 CREDIT_CARD_EXP_MONTH,
282 false,
283 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_MONTH),
284 ValidationCase(
285 "-1",
286 CREDIT_CARD_EXP_MONTH,
287 false,
288 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_MONTH),
289 ValidationCase(
290 "13",
291 CREDIT_CARD_EXP_MONTH,
292 false,
293 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_MONTH)));
294
295 INSTANTIATE_TEST_CASE_P(
296 CreditCardYear,
297 AutofillTypeValidationTest,
298 testing::Values(
299 /* 2-digit year */
300 ValidationCase("87", CREDIT_CARD_EXP_2_DIGIT_YEAR, true, 0),
301 // These are considered expired in the context of this millenium.
302 ValidationCase("02",
303 CREDIT_CARD_EXP_2_DIGIT_YEAR,
304 false,
305 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
306 ValidationCase("15",
307 CREDIT_CARD_EXP_2_DIGIT_YEAR,
308 false,
309 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
310 // Invalid formats.
311 ValidationCase(
312 "1",
313 CREDIT_CARD_EXP_2_DIGIT_YEAR,
314 false,
315 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
316 ValidationCase(
317 "123",
318 CREDIT_CARD_EXP_2_DIGIT_YEAR,
319 false,
320 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
321 ValidationCase(
322 "2087",
323 CREDIT_CARD_EXP_2_DIGIT_YEAR,
324 false,
325 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
326
327 /* 4-digit year */
328 ValidationCase("2087", CREDIT_CARD_EXP_4_DIGIT_YEAR, true, 0),
329 // Expired.
330 ValidationCase("2000",
331 CREDIT_CARD_EXP_4_DIGIT_YEAR,
332 false,
333 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
334 ValidationCase("2015",
335 CREDIT_CARD_EXP_4_DIGIT_YEAR,
336 false,
337 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
338 // Invalid formats.
339 ValidationCase(
340 "00",
341 CREDIT_CARD_EXP_4_DIGIT_YEAR,
342 false,
343 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
344 ValidationCase(
345 "123",
346 CREDIT_CARD_EXP_4_DIGIT_YEAR,
347 false,
348 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
349 ValidationCase(
350 "87",
351 CREDIT_CARD_EXP_4_DIGIT_YEAR,
352 false,
353 IDS_PAYMENTS_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR)));
354
151 } // namespace autofill 355 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/validation.cc ('k') | components/autofill_strings.grdp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698