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 |