| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/utf_string_conversions.h" | 6 #include "base/utf_string_conversions.h" |
| 7 #include "chrome/browser/autofill/autofill_common_test.h" | 7 #include "chrome/browser/autofill/autofill_common_test.h" |
| 8 #include "chrome/browser/autofill/credit_card.h" | 8 #include "chrome/browser/autofill/credit_card.h" |
| 9 #include "chrome/test/testing_browser_process_test.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 11 |
| 11 namespace { | 12 namespace { |
| 12 | 13 |
| 13 // From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card
_numbers.htm | 14 // From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card
_numbers.htm |
| 14 const char* const kValidNumbers[] = { | 15 const char* const kValidNumbers[] = { |
| 15 "378282246310005", | 16 "378282246310005", |
| 16 "3714 4963 5398 431", | 17 "3714 4963 5398 431", |
| 17 "3787-3449-3671-000", | 18 "3787-3449-3671-000", |
| 18 "5610591081018250", | 19 "5610591081018250", |
| (...skipping 13 matching lines...) Expand all Loading... |
| 32 }; | 33 }; |
| 33 const char* const kInvalidNumbers[] = { | 34 const char* const kInvalidNumbers[] = { |
| 34 "4111 1111 112", /* too short */ | 35 "4111 1111 112", /* too short */ |
| 35 "41111111111111111115", /* too long */ | 36 "41111111111111111115", /* too long */ |
| 36 "4111-1111-1111-1110", /* wrong Luhn checksum */ | 37 "4111-1111-1111-1110", /* wrong Luhn checksum */ |
| 37 "3056 9309 0259 04aa", /* non-digit characters */ | 38 "3056 9309 0259 04aa", /* non-digit characters */ |
| 38 }; | 39 }; |
| 39 | 40 |
| 40 } // namespace | 41 } // namespace |
| 41 | 42 |
| 43 typedef TestingBrowserProcessTest CreditCardTest; |
| 44 |
| 42 // Tests credit card summary string generation. This test simulates a variety | 45 // Tests credit card summary string generation. This test simulates a variety |
| 43 // of different possible summary strings. Variations occur based on the | 46 // of different possible summary strings. Variations occur based on the |
| 44 // existence of credit card number, month, and year fields. | 47 // existence of credit card number, month, and year fields. |
| 45 TEST(CreditCardTest, PreviewSummaryAndObfuscatedNumberStrings) { | 48 TEST_F(CreditCardTest, PreviewSummaryAndObfuscatedNumberStrings) { |
| 46 // Case 0: empty credit card. | 49 // Case 0: empty credit card. |
| 47 CreditCard credit_card0; | 50 CreditCard credit_card0; |
| 48 string16 summary0 = credit_card0.Label(); | 51 string16 summary0 = credit_card0.Label(); |
| 49 EXPECT_EQ(string16(), summary0); | 52 EXPECT_EQ(string16(), summary0); |
| 50 string16 obfuscated0 = credit_card0.ObfuscatedNumber(); | 53 string16 obfuscated0 = credit_card0.ObfuscatedNumber(); |
| 51 EXPECT_EQ(string16(), obfuscated0); | 54 EXPECT_EQ(string16(), obfuscated0); |
| 52 | 55 |
| 53 // Case 00: Empty credit card with empty strings. | 56 // Case 00: Empty credit card with empty strings. |
| 54 CreditCard credit_card00; | 57 CreditCard credit_card00; |
| 55 autofill_test::SetCreditCardInfo(&credit_card00, | 58 autofill_test::SetCreditCardInfo(&credit_card00, |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 // Case 4: Have everything. | 92 // Case 4: Have everything. |
| 90 CreditCard credit_card4; | 93 CreditCard credit_card4; |
| 91 autofill_test::SetCreditCardInfo(&credit_card4, | 94 autofill_test::SetCreditCardInfo(&credit_card4, |
| 92 "John Dillinger", "5105 1051 0510 5100", "01", "2010"); | 95 "John Dillinger", "5105 1051 0510 5100", "01", "2010"); |
| 93 string16 summary4 = credit_card4.Label(); | 96 string16 summary4 = credit_card4.Label(); |
| 94 EXPECT_EQ(ASCIIToUTF16("************5100, Exp: 01/2010"), summary4); | 97 EXPECT_EQ(ASCIIToUTF16("************5100, Exp: 01/2010"), summary4); |
| 95 string16 obfuscated4 = credit_card4.ObfuscatedNumber(); | 98 string16 obfuscated4 = credit_card4.ObfuscatedNumber(); |
| 96 EXPECT_EQ(ASCIIToUTF16("************5100"), obfuscated4); | 99 EXPECT_EQ(ASCIIToUTF16("************5100"), obfuscated4); |
| 97 } | 100 } |
| 98 | 101 |
| 99 TEST(CreditCardTest, AssignmentOperator) { | 102 TEST_F(CreditCardTest, AssignmentOperator) { |
| 100 CreditCard a, b; | 103 CreditCard a, b; |
| 101 | 104 |
| 102 // Result of assignment should be logically equal to the original profile. | 105 // Result of assignment should be logically equal to the original profile. |
| 103 autofill_test::SetCreditCardInfo(&a, "John Dillinger", | 106 autofill_test::SetCreditCardInfo(&a, "John Dillinger", |
| 104 "123456789012", "01", "2010"); | 107 "123456789012", "01", "2010"); |
| 105 b = a; | 108 b = a; |
| 106 EXPECT_TRUE(a == b); | 109 EXPECT_TRUE(a == b); |
| 107 | 110 |
| 108 // Assignment to self should not change the profile value. | 111 // Assignment to self should not change the profile value. |
| 109 a = a; | 112 a = a; |
| 110 EXPECT_TRUE(a == b); | 113 EXPECT_TRUE(a == b); |
| 111 } | 114 } |
| 112 | 115 |
| 113 TEST(CreditCardTest, IsValidCreditCardNumber) { | 116 TEST_F(CreditCardTest, IsValidCreditCardNumber) { |
| 114 for (size_t i = 0; i < arraysize(kValidNumbers); ++i) { | 117 for (size_t i = 0; i < arraysize(kValidNumbers); ++i) { |
| 115 SCOPED_TRACE(kValidNumbers[i]); | 118 SCOPED_TRACE(kValidNumbers[i]); |
| 116 EXPECT_TRUE( | 119 EXPECT_TRUE( |
| 117 CreditCard::IsValidCreditCardNumber(ASCIIToUTF16(kValidNumbers[i]))); | 120 CreditCard::IsValidCreditCardNumber(ASCIIToUTF16(kValidNumbers[i]))); |
| 118 } | 121 } |
| 119 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { | 122 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { |
| 120 SCOPED_TRACE(kInvalidNumbers[i]); | 123 SCOPED_TRACE(kInvalidNumbers[i]); |
| 121 EXPECT_FALSE( | 124 EXPECT_FALSE( |
| 122 CreditCard::IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i]))); | 125 CreditCard::IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i]))); |
| 123 } | 126 } |
| 124 } | 127 } |
| 125 | 128 |
| 126 TEST(CreditCardTest, IsComplete) { | 129 TEST_F(CreditCardTest, IsComplete) { |
| 127 CreditCard card; | 130 CreditCard card; |
| 128 EXPECT_FALSE(card.IsComplete()); | 131 EXPECT_FALSE(card.IsComplete()); |
| 129 card.SetInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Wally T. Walrus")); | 132 card.SetInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Wally T. Walrus")); |
| 130 EXPECT_FALSE(card.IsComplete()); | 133 EXPECT_FALSE(card.IsComplete()); |
| 131 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); | 134 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); |
| 132 EXPECT_FALSE(card.IsComplete()); | 135 EXPECT_FALSE(card.IsComplete()); |
| 133 card.SetInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2014")); | 136 card.SetInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2014")); |
| 134 | 137 |
| 135 for (size_t i = 0; i < arraysize(kValidNumbers); ++i) { | 138 for (size_t i = 0; i < arraysize(kValidNumbers); ++i) { |
| 136 SCOPED_TRACE(kValidNumbers[i]); | 139 SCOPED_TRACE(kValidNumbers[i]); |
| 137 card.SetInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(kValidNumbers[i])); | 140 card.SetInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(kValidNumbers[i])); |
| 138 EXPECT_TRUE(card.IsComplete()); | 141 EXPECT_TRUE(card.IsComplete()); |
| 139 } | 142 } |
| 140 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { | 143 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { |
| 141 SCOPED_TRACE(kInvalidNumbers[i]); | 144 SCOPED_TRACE(kInvalidNumbers[i]); |
| 142 card.SetInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(kInvalidNumbers[i])); | 145 card.SetInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(kInvalidNumbers[i])); |
| 143 EXPECT_FALSE(card.IsComplete()); | 146 EXPECT_FALSE(card.IsComplete()); |
| 144 } | 147 } |
| 145 } | 148 } |
| 146 | 149 |
| 147 TEST(CreditCardTest, InvalidMastercardNumber) { | 150 TEST_F(CreditCardTest, InvalidMastercardNumber) { |
| 148 CreditCard card; | 151 CreditCard card; |
| 149 | 152 |
| 150 autofill_test::SetCreditCardInfo(&card, "Baby Face Nelson", | 153 autofill_test::SetCreditCardInfo(&card, "Baby Face Nelson", |
| 151 "5200000000000004", "01", "2010"); | 154 "5200000000000004", "01", "2010"); |
| 152 EXPECT_EQ("genericCC", card.type()); | 155 EXPECT_EQ("genericCC", card.type()); |
| 153 } | 156 } |
| 154 | 157 |
| 155 // Verify that we preserve exactly what the user typed for credit card numbers. | 158 // Verify that we preserve exactly what the user typed for credit card numbers. |
| 156 TEST(CreditCardTest, SetInfoCreditCardNumber) { | 159 TEST_F(CreditCardTest, SetInfoCreditCardNumber) { |
| 157 CreditCard card; | 160 CreditCard card; |
| 158 | 161 |
| 159 autofill_test::SetCreditCardInfo(&card, "Bob Dylan", | 162 autofill_test::SetCreditCardInfo(&card, "Bob Dylan", |
| 160 "4321-5432-6543-xxxx", "07", "2013"); | 163 "4321-5432-6543-xxxx", "07", "2013"); |
| 161 EXPECT_EQ(ASCIIToUTF16("4321-5432-6543-xxxx"), | 164 EXPECT_EQ(ASCIIToUTF16("4321-5432-6543-xxxx"), |
| 162 card.GetInfo(CREDIT_CARD_NUMBER)); | 165 card.GetInfo(CREDIT_CARD_NUMBER)); |
| 163 } | 166 } |
| 164 | 167 |
| 165 // Verify that we can handle both numeric and named months. | 168 // Verify that we can handle both numeric and named months. |
| 166 TEST(CreditCardTest, SetInfoExpirationMonth) { | 169 TEST_F(CreditCardTest, SetInfoExpirationMonth) { |
| 167 CreditCard card; | 170 CreditCard card; |
| 168 | 171 |
| 169 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("05")); | 172 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("05")); |
| 170 EXPECT_EQ(ASCIIToUTF16("05"), card.GetInfo(CREDIT_CARD_EXP_MONTH)); | 173 EXPECT_EQ(ASCIIToUTF16("05"), card.GetInfo(CREDIT_CARD_EXP_MONTH)); |
| 171 | 174 |
| 172 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("7")); | 175 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("7")); |
| 173 EXPECT_EQ(ASCIIToUTF16("07"), card.GetInfo(CREDIT_CARD_EXP_MONTH)); | 176 EXPECT_EQ(ASCIIToUTF16("07"), card.GetInfo(CREDIT_CARD_EXP_MONTH)); |
| 174 | 177 |
| 175 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("January")); | 178 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("January")); |
| 176 EXPECT_EQ(ASCIIToUTF16("01"), card.GetInfo(CREDIT_CARD_EXP_MONTH)); | 179 EXPECT_EQ(ASCIIToUTF16("01"), card.GetInfo(CREDIT_CARD_EXP_MONTH)); |
| 177 | 180 |
| 178 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("Apr")); | 181 card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("Apr")); |
| 179 EXPECT_EQ(ASCIIToUTF16("04"), card.GetInfo(CREDIT_CARD_EXP_MONTH)); | 182 EXPECT_EQ(ASCIIToUTF16("04"), card.GetInfo(CREDIT_CARD_EXP_MONTH)); |
| 180 } | 183 } |
| OLD | NEW |