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

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

Issue 2673753005: [Payments] Basic validation in the credit card editor. (Closed)
Patch Set: more tests 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
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* value;
please use gerrit instead 2017/02/07 21:55:22 const char* const (First const says don't change
Mathieu 2017/02/08 02:03:25 Done.
168 ServerFieldType field_type;
please use gerrit instead 2017/02/07 21:55:22 const
Mathieu 2017/02/08 02:03:25 Done.
169 bool expected_valid;
please use gerrit instead 2017/02/07 21:55:22 const
Mathieu 2017/02/08 02:03:25 Done.
170 int expected_error_id;
please use gerrit instead 2017/02/07 21:55:22 const
Mathieu 2017/02/08 02:03:25 Done.
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_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
202 ValidationCase(
203 "MM/2012",
204 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
205 false,
206 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE),
207 ValidationCase(
208 "05/12",
209 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
210 false,
211 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE),
212 ValidationCase(
213 "05/45",
214 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
215 false,
216 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE),
217 ValidationCase(
218 "05/1987",
219 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
220 false,
221 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE),
222
223 ValidationCase("05/87", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0),
224 ValidationCase("05-87", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0),
225 ValidationCase("0587", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0),
226 ValidationCase("05|87", CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, true, 0),
227 ValidationCase(
228 "05/1987",
229 CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR,
230 false,
231 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_DATE),
232 ValidationCase("05/12",
233 CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR,
234 false,
235 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED)));
236
237 INSTANTIATE_TEST_CASE_P(
238 CreditCardNumber,
239 AutofillTypeValidationTest,
240 testing::Values(
241 ValidationCase(kValidNumbers[0], CREDIT_CARD_NUMBER, true, 0),
242 ValidationCase(kValidNumbers[1], CREDIT_CARD_NUMBER, true, 0),
243 ValidationCase(kValidNumbers[2], CREDIT_CARD_NUMBER, true, 0),
244 ValidationCase(kValidNumbers[3], CREDIT_CARD_NUMBER, true, 0),
245 ValidationCase(kValidNumbers[4], CREDIT_CARD_NUMBER, true, 0),
246 ValidationCase(kValidNumbers[5], CREDIT_CARD_NUMBER, true, 0),
247 ValidationCase(kValidNumbers[6], CREDIT_CARD_NUMBER, true, 0),
248 ValidationCase(kValidNumbers[7], CREDIT_CARD_NUMBER, true, 0),
249 ValidationCase(kValidNumbers[8], CREDIT_CARD_NUMBER, true, 0),
250 ValidationCase(kValidNumbers[9], CREDIT_CARD_NUMBER, true, 0),
251 ValidationCase(kValidNumbers[10], CREDIT_CARD_NUMBER, true, 0),
252 ValidationCase(kValidNumbers[11], CREDIT_CARD_NUMBER, true, 0),
253 ValidationCase(kValidNumbers[12], CREDIT_CARD_NUMBER, true, 0),
254 ValidationCase(kValidNumbers[13], CREDIT_CARD_NUMBER, true, 0),
255 ValidationCase(kValidNumbers[14], CREDIT_CARD_NUMBER, true, 0),
256 ValidationCase(kValidNumbers[15], CREDIT_CARD_NUMBER, true, 0),
257 ValidationCase(kValidNumbers[16], CREDIT_CARD_NUMBER, true, 0),
258 ValidationCase(kValidNumbers[17], CREDIT_CARD_NUMBER, true, 0),
259
260 ValidationCase(kInvalidNumbers[0],
261 CREDIT_CARD_NUMBER,
262 false,
263 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_NUMBER),
264 ValidationCase(kInvalidNumbers[1],
265 CREDIT_CARD_NUMBER,
266 false,
267 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_NUMBER),
268 ValidationCase(kInvalidNumbers[2],
269 CREDIT_CARD_NUMBER,
270 false,
271 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_NUMBER),
272 ValidationCase(kInvalidNumbers[3],
273 CREDIT_CARD_NUMBER,
274 false,
275 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_NUMBER)));
276
277 INSTANTIATE_TEST_CASE_P(
278 CreditCardMonth,
279 AutofillTypeValidationTest,
280 testing::Values(
281 ValidationCase("01", CREDIT_CARD_EXP_MONTH, true, 0),
282 ValidationCase("1", CREDIT_CARD_EXP_MONTH, true, 0),
283 ValidationCase("12", CREDIT_CARD_EXP_MONTH, true, 0),
284 ValidationCase(
285 "0",
286 CREDIT_CARD_EXP_MONTH,
287 false,
288 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_MONTH),
289 ValidationCase(
290 "-1",
291 CREDIT_CARD_EXP_MONTH,
292 false,
293 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_MONTH),
294 ValidationCase(
295 "13",
296 CREDIT_CARD_EXP_MONTH,
297 false,
298 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_MONTH)));
299
300 INSTANTIATE_TEST_CASE_P(
301 CreditCardYear,
302 AutofillTypeValidationTest,
303 testing::Values(
304 /* 2-digit year */
305 ValidationCase("87", CREDIT_CARD_EXP_2_DIGIT_YEAR, true, 0),
306 // These are considered expired in the context of this millenium.
307 ValidationCase("02",
308 CREDIT_CARD_EXP_2_DIGIT_YEAR,
309 false,
310 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
311 ValidationCase("15",
312 CREDIT_CARD_EXP_2_DIGIT_YEAR,
313 false,
314 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
315 // Invalid formats.
316 ValidationCase(
317 "1",
318 CREDIT_CARD_EXP_2_DIGIT_YEAR,
319 false,
320 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
321 ValidationCase(
322 "123",
323 CREDIT_CARD_EXP_2_DIGIT_YEAR,
324 false,
325 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
326 ValidationCase(
327 "2087",
328 CREDIT_CARD_EXP_2_DIGIT_YEAR,
329 false,
330 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
331
332 /* 4-digit year */
333 ValidationCase("2087", CREDIT_CARD_EXP_4_DIGIT_YEAR, true, 0),
334 // Expired.
335 ValidationCase("2000",
336 CREDIT_CARD_EXP_4_DIGIT_YEAR,
337 false,
338 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
339 ValidationCase("2015",
340 CREDIT_CARD_EXP_4_DIGIT_YEAR,
341 false,
342 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRED),
343 // Invalid formats.
344 ValidationCase(
345 "00",
346 CREDIT_CARD_EXP_4_DIGIT_YEAR,
347 false,
348 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
349 ValidationCase(
350 "123",
351 CREDIT_CARD_EXP_4_DIGIT_YEAR,
352 false,
353 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR),
354 ValidationCase(
355 "87",
356 CREDIT_CARD_EXP_4_DIGIT_YEAR,
357 false,
358 IDS_AUTOFILL_VALIDATION_INVALID_CREDIT_CARD_EXPIRATION_YEAR)));
359
151 } // namespace autofill 360 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698