summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autofill/credit_card_field_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/autofill/credit_card_field_unittest.cc')
-rw-r--r--chrome/browser/autofill/credit_card_field_unittest.cc381
1 files changed, 381 insertions, 0 deletions
diff --git a/chrome/browser/autofill/credit_card_field_unittest.cc b/chrome/browser/autofill/credit_card_field_unittest.cc
new file mode 100644
index 0000000..d674bc5
--- /dev/null
+++ b/chrome/browser/autofill/credit_card_field_unittest.cc
@@ -0,0 +1,381 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/scoped_ptr.h"
+#include "base/scoped_vector.h"
+#include "chrome/browser/autofill/credit_card_field.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "webkit/glue/form_field.h"
+
+namespace {
+
+class CreditCardFieldTest : public testing::Test {
+ public:
+ CreditCardFieldTest() {}
+
+ protected:
+ ScopedVector<AutoFillField> list_;
+ scoped_ptr<CreditCardField> field_;
+ FieldTypeMap field_type_map_;
+ std::vector<AutoFillField*>::const_iterator iter_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(CreditCardFieldTest);
+};
+
+TEST_F(CreditCardFieldTest, Empty) {
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get());
+}
+
+TEST_F(CreditCardFieldTest, NonParse) {
+ list_.push_back(new AutoFillField);
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get());
+}
+
+TEST_F(CreditCardFieldTest, ParseCreditCardNoNumber) {
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Exp Month"),
+ ASCIIToUTF16("ccmonth"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("month1")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Exp Year"),
+ ASCIIToUTF16("ccyear"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("year1")));
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get());
+}
+
+TEST_F(CreditCardFieldTest, ParseCreditCardNoDate) {
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"),
+ ASCIIToUTF16("card_number"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("number1")));
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_EQ(static_cast<CreditCardField*>(NULL), field_.get());
+}
+
+TEST_F(CreditCardFieldTest, ParseMiniumCreditCard) {
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"),
+ ASCIIToUTF16("card_number"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("number1")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Exp Month"),
+ ASCIIToUTF16("ccmonth"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("month1")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Exp Year"),
+ ASCIIToUTF16("ccyear"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("year1")));
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
+ ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("month1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("year1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ field_type_map_[ASCIIToUTF16("year1")]);
+}
+
+TEST_F(CreditCardFieldTest, ParseMiniumCreditCardEcml) {
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"),
+ ASCIIToUTF16(kEcmlCardNumber),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("number1")));
+ list_.push_back(
+ new AutoFillField(
+ webkit_glue::FormField(ASCIIToUTF16("Exp Month"),
+ ASCIIToUTF16(kEcmlCardExpireMonth),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("month1")));
+ list_.push_back(
+ new AutoFillField(
+ webkit_glue::FormField(ASCIIToUTF16("Exp Year"),
+ ASCIIToUTF16(kEcmlCardExpireYear),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("year1")));
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
+ ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("month1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("year1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ field_type_map_[ASCIIToUTF16("year1")]);
+}
+
+TEST_F(CreditCardFieldTest, ParseFullCreditCard) {
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Name on Card"),
+ ASCIIToUTF16("name on card"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("name1")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"),
+ ASCIIToUTF16("card_number"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("number1")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Exp Month"),
+ ASCIIToUTF16("ccmonth"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("month1")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Exp Year"),
+ ASCIIToUTF16("ccyear"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("year1")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Verification"),
+ ASCIIToUTF16("verification"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("cvc1")));
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
+ ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("month1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("year1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ field_type_map_[ASCIIToUTF16("year1")]);
+ // We don't store CVV.
+ EXPECT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("cvc1")) == field_type_map_.end());
+}
+
+TEST_F(CreditCardFieldTest, ParseFullCreditCardEcml) {
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Name on Card"),
+ ASCIIToUTF16(kEcmlCardHolder),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("name1")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"),
+ ASCIIToUTF16(kEcmlCardNumber),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("number1")));
+ list_.push_back(
+ new AutoFillField(
+ webkit_glue::FormField(ASCIIToUTF16("Exp Month"),
+ ASCIIToUTF16(kEcmlCardExpireMonth),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("month1")));
+ list_.push_back(
+ new AutoFillField(
+ webkit_glue::FormField(ASCIIToUTF16("Exp Year"),
+ ASCIIToUTF16(kEcmlCardExpireYear),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("year1")));
+ list_.push_back(
+ new AutoFillField(
+ webkit_glue::FormField(ASCIIToUTF16("Verification"),
+ ASCIIToUTF16(kEcmlCardVerification),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("cvc1")));
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
+ ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("number1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("month1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month1")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("year1")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ field_type_map_[ASCIIToUTF16("year1")]);
+ // We don't store the CVV.
+ EXPECT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("cvc1")) == field_type_map_.end());
+}
+
+TEST_F(CreditCardFieldTest, ParseExpMonthYear) {
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Name on Card"),
+ ASCIIToUTF16("Name"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("name")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"),
+ ASCIIToUTF16("Card"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("number")));
+ list_.push_back(
+ new AutoFillField(
+ webkit_glue::FormField(ASCIIToUTF16("ExpDate Month / Year"),
+ ASCIIToUTF16("ExpDate"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("month")));
+ list_.push_back(
+ new AutoFillField(
+ webkit_glue::FormField(ASCIIToUTF16("ExpDate Month / Year"),
+ ASCIIToUTF16("ExpDate"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("year")));
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
+ ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("name")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("number")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("month")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("year")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ field_type_map_[ASCIIToUTF16("year")]);
+}
+
+TEST_F(CreditCardFieldTest, ParseExpMonthYear2) {
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Name on Card"),
+ ASCIIToUTF16("Name"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("name")));
+ list_.push_back(
+ new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Card Number"),
+ ASCIIToUTF16("Card"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("number")));
+ list_.push_back(
+ new AutoFillField(
+ webkit_glue::FormField(ASCIIToUTF16("Expiration date Month / Year"),
+ ASCIIToUTF16("ExpDate"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("month")));
+ list_.push_back(
+ new AutoFillField(
+ webkit_glue::FormField(ASCIIToUTF16("Expiration date Month / Year"),
+ ASCIIToUTF16("ExpDate"),
+ string16(),
+ ASCIIToUTF16("text"),
+ 0),
+ ASCIIToUTF16("year")));
+ list_.push_back(NULL);
+ iter_ = list_.begin();
+ field_.reset(CreditCardField::Parse(&iter_, false));
+ ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
+ ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("name")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("number")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("month")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month")]);
+ ASSERT_TRUE(
+ field_type_map_.find(ASCIIToUTF16("year")) != field_type_map_.end());
+ EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ field_type_map_[ASCIIToUTF16("year")]);
+}
+
+} // namespace
+