| 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 |