[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
[email protected] | 3b63f8f4 | 2011-03-28 01:54:15 | [diff] [blame] | 5 | #include "base/memory/scoped_ptr.h" |
| 6 | #include "base/memory/scoped_vector.h" |
[email protected] | be1ce6a7 | 2010-08-03 14:35:22 | [diff] [blame] | 7 | #include "base/utf_string_conversions.h" |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 8 | #include "chrome/browser/autofill/autofill_ecml.h" |
[email protected] | 8f608c5 | 2011-03-30 16:16:31 | [diff] [blame] | 9 | #include "chrome/browser/autofill/autofill_field.h" |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 10 | #include "chrome/browser/autofill/autofill_scanner.h" |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 11 | #include "chrome/browser/autofill/credit_card_field.h" |
| 12 | #include "testing/gtest/include/gtest/gtest.h" |
[email protected] | b143821 | 2010-04-03 00:30:59 | [diff] [blame] | 13 | #include "webkit/glue/form_field.h" |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 14 | |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 15 | class CreditCardFieldTest : public testing::Test { |
| 16 | public: |
| 17 | CreditCardFieldTest() {} |
| 18 | |
| 19 | protected: |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 20 | ScopedVector<const AutofillField> list_; |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 21 | scoped_ptr<CreditCardField> field_; |
| 22 | FieldTypeMap field_type_map_; |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 23 | |
| 24 | // Downcast for tests. |
| 25 | static CreditCardField* Parse(AutofillScanner* scanner, bool is_ecml) { |
| 26 | return static_cast<CreditCardField*>( |
| 27 | CreditCardField::Parse(scanner, is_ecml)); |
| 28 | } |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 29 | |
| 30 | private: |
| 31 | DISALLOW_COPY_AND_ASSIGN(CreditCardFieldTest); |
| 32 | }; |
| 33 | |
| 34 | TEST_F(CreditCardFieldTest, Empty) { |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 35 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 36 | field_.reset(Parse(&scanner, false)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 37 | ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get()); |
| 38 | } |
| 39 | |
| 40 | TEST_F(CreditCardFieldTest, NonParse) { |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 41 | list_.push_back(new AutofillField); |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 42 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 43 | field_.reset(Parse(&scanner, false)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 44 | ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get()); |
| 45 | } |
| 46 | |
| 47 | TEST_F(CreditCardFieldTest, ParseCreditCardNoNumber) { |
| 48 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 49 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Exp Month"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 50 | ASCIIToUTF16("ccmonth"), |
| 51 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 52 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 53 | 0, |
| 54 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 55 | ASCIIToUTF16("month1"))); |
| 56 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 57 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Exp Year"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 58 | ASCIIToUTF16("ccyear"), |
| 59 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 60 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 61 | 0, |
| 62 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 63 | ASCIIToUTF16("year1"))); |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 64 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 65 | field_.reset(Parse(&scanner, false)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 66 | ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get()); |
| 67 | } |
| 68 | |
| 69 | TEST_F(CreditCardFieldTest, ParseCreditCardNoDate) { |
| 70 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 71 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 72 | ASCIIToUTF16("card_number"), |
| 73 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 74 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 75 | 0, |
| 76 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 77 | ASCIIToUTF16("number1"))); |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 78 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 79 | field_.reset(Parse(&scanner, false)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 80 | ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get()); |
| 81 | } |
| 82 | |
| 83 | TEST_F(CreditCardFieldTest, ParseMiniumCreditCard) { |
| 84 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 85 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 86 | ASCIIToUTF16("card_number"), |
| 87 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 88 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 89 | 0, |
| 90 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 91 | ASCIIToUTF16("number1"))); |
| 92 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 93 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Exp Month"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 94 | ASCIIToUTF16("ccmonth"), |
| 95 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 96 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 97 | 0, |
| 98 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 99 | ASCIIToUTF16("month1"))); |
| 100 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 101 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Exp Year"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 102 | ASCIIToUTF16("ccyear"), |
| 103 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 104 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 105 | 0, |
| 106 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 107 | ASCIIToUTF16("year1"))); |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 108 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 109 | field_.reset(Parse(&scanner, false)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 110 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 111 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 112 | ASSERT_TRUE( |
| 113 | field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end()); |
| 114 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]); |
| 115 | ASSERT_TRUE( |
| 116 | field_type_map_.find(ASCIIToUTF16("month1")) != field_type_map_.end()); |
| 117 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month1")]); |
| 118 | ASSERT_TRUE( |
| 119 | field_type_map_.find(ASCIIToUTF16("year1")) != field_type_map_.end()); |
| 120 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 121 | field_type_map_[ASCIIToUTF16("year1")]); |
| 122 | } |
| 123 | |
| 124 | TEST_F(CreditCardFieldTest, ParseMiniumCreditCardEcml) { |
| 125 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 126 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"), |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 127 | ASCIIToUTF16(kEcmlCardNumber), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 128 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 129 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 130 | 0, |
| 131 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 132 | ASCIIToUTF16("number1"))); |
| 133 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 134 | new AutofillField( |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 135 | webkit_glue::FormField(ASCIIToUTF16("Exp Month"), |
| 136 | ASCIIToUTF16(kEcmlCardExpireMonth), |
| 137 | string16(), |
| 138 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 139 | 0, |
| 140 | false), |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 141 | ASCIIToUTF16("month1"))); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 142 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 143 | new AutofillField( |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 144 | webkit_glue::FormField(ASCIIToUTF16("Exp Year"), |
| 145 | ASCIIToUTF16(kEcmlCardExpireYear), |
| 146 | string16(), |
| 147 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 148 | 0, |
| 149 | false), |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 150 | ASCIIToUTF16("year1"))); |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 151 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 152 | field_.reset(Parse(&scanner, false)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 153 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 154 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 155 | ASSERT_TRUE( |
| 156 | field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end()); |
| 157 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]); |
| 158 | ASSERT_TRUE( |
| 159 | field_type_map_.find(ASCIIToUTF16("month1")) != field_type_map_.end()); |
| 160 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month1")]); |
| 161 | ASSERT_TRUE( |
| 162 | field_type_map_.find(ASCIIToUTF16("year1")) != field_type_map_.end()); |
| 163 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 164 | field_type_map_[ASCIIToUTF16("year1")]); |
| 165 | } |
| 166 | |
| 167 | TEST_F(CreditCardFieldTest, ParseFullCreditCard) { |
| 168 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 169 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Name on Card"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 170 | ASCIIToUTF16("name on card"), |
| 171 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 172 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 173 | 0, |
| 174 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 175 | ASCIIToUTF16("name1"))); |
| 176 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 177 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 178 | ASCIIToUTF16("card_number"), |
| 179 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 180 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 181 | 0, |
| 182 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 183 | ASCIIToUTF16("number1"))); |
| 184 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 185 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Exp Month"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 186 | ASCIIToUTF16("ccmonth"), |
| 187 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 188 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 189 | 0, |
| 190 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 191 | ASCIIToUTF16("month1"))); |
| 192 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 193 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Exp Year"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 194 | ASCIIToUTF16("ccyear"), |
| 195 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 196 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 197 | 0, |
| 198 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 199 | ASCIIToUTF16("year1"))); |
| 200 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 201 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Verification"), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 202 | ASCIIToUTF16("verification"), |
| 203 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 204 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 205 | 0, |
| 206 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 207 | ASCIIToUTF16("cvc1"))); |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 208 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 209 | field_.reset(Parse(&scanner, false)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 210 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 211 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 212 | ASSERT_TRUE( |
| 213 | field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); |
| 214 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]); |
| 215 | ASSERT_TRUE( |
| 216 | field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end()); |
| 217 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]); |
| 218 | ASSERT_TRUE( |
| 219 | field_type_map_.find(ASCIIToUTF16("month1")) != field_type_map_.end()); |
| 220 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month1")]); |
| 221 | ASSERT_TRUE( |
| 222 | field_type_map_.find(ASCIIToUTF16("year1")) != field_type_map_.end()); |
| 223 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 224 | field_type_map_[ASCIIToUTF16("year1")]); |
[email protected] | cea1d11 | 2010-07-01 00:57:33 | [diff] [blame] | 225 | // We don't store CVV. |
| 226 | EXPECT_TRUE( |
| 227 | field_type_map_.find(ASCIIToUTF16("cvc1")) == field_type_map_.end()); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 228 | } |
| 229 | |
| 230 | TEST_F(CreditCardFieldTest, ParseFullCreditCardEcml) { |
| 231 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 232 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Name on Card"), |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 233 | ASCIIToUTF16(kEcmlCardHolder), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 234 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 235 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 236 | 0, |
| 237 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 238 | ASCIIToUTF16("name1"))); |
| 239 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 240 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"), |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 241 | ASCIIToUTF16(kEcmlCardNumber), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 242 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 243 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 244 | 0, |
| 245 | false), |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 246 | ASCIIToUTF16("number1"))); |
| 247 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 248 | new AutofillField( |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 249 | webkit_glue::FormField(ASCIIToUTF16("Exp Month"), |
| 250 | ASCIIToUTF16(kEcmlCardExpireMonth), |
| 251 | string16(), |
| 252 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 253 | 0, |
| 254 | false), |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 255 | ASCIIToUTF16("month1"))); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 256 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 257 | new AutofillField( |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 258 | webkit_glue::FormField(ASCIIToUTF16("Exp Year"), |
| 259 | ASCIIToUTF16(kEcmlCardExpireYear), |
| 260 | string16(), |
| 261 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 262 | 0, |
| 263 | false), |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 264 | ASCIIToUTF16("year1"))); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 265 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 266 | new AutofillField( |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 267 | webkit_glue::FormField(ASCIIToUTF16("Verification"), |
| 268 | ASCIIToUTF16(kEcmlCardVerification), |
| 269 | string16(), |
| 270 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 271 | 0, |
| 272 | false), |
[email protected] | 50134dd6 | 2010-07-14 20:04:39 | [diff] [blame] | 273 | ASCIIToUTF16("cvc1"))); |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 274 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 275 | field_.reset(Parse(&scanner, false)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 276 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 277 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 278 | ASSERT_TRUE( |
| 279 | field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); |
| 280 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]); |
| 281 | ASSERT_TRUE( |
| 282 | field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end()); |
| 283 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]); |
| 284 | ASSERT_TRUE( |
| 285 | field_type_map_.find(ASCIIToUTF16("month1")) != field_type_map_.end()); |
| 286 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month1")]); |
| 287 | ASSERT_TRUE( |
| 288 | field_type_map_.find(ASCIIToUTF16("year1")) != field_type_map_.end()); |
| 289 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 290 | field_type_map_[ASCIIToUTF16("year1")]); |
[email protected] | cea1d11 | 2010-07-01 00:57:33 | [diff] [blame] | 291 | // We don't store the CVV. |
| 292 | EXPECT_TRUE( |
| 293 | field_type_map_.find(ASCIIToUTF16("cvc1")) == field_type_map_.end()); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 294 | } |
| 295 | |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 296 | TEST_F(CreditCardFieldTest, ParseExpMonthYear) { |
| 297 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 298 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Name on Card"), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 299 | ASCIIToUTF16("Name"), |
| 300 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 301 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 302 | 0, |
| 303 | false), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 304 | ASCIIToUTF16("name"))); |
| 305 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 306 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 307 | ASCIIToUTF16("Card"), |
| 308 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 309 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 310 | 0, |
| 311 | false), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 312 | ASCIIToUTF16("number"))); |
| 313 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 314 | new AutofillField( |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 315 | webkit_glue::FormField(ASCIIToUTF16("ExpDate Month / Year"), |
| 316 | ASCIIToUTF16("ExpDate"), |
| 317 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 318 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 319 | 0, |
| 320 | false), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 321 | ASCIIToUTF16("month"))); |
| 322 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 323 | new AutofillField( |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 324 | webkit_glue::FormField(ASCIIToUTF16("ExpDate Month / Year"), |
| 325 | ASCIIToUTF16("ExpDate"), |
| 326 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 327 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 328 | 0, |
| 329 | false), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 330 | ASCIIToUTF16("year"))); |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 331 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 332 | field_.reset(Parse(&scanner, false)); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 333 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 334 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 335 | ASSERT_TRUE( |
| 336 | field_type_map_.find(ASCIIToUTF16("name")) != field_type_map_.end()); |
| 337 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name")]); |
| 338 | ASSERT_TRUE( |
| 339 | field_type_map_.find(ASCIIToUTF16("number")) != field_type_map_.end()); |
| 340 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number")]); |
| 341 | ASSERT_TRUE( |
| 342 | field_type_map_.find(ASCIIToUTF16("month")) != field_type_map_.end()); |
| 343 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month")]); |
| 344 | ASSERT_TRUE( |
| 345 | field_type_map_.find(ASCIIToUTF16("year")) != field_type_map_.end()); |
| 346 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 347 | field_type_map_[ASCIIToUTF16("year")]); |
| 348 | } |
| 349 | |
| 350 | TEST_F(CreditCardFieldTest, ParseExpMonthYear2) { |
| 351 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 352 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Name on Card"), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 353 | ASCIIToUTF16("Name"), |
| 354 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 355 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 356 | 0, |
| 357 | false), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 358 | ASCIIToUTF16("name"))); |
| 359 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 360 | new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 361 | ASCIIToUTF16("Card"), |
| 362 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 363 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 364 | 0, |
| 365 | false), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 366 | ASCIIToUTF16("number"))); |
| 367 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 368 | new AutofillField( |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 369 | webkit_glue::FormField(ASCIIToUTF16("Expiration date Month / Year"), |
| 370 | ASCIIToUTF16("ExpDate"), |
| 371 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 372 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 373 | 0, |
| 374 | false), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 375 | ASCIIToUTF16("month"))); |
| 376 | list_.push_back( |
[email protected] | c87481cd | 2011-03-04 12:29:57 | [diff] [blame] | 377 | new AutofillField( |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 378 | webkit_glue::FormField(ASCIIToUTF16("Expiration date Month / Year"), |
| 379 | ASCIIToUTF16("ExpDate"), |
| 380 | string16(), |
[email protected] | ee0e2d9 | 2010-05-14 19:21:18 | [diff] [blame] | 381 | ASCIIToUTF16("text"), |
[email protected] | 3bb80e4 | 2010-11-29 22:27:16 | [diff] [blame] | 382 | 0, |
| 383 | false), |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 384 | ASCIIToUTF16("year"))); |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 385 | AutofillScanner scanner(list_.get()); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame^] | 386 | field_.reset(Parse(&scanner, false)); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 387 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 388 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 389 | ASSERT_TRUE( |
| 390 | field_type_map_.find(ASCIIToUTF16("name")) != field_type_map_.end()); |
| 391 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name")]); |
| 392 | ASSERT_TRUE( |
| 393 | field_type_map_.find(ASCIIToUTF16("number")) != field_type_map_.end()); |
| 394 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number")]); |
| 395 | ASSERT_TRUE( |
| 396 | field_type_map_.find(ASCIIToUTF16("month")) != field_type_map_.end()); |
| 397 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month")]); |
| 398 | ASSERT_TRUE( |
| 399 | field_type_map_.find(ASCIIToUTF16("year")) != field_type_map_.end()); |
| 400 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 401 | field_type_map_[ASCIIToUTF16("year")]); |
| 402 | } |