OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
10 #include "components/autofill/core/browser/validation.h" | 10 #include "components/autofill/core/browser/validation.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 // A UnionPay card that doesn't pass the Luhn checksum | 48 // A UnionPay card that doesn't pass the Luhn checksum |
49 "6200000000000000", | 49 "6200000000000000", |
50 }; | 50 }; |
51 const char* const kInvalidNumbers[] = { | 51 const char* const kInvalidNumbers[] = { |
52 "4111 1111 112", /* too short */ | 52 "4111 1111 112", /* too short */ |
53 "41111111111111111115", /* too long */ | 53 "41111111111111111115", /* too long */ |
54 "4111-1111-1111-1110", /* wrong Luhn checksum */ | 54 "4111-1111-1111-1110", /* wrong Luhn checksum */ |
55 "3056 9309 0259 04aa", /* non-digit characters */ | 55 "3056 9309 0259 04aa", /* non-digit characters */ |
56 }; | 56 }; |
57 const char kCurrentDate[]="1 May 2013"; | 57 const char kCurrentDate[]="1 May 2013"; |
58 const ExpirationDate kValidCreditCardExpirationDate[] = { | |
59 { "2013", "5" }, // Valid month in current year. | |
60 { "2014", "1" }, // Any month in next year. | |
61 { "2014", "12" }, // Edge condition. | |
62 { "2014", " 1" }, // Whitespace in month. | |
63 { " 2014", "1" }, // Whitespace in year. | |
64 }; | |
65 const IntExpirationDate kValidCreditCardIntExpirationDate[] = { | 58 const IntExpirationDate kValidCreditCardIntExpirationDate[] = { |
66 { 2013, 5 }, // Valid month in current year. | 59 { 2013, 5 }, // Valid month in current year. |
67 { 2014, 1 }, // Any month in next year. | 60 { 2014, 1 }, // Any month in next year. |
68 { 2014, 12 }, // Edge condition. | 61 { 2014, 12 }, // Edge condition. |
69 }; | 62 }; |
70 const ExpirationDate kInvalidCreditCardExpirationDate[] = { | |
71 { "2013", "04" }, // Previous month in current year. | |
72 { "2012", "12" }, // Any month in previous year. | |
73 { "2015", "13" }, // Not a real month. | |
74 { "2015", "00" }, // Zero is legal in the CC class but is not a valid date. | |
75 }; | |
76 const IntExpirationDate kInvalidCreditCardIntExpirationDate[] = { | 63 const IntExpirationDate kInvalidCreditCardIntExpirationDate[] = { |
77 { 2013, 4 }, // Previous month in current year. | 64 { 2013, 4 }, // Previous month in current year. |
78 { 2012, 12 }, // Any month in previous year. | 65 { 2012, 12 }, // Any month in previous year. |
79 { 2015, 13 }, // Not a real month. | 66 { 2015, 13 }, // Not a real month. |
80 { 2015, 0 }, // Zero is legal in the CC class but is not a valid date. | 67 { 2015, 0 }, // Zero is legal in the CC class but is not a valid date. |
81 }; | 68 }; |
82 const char* const kValidCreditCardSecurityCode[] = { | 69 const char* const kValidCreditCardSecurityCode[] = { |
83 "323", // 3-digit CSC. | 70 "323", // 3-digit CSC. |
84 "3234", // 4-digit CSC. | 71 "3234", // 4-digit CSC. |
85 }; | 72 }; |
(...skipping 25 matching lines...) Expand all Loading... |
111 SCOPED_TRACE(kValidNumbers[i]); | 98 SCOPED_TRACE(kValidNumbers[i]); |
112 EXPECT_TRUE( | 99 EXPECT_TRUE( |
113 IsValidCreditCardNumber(ASCIIToUTF16(kValidNumbers[i]))); | 100 IsValidCreditCardNumber(ASCIIToUTF16(kValidNumbers[i]))); |
114 } | 101 } |
115 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { | 102 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { |
116 SCOPED_TRACE(kInvalidNumbers[i]); | 103 SCOPED_TRACE(kInvalidNumbers[i]); |
117 EXPECT_FALSE(IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i]))); | 104 EXPECT_FALSE(IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i]))); |
118 } | 105 } |
119 } | 106 } |
120 | 107 |
121 TEST(AutofillValidation, IsValidCreditCardExpirationDate) { | |
122 base::Time now; | |
123 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now)); | |
124 | |
125 for (size_t i = 0; i < arraysize(kValidCreditCardExpirationDate); ++i) { | |
126 const ExpirationDate& data = kValidCreditCardExpirationDate[i]; | |
127 SCOPED_TRACE(data.year); | |
128 SCOPED_TRACE(data.month); | |
129 EXPECT_TRUE(IsValidCreditCardExpirationDate(ASCIIToUTF16(data.year), | |
130 ASCIIToUTF16(data.month), | |
131 now)); | |
132 } | |
133 for (size_t i = 0; i < arraysize(kInvalidCreditCardExpirationDate); ++i) { | |
134 const ExpirationDate& data = kInvalidCreditCardExpirationDate[i]; | |
135 SCOPED_TRACE(data.year); | |
136 SCOPED_TRACE(data.month); | |
137 EXPECT_TRUE(!IsValidCreditCardExpirationDate(ASCIIToUTF16(data.year), | |
138 ASCIIToUTF16(data.month), | |
139 now)); | |
140 } | |
141 } | |
142 | |
143 TEST(AutofillValidation, IsValidCreditCardIntExpirationDate) { | 108 TEST(AutofillValidation, IsValidCreditCardIntExpirationDate) { |
144 base::Time now; | 109 base::Time now; |
145 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now)); | 110 ASSERT_TRUE(base::Time::FromString(kCurrentDate, &now)); |
146 | 111 |
147 for (size_t i = 0; i < arraysize(kValidCreditCardIntExpirationDate); ++i) { | 112 for (size_t i = 0; i < arraysize(kValidCreditCardIntExpirationDate); ++i) { |
148 const IntExpirationDate& data = kValidCreditCardIntExpirationDate[i]; | 113 const IntExpirationDate& data = kValidCreditCardIntExpirationDate[i]; |
149 SCOPED_TRACE(data.year); | 114 SCOPED_TRACE(data.year); |
150 SCOPED_TRACE(data.month); | 115 SCOPED_TRACE(data.month); |
151 EXPECT_TRUE(IsValidCreditCardExpirationDate(data.year, data.month, now)); | 116 EXPECT_TRUE(IsValidCreditCardExpirationDate(data.year, data.month, now)); |
152 } | 117 } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kAmericanExpressCard))); | 155 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kAmericanExpressCard))); |
191 EXPECT_FALSE(IsValidCreditCardSecurityCode( | 156 EXPECT_FALSE(IsValidCreditCardSecurityCode( |
192 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kVisaCard))); | 157 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kVisaCard))); |
193 EXPECT_TRUE(IsValidCreditCardSecurityCode( | 158 EXPECT_TRUE(IsValidCreditCardSecurityCode( |
194 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kInvalidNumbers[0]))); | 159 ASCIIToUTF16(kVisaCVC), ASCIIToUTF16(kInvalidNumbers[0]))); |
195 EXPECT_FALSE(IsValidCreditCardSecurityCode( | 160 EXPECT_FALSE(IsValidCreditCardSecurityCode( |
196 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kInvalidNumbers[0]))); | 161 ASCIIToUTF16(kAmericanExpressCVC), ASCIIToUTF16(kInvalidNumbers[0]))); |
197 } | 162 } |
198 | 163 |
199 } // namespace autofill | 164 } // namespace autofill |
OLD | NEW |