OLD | NEW |
---|---|
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 Loading... | |
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 |
OLD | NEW |