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* 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_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 |