[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] | e4b2fa3 | 2013-03-09 22:56:56 | [diff] [blame] | 8 | #include "components/autofill/browser/autofill_field.h" |
| 9 | #include "components/autofill/browser/autofill_scanner.h" |
| 10 | #include "components/autofill/browser/credit_card_field.h" |
[email protected] | edf48d4 | 2013-03-07 05:44:43 | [diff] [blame] | 11 | #include "components/autofill/common/form_field_data.h" |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 12 | #include "testing/gtest/include/gtest/gtest.h" |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 13 | |
[email protected] | e217c563 | 2013-04-12 19:11:48 | [diff] [blame^] | 14 | namespace autofill { |
| 15 | |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 16 | class CreditCardFieldTest : public testing::Test { |
| 17 | public: |
| 18 | CreditCardFieldTest() {} |
| 19 | |
| 20 | protected: |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame] | 21 | ScopedVector<const AutofillField> list_; |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 22 | scoped_ptr<CreditCardField> field_; |
| 23 | FieldTypeMap field_type_map_; |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame] | 24 | |
| 25 | // Downcast for tests. |
[email protected] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 26 | static CreditCardField* Parse(AutofillScanner* scanner) { |
[email protected] | 7b4f0fd0 | 2013-02-21 05:51:23 | [diff] [blame] | 27 | return static_cast<CreditCardField*>(CreditCardField::Parse(scanner)); |
[email protected] | 2033dcf | 2011-05-27 01:47:40 | [diff] [blame] | 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] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 36 | field_.reset(Parse(&scanner)); |
[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] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 43 | field_.reset(Parse(&scanner)); |
[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) { |
[email protected] | 1ecbe86 | 2012-10-05 01:29:14 | [diff] [blame] | 48 | FormFieldData field; |
[email protected] | 47fcb0e | 2012-10-24 03:52:22 | [diff] [blame] | 49 | field.form_control_type = "text"; |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 50 | |
| 51 | field.label = ASCIIToUTF16("Exp Month"); |
| 52 | field.name = ASCIIToUTF16("ccmonth"); |
| 53 | list_.push_back(new AutofillField(field, ASCIIToUTF16("month1"))); |
| 54 | |
| 55 | field.label = ASCIIToUTF16("Exp Year"); |
| 56 | field.name = ASCIIToUTF16("ccyear"); |
| 57 | list_.push_back(new AutofillField(field, ASCIIToUTF16("year2"))); |
| 58 | |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 59 | AutofillScanner scanner(list_.get()); |
[email protected] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 60 | field_.reset(Parse(&scanner)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 61 | ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get()); |
| 62 | } |
| 63 | |
| 64 | TEST_F(CreditCardFieldTest, ParseCreditCardNoDate) { |
[email protected] | 1ecbe86 | 2012-10-05 01:29:14 | [diff] [blame] | 65 | FormFieldData field; |
[email protected] | 47fcb0e | 2012-10-24 03:52:22 | [diff] [blame] | 66 | field.form_control_type = "text"; |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 67 | |
| 68 | field.label = ASCIIToUTF16("Card Number"); |
| 69 | field.name = ASCIIToUTF16("card_number"); |
| 70 | list_.push_back(new AutofillField(field, ASCIIToUTF16("number1"))); |
| 71 | |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 72 | AutofillScanner scanner(list_.get()); |
[email protected] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 73 | field_.reset(Parse(&scanner)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 74 | ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get()); |
| 75 | } |
| 76 | |
| 77 | TEST_F(CreditCardFieldTest, ParseMiniumCreditCard) { |
[email protected] | 1ecbe86 | 2012-10-05 01:29:14 | [diff] [blame] | 78 | FormFieldData field; |
[email protected] | 47fcb0e | 2012-10-24 03:52:22 | [diff] [blame] | 79 | field.form_control_type = "text"; |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 80 | |
| 81 | field.label = ASCIIToUTF16("Card Number"); |
| 82 | field.name = ASCIIToUTF16("card_number"); |
| 83 | list_.push_back(new AutofillField(field, ASCIIToUTF16("number1"))); |
| 84 | |
| 85 | field.label = ASCIIToUTF16("Exp Month"); |
| 86 | field.name = ASCIIToUTF16("ccmonth"); |
| 87 | list_.push_back(new AutofillField(field, ASCIIToUTF16("month2"))); |
| 88 | |
| 89 | field.label = ASCIIToUTF16("Exp Year"); |
| 90 | field.name = ASCIIToUTF16("ccyear"); |
| 91 | list_.push_back(new AutofillField(field, ASCIIToUTF16("year3"))); |
| 92 | |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 93 | AutofillScanner scanner(list_.get()); |
[email protected] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 94 | field_.reset(Parse(&scanner)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 95 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 96 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 97 | ASSERT_TRUE( |
| 98 | field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end()); |
| 99 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]); |
| 100 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 101 | field_type_map_.find(ASCIIToUTF16("month2")) != field_type_map_.end()); |
| 102 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month2")]); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 103 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 104 | field_type_map_.find(ASCIIToUTF16("year3")) != field_type_map_.end()); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 105 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 106 | field_type_map_[ASCIIToUTF16("year3")]); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 107 | } |
| 108 | |
| 109 | TEST_F(CreditCardFieldTest, ParseFullCreditCard) { |
[email protected] | 1ecbe86 | 2012-10-05 01:29:14 | [diff] [blame] | 110 | FormFieldData field; |
[email protected] | 47fcb0e | 2012-10-24 03:52:22 | [diff] [blame] | 111 | field.form_control_type = "text"; |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 112 | |
[email protected] | 5fa9ce5 | 2012-10-27 18:20:42 | [diff] [blame] | 113 | field.label = ASCIIToUTF16("Card Type"); |
| 114 | field.name = ASCIIToUTF16("card_type"); |
| 115 | list_.push_back(new AutofillField(field, ASCIIToUTF16("type"))); |
| 116 | |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 117 | field.label = ASCIIToUTF16("Name on Card"); |
| 118 | field.name = ASCIIToUTF16("name_on_card"); |
[email protected] | 5fa9ce5 | 2012-10-27 18:20:42 | [diff] [blame] | 119 | list_.push_back(new AutofillField(field, ASCIIToUTF16("name"))); |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 120 | |
| 121 | field.label = ASCIIToUTF16("Card Number"); |
| 122 | field.name = ASCIIToUTF16("card_number"); |
[email protected] | 5fa9ce5 | 2012-10-27 18:20:42 | [diff] [blame] | 123 | list_.push_back(new AutofillField(field, ASCIIToUTF16("number"))); |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 124 | |
| 125 | field.label = ASCIIToUTF16("Exp Month"); |
| 126 | field.name = ASCIIToUTF16("ccmonth"); |
[email protected] | 5fa9ce5 | 2012-10-27 18:20:42 | [diff] [blame] | 127 | list_.push_back(new AutofillField(field, ASCIIToUTF16("month"))); |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 128 | |
| 129 | field.label = ASCIIToUTF16("Exp Year"); |
| 130 | field.name = ASCIIToUTF16("ccyear"); |
[email protected] | 5fa9ce5 | 2012-10-27 18:20:42 | [diff] [blame] | 131 | list_.push_back(new AutofillField(field, ASCIIToUTF16("year"))); |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 132 | |
| 133 | field.label = ASCIIToUTF16("Verification"); |
| 134 | field.name = ASCIIToUTF16("verification"); |
[email protected] | 5fa9ce5 | 2012-10-27 18:20:42 | [diff] [blame] | 135 | list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc"))); |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 136 | |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 137 | AutofillScanner scanner(list_.get()); |
[email protected] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 138 | field_.reset(Parse(&scanner)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 139 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 140 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 141 | ASSERT_TRUE( |
[email protected] | 5fa9ce5 | 2012-10-27 18:20:42 | [diff] [blame] | 142 | field_type_map_.find(ASCIIToUTF16("type")) != field_type_map_.end()); |
| 143 | EXPECT_EQ(CREDIT_CARD_TYPE, field_type_map_[ASCIIToUTF16("type")]); |
| 144 | ASSERT_TRUE( |
| 145 | field_type_map_.find(ASCIIToUTF16("name")) != field_type_map_.end()); |
| 146 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name")]); |
| 147 | ASSERT_TRUE( |
| 148 | field_type_map_.find(ASCIIToUTF16("number")) != field_type_map_.end()); |
| 149 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number")]); |
| 150 | ASSERT_TRUE( |
| 151 | field_type_map_.find(ASCIIToUTF16("month")) != field_type_map_.end()); |
| 152 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month")]); |
| 153 | ASSERT_TRUE( |
| 154 | field_type_map_.find(ASCIIToUTF16("year")) != field_type_map_.end()); |
| 155 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 156 | field_type_map_[ASCIIToUTF16("year")]); |
[email protected] | a76e9d1 | 2012-11-08 08:57:37 | [diff] [blame] | 157 | ASSERT_TRUE( |
| 158 | field_type_map_.find(ASCIIToUTF16("cvc")) != field_type_map_.end()); |
| 159 | EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE, |
| 160 | field_type_map_[ASCIIToUTF16("cvc")]); |
[email protected] | 224d21b8 | 2010-03-31 17:43:01 | [diff] [blame] | 161 | } |
| 162 | |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 163 | TEST_F(CreditCardFieldTest, ParseExpMonthYear) { |
[email protected] | 1ecbe86 | 2012-10-05 01:29:14 | [diff] [blame] | 164 | FormFieldData field; |
[email protected] | 47fcb0e | 2012-10-24 03:52:22 | [diff] [blame] | 165 | field.form_control_type = "text"; |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 166 | |
| 167 | field.label = ASCIIToUTF16("Name on Card"); |
| 168 | field.name = ASCIIToUTF16("name_on_card"); |
| 169 | list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); |
| 170 | |
| 171 | field.label = ASCIIToUTF16("Card Number"); |
| 172 | field.name = ASCIIToUTF16("card_number"); |
| 173 | list_.push_back(new AutofillField(field, ASCIIToUTF16("number2"))); |
| 174 | |
| 175 | field.label = ASCIIToUTF16("ExpDate Month / Year"); |
| 176 | field.name = ASCIIToUTF16("ExpDate"); |
| 177 | list_.push_back(new AutofillField(field, ASCIIToUTF16("month3"))); |
| 178 | |
| 179 | field.label = ASCIIToUTF16("ExpDate Month / Year"); |
| 180 | field.name = ASCIIToUTF16("ExpDate"); |
| 181 | list_.push_back(new AutofillField(field, ASCIIToUTF16("year4"))); |
| 182 | |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 183 | AutofillScanner scanner(list_.get()); |
[email protected] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 184 | field_.reset(Parse(&scanner)); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 185 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 186 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 187 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 188 | field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); |
| 189 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 190 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 191 | field_type_map_.find(ASCIIToUTF16("number2")) != field_type_map_.end()); |
| 192 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number2")]); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 193 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 194 | field_type_map_.find(ASCIIToUTF16("month3")) != field_type_map_.end()); |
| 195 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month3")]); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 196 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 197 | field_type_map_.find(ASCIIToUTF16("year4")) != field_type_map_.end()); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 198 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 199 | field_type_map_[ASCIIToUTF16("year4")]); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 200 | } |
| 201 | |
| 202 | TEST_F(CreditCardFieldTest, ParseExpMonthYear2) { |
[email protected] | 1ecbe86 | 2012-10-05 01:29:14 | [diff] [blame] | 203 | FormFieldData field; |
[email protected] | 47fcb0e | 2012-10-24 03:52:22 | [diff] [blame] | 204 | field.form_control_type = "text"; |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 205 | |
| 206 | field.label = ASCIIToUTF16("Name on Card"); |
| 207 | field.name = ASCIIToUTF16("name_on_card"); |
| 208 | list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); |
| 209 | |
| 210 | field.label = ASCIIToUTF16("Card Number"); |
| 211 | field.name = ASCIIToUTF16("card_number"); |
| 212 | list_.push_back(new AutofillField(field, ASCIIToUTF16("number2"))); |
| 213 | |
| 214 | field.label = ASCIIToUTF16("Expiration date Month / Year"); |
| 215 | field.name = ASCIIToUTF16("ExpDate"); |
| 216 | list_.push_back(new AutofillField(field, ASCIIToUTF16("month3"))); |
| 217 | |
| 218 | field.label = ASCIIToUTF16("Expiration date Month / Year"); |
| 219 | field.name = ASCIIToUTF16("ExpDate"); |
| 220 | list_.push_back(new AutofillField(field, ASCIIToUTF16("year4"))); |
| 221 | |
[email protected] | 2a95855 | 2011-05-05 04:01:21 | [diff] [blame] | 222 | AutofillScanner scanner(list_.get()); |
[email protected] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 223 | field_.reset(Parse(&scanner)); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 224 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
[email protected] | 1a9d0de2 | 2011-05-19 23:42:46 | [diff] [blame] | 225 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 226 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 227 | field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); |
| 228 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 229 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 230 | field_type_map_.find(ASCIIToUTF16("number2")) != field_type_map_.end()); |
| 231 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number2")]); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 232 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 233 | field_type_map_.find(ASCIIToUTF16("month3")) != field_type_map_.end()); |
| 234 | EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month3")]); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 235 | ASSERT_TRUE( |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 236 | field_type_map_.find(ASCIIToUTF16("year4")) != field_type_map_.end()); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 237 | EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 238 | field_type_map_[ASCIIToUTF16("year4")]); |
[email protected] | 3651cf8 | 2010-05-07 17:14:34 | [diff] [blame] | 239 | } |
[email protected] | a2383318 | 2011-07-01 02:30:59 | [diff] [blame] | 240 | |
[email protected] | 1a55d6c | 2011-08-17 18:58:15 | [diff] [blame] | 241 | TEST_F(CreditCardFieldTest, ParseExpField) { |
[email protected] | 1ecbe86 | 2012-10-05 01:29:14 | [diff] [blame] | 242 | FormFieldData field; |
[email protected] | 47fcb0e | 2012-10-24 03:52:22 | [diff] [blame] | 243 | field.form_control_type = "text"; |
[email protected] | 1a55d6c | 2011-08-17 18:58:15 | [diff] [blame] | 244 | |
| 245 | field.label = ASCIIToUTF16("Name on Card"); |
| 246 | field.name = ASCIIToUTF16("name_on_card"); |
| 247 | list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); |
| 248 | |
| 249 | field.label = ASCIIToUTF16("Card Number"); |
| 250 | field.name = ASCIIToUTF16("card_number"); |
| 251 | list_.push_back(new AutofillField(field, ASCIIToUTF16("number2"))); |
| 252 | |
| 253 | field.label = ASCIIToUTF16("Expiration Date (MM/YYYY)"); |
| 254 | field.name = ASCIIToUTF16("cc_exp"); |
| 255 | list_.push_back(new AutofillField(field, ASCIIToUTF16("exp3"))); |
| 256 | |
| 257 | AutofillScanner scanner(list_.get()); |
| 258 | field_.reset(Parse(&scanner)); |
| 259 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
| 260 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 261 | ASSERT_TRUE( |
| 262 | field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); |
| 263 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]); |
| 264 | ASSERT_TRUE( |
| 265 | field_type_map_.find(ASCIIToUTF16("number2")) != field_type_map_.end()); |
| 266 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number2")]); |
| 267 | ASSERT_TRUE( |
| 268 | field_type_map_.find(ASCIIToUTF16("exp3")) != field_type_map_.end()); |
| 269 | EXPECT_EQ(CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, |
| 270 | field_type_map_[ASCIIToUTF16("exp3")]); |
| 271 | } |
| 272 | |
| 273 | TEST_F(CreditCardFieldTest, ParseExpField2DigitYear) { |
[email protected] | 1ecbe86 | 2012-10-05 01:29:14 | [diff] [blame] | 274 | FormFieldData field; |
[email protected] | 47fcb0e | 2012-10-24 03:52:22 | [diff] [blame] | 275 | field.form_control_type = "text"; |
[email protected] | 1a55d6c | 2011-08-17 18:58:15 | [diff] [blame] | 276 | |
| 277 | field.label = ASCIIToUTF16("Name on Card"); |
| 278 | field.name = ASCIIToUTF16("name_on_card"); |
| 279 | list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); |
| 280 | |
| 281 | field.label = ASCIIToUTF16("Card Number"); |
| 282 | field.name = ASCIIToUTF16("card_number"); |
| 283 | list_.push_back(new AutofillField(field, ASCIIToUTF16("number2"))); |
| 284 | |
| 285 | field.label = ASCIIToUTF16("Expiration Date (MM/YY)"); |
| 286 | field.name = ASCIIToUTF16("cc_exp"); |
| 287 | list_.push_back(new AutofillField(field, ASCIIToUTF16("exp3"))); |
| 288 | |
| 289 | AutofillScanner scanner(list_.get()); |
| 290 | field_.reset(Parse(&scanner)); |
| 291 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
| 292 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 293 | ASSERT_TRUE( |
| 294 | field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); |
| 295 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]); |
| 296 | ASSERT_TRUE( |
| 297 | field_type_map_.find(ASCIIToUTF16("number2")) != field_type_map_.end()); |
| 298 | EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number2")]); |
| 299 | ASSERT_TRUE( |
| 300 | field_type_map_.find(ASCIIToUTF16("exp3")) != field_type_map_.end()); |
| 301 | EXPECT_EQ(CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, |
| 302 | field_type_map_[ASCIIToUTF16("exp3")]); |
| 303 | } |
| 304 | |
[email protected] | a2383318 | 2011-07-01 02:30:59 | [diff] [blame] | 305 | TEST_F(CreditCardFieldTest, ParseCreditCardHolderNameWithCCFullName) { |
[email protected] | 1ecbe86 | 2012-10-05 01:29:14 | [diff] [blame] | 306 | FormFieldData field; |
[email protected] | 47fcb0e | 2012-10-24 03:52:22 | [diff] [blame] | 307 | field.form_control_type = "text"; |
[email protected] | eb4b8b4 | 2011-08-09 01:33:46 | [diff] [blame] | 308 | |
| 309 | field.label = ASCIIToUTF16("Name"); |
| 310 | field.name = ASCIIToUTF16("ccfullname"); |
| 311 | list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); |
| 312 | |
[email protected] | a2383318 | 2011-07-01 02:30:59 | [diff] [blame] | 313 | AutofillScanner scanner(list_.get()); |
[email protected] | 194e46f3 | 2011-08-08 20:01:18 | [diff] [blame] | 314 | field_.reset(Parse(&scanner)); |
[email protected] | a2383318 | 2011-07-01 02:30:59 | [diff] [blame] | 315 | ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get()); |
| 316 | ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 317 | ASSERT_TRUE( |
| 318 | field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); |
| 319 | EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]); |
| 320 | } |
[email protected] | e217c563 | 2013-04-12 19:11:48 | [diff] [blame^] | 321 | |
| 322 | } // namespace autofill |