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