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