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

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

Issue 381613005: [Autofill] Autofill fails to fill credit card number when split across fields. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed const qualifiers from FormField and AutofillScanner implementation. Created 6 years, 4 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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/memory/scoped_vector.h" 6 #include "base/memory/scoped_vector.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "components/autofill/core/browser/autofill_field.h" 8 #include "components/autofill/core/browser/autofill_field.h"
9 #include "components/autofill/core/browser/autofill_scanner.h" 9 #include "components/autofill/core/browser/autofill_scanner.h"
10 #include "components/autofill/core/browser/credit_card_field.h" 10 #include "components/autofill/core/browser/credit_card_field.h"
11 #include "components/autofill/core/common/form_field_data.h" 11 #include "components/autofill/core/common/form_field_data.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 using base::ASCIIToUTF16; 14 using base::ASCIIToUTF16;
15 15
16 namespace autofill { 16 namespace autofill {
17 17
18 class CreditCardFieldTest : public testing::Test { 18 class CreditCardFieldTest : public testing::Test {
19 public: 19 public:
20 CreditCardFieldTest() {} 20 CreditCardFieldTest() {}
21 virtual ~CreditCardFieldTest() {} 21 virtual ~CreditCardFieldTest() {}
22 22
23 protected: 23 protected:
24 ScopedVector<const AutofillField> list_; 24 ScopedVector<AutofillField> list_;
25 scoped_ptr<const CreditCardField> field_; 25 scoped_ptr<const CreditCardField> field_;
26 ServerFieldTypeMap field_type_map_; 26 ServerFieldTypeMap field_type_map_;
27 27
28 // Parses the contents of |list_| as a form, and stores the result into 28 // Parses the contents of |list_| as a form, and stores the result into
29 // |field_|. 29 // |field_|.
30 void Parse() { 30 void Parse() {
31 AutofillScanner scanner(list_.get()); 31 AutofillScanner scanner(list_.get());
32 field_.reset( 32 field_.reset(
33 static_cast<const CreditCardField*>(CreditCardField::Parse(&scanner))); 33 static_cast<const CreditCardField*>(CreditCardField::Parse(&scanner)));
34 } 34 }
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 ASSERT_TRUE( 340 ASSERT_TRUE(
341 field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end()); 341 field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end());
342 EXPECT_EQ(CREDIT_CARD_NUMBER, 342 EXPECT_EQ(CREDIT_CARD_NUMBER,
343 field_type_map_[ASCIIToUTF16("number1")]); 343 field_type_map_[ASCIIToUTF16("number1")]);
344 ASSERT_TRUE( 344 ASSERT_TRUE(
345 field_type_map_.find(ASCIIToUTF16("date2")) != field_type_map_.end()); 345 field_type_map_.find(ASCIIToUTF16("date2")) != field_type_map_.end());
346 EXPECT_EQ(CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 346 EXPECT_EQ(CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR,
347 field_type_map_[ASCIIToUTF16("date2")]); 347 field_type_map_[ASCIIToUTF16("date2")]);
348 } 348 }
349 349
350 TEST_F(CreditCardFieldTest, ParseCreditCardNumberWithSplit) {
351 FormFieldData field;
352 field.form_control_type = "text";
353
354 field.label = ASCIIToUTF16("Card Number");
355 field.name = ASCIIToUTF16("card_number_q1");
356 field.max_length = 4;
357 list_.push_back(new AutofillField(field, ASCIIToUTF16("number1")));
358
359 field.label = ASCIIToUTF16("Card Number");
360 field.name = ASCIIToUTF16("card_number_q2");
361 field.max_length = 4;
362 list_.push_back(new AutofillField(field, ASCIIToUTF16("number2")));
363
364 field.label = ASCIIToUTF16("Card Number");
365 field.name = ASCIIToUTF16("card_number_q3");
366 field.max_length = 4;
367 list_.push_back(new AutofillField(field, ASCIIToUTF16("number3")));
368
369 field.label = ASCIIToUTF16("Card Number");
370 field.name = ASCIIToUTF16("card_number_q4");
371 field.max_length = 4;
372 list_.push_back(new AutofillField(field, ASCIIToUTF16("number4")));
373
374 field.label = ASCIIToUTF16("Exp Month");
375 field.name = ASCIIToUTF16("ccmonth");
376 list_.push_back(new AutofillField(field, ASCIIToUTF16("month5")));
377
378 field.label = ASCIIToUTF16("Exp Year");
379 field.name = ASCIIToUTF16("ccyear");
380 list_.push_back(new AutofillField(field, ASCIIToUTF16("year6")));
381
382 Parse();
383 ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
384 EXPECT_TRUE(ClassifyField());
385
386 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number1")) !=
387 field_type_map_.end());
388 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]);
389 EXPECT_EQ(0U, list_[0]->credit_card_number_start_index());
390
391 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number2")) !=
392 field_type_map_.end());
393 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number2")]);
394 EXPECT_EQ(4U, list_[1]->credit_card_number_start_index());
395
396 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number3")) !=
397 field_type_map_.end());
398 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number3")]);
399 EXPECT_EQ(8U, list_[2]->credit_card_number_start_index());
400
401 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number4")) !=
402 field_type_map_.end());
403 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number4")]);
404 EXPECT_EQ(12U, list_[3]->credit_card_number_start_index());
405
406 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("month5")) !=
407 field_type_map_.end());
408 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month5")]);
409 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("year6")) !=
410 field_type_map_.end());
411 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
412 field_type_map_[ASCIIToUTF16("year6")]);
413 }
414
415 TEST_F(CreditCardFieldTest, ParseCreditCardNumberWithInvalidSplit) {
416 FormFieldData field;
417 field.form_control_type = "text";
418
419 field.label = ASCIIToUTF16("Card Number");
420 field.name = ASCIIToUTF16("card_number_q1");
421 field.max_length = 4;
422 list_.push_back(new AutofillField(field, ASCIIToUTF16("number1")));
423
424 field.label = ASCIIToUTF16("Card Number");
425 field.name = ASCIIToUTF16("card_number_q2");
426 field.max_length = 20;
427 list_.push_back(new AutofillField(field, ASCIIToUTF16("number2")));
428
429 field.label = ASCIIToUTF16("Card Number");
430 field.name = ASCIIToUTF16("card_number_q3");
431 field.max_length = 4;
432 list_.push_back(new AutofillField(field, ASCIIToUTF16("number3")));
433
434 field.label = ASCIIToUTF16("Card Number");
435 field.name = ASCIIToUTF16("card_number_q4");
436 field.max_length = 4;
437 list_.push_back(new AutofillField(field, ASCIIToUTF16("number4")));
438
439 field.label = ASCIIToUTF16("Exp Month");
440 field.name = ASCIIToUTF16("ccmonth");
441 list_.push_back(new AutofillField(field, ASCIIToUTF16("month5")));
442
443 field.label = ASCIIToUTF16("Exp Year");
444 field.name = ASCIIToUTF16("ccyear");
445 list_.push_back(new AutofillField(field, ASCIIToUTF16("year6")));
446
447 Parse();
448 ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
449 EXPECT_FALSE(ClassifyField());
450
451 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number1")) ==
452 field_type_map_.end());
453 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number2")) ==
454 field_type_map_.end());
455 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number3")) ==
456 field_type_map_.end());
457 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number4")) ==
458 field_type_map_.end());
459 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("month5")) ==
460 field_type_map_.end());
461 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("year6")) ==
462 field_type_map_.end());
463 }
464
350 } // namespace autofill 465 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698