You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2007/11/14 05:55:46 UTC
svn commit: r594764 - in /commons/proper/validator/trunk/src:
main/java/org/apache/commons/validator/routines/CreditCardValidator.java
test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java
Author: niallp
Date: Tue Nov 13 20:55:45 2007
New Revision: 594764
URL: http://svn.apache.org/viewvc?rev=594764&view=rev
Log:
VALIDATOR-240 - Support the 65 prefix for Discover Card
Modified:
commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java
commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java
Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java?rev=594764&r1=594763&r2=594764&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java (original)
+++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java Tue Nov 13 20:55:45 2007
@@ -99,8 +99,11 @@
/** Diners Card Validator */
public static final CodeValidator DINERS_VALIDATOR = new CodeValidator("^(30[0-5]\\d{11}|36\\d{12})$", LUHN_VALIDATOR);
+ /** Discover Card regular expressions */
+ private static RegexValidator DISCOVER_REGEX = new RegexValidator(new String[] {"^(6011\\d{12})$", "^(65\\d{14})$"});
+
/** Discover Card Validator */
- public static final CodeValidator DISCOVER_VALIDATOR = new CodeValidator("^(6011\\d{12})$", LUHN_VALIDATOR);
+ public static final CodeValidator DISCOVER_VALIDATOR = new CodeValidator(DISCOVER_REGEX, LUHN_VALIDATOR);
/** Mastercard Card Validator */
public static final CodeValidator MASTERCARD_VALIDATOR = new CodeValidator("^(5[1-5]\\d{14})$", LUHN_VALIDATOR);
Modified: commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java?rev=594764&r1=594763&r2=594764&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java (original)
+++ commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java Tue Nov 13 20:55:45 2007
@@ -36,6 +36,8 @@
private static final String ERROR_MASTERCARD = "5105105105105105";
private static final String VALID_DISCOVER = "6011000990139424";
private static final String ERROR_DISCOVER = "6011000990139421";
+ private static final String VALID_DISCOVER65 = "6534567890123458"; // FIXME need verified test data for Discover with "65" prefix
+ private static final String ERROR_DISCOVER65 = "6534567890123450"; // FIXME need verified test data for Discover with "65" prefix
private static final String VALID_DINERS = "30569309025904";
private static final String ERROR_DINERS = "30569309025901";
@@ -60,12 +62,14 @@
assertTrue(ccv.isValid(VALID_AMEX));
assertTrue(ccv.isValid(VALID_MASTERCARD));
assertTrue(ccv.isValid(VALID_DISCOVER));
+ assertTrue(ccv.isValid(VALID_DISCOVER65));
assertFalse(ccv.isValid(ERROR_VISA));
assertFalse(ccv.isValid(ERROR_SHORT_VISA));
assertFalse(ccv.isValid(ERROR_AMEX));
assertFalse(ccv.isValid(ERROR_MASTERCARD));
assertFalse(ccv.isValid(ERROR_DISCOVER));
+ assertFalse(ccv.isValid(ERROR_DISCOVER65));
// disallow Visa so it should fail even with good number
ccv = new CreditCardValidator(CreditCardValidator.AMEX);
@@ -247,14 +251,21 @@
RegexValidator regex = validator.getRegexValidator();
// ****** Test Regular Expression ******
- // length 16 and start with "6011"
- assertFalse("Length 12", regex.isValid("601156789012"));
- assertFalse("Length 13", regex.isValid("6011567890123"));
- assertFalse("Length 14", regex.isValid("60115678901234"));
- assertFalse("Length 15", regex.isValid("601156789012345"));
- assertTrue("Length 16", regex.isValid("6011567890123456"));
- assertFalse("Length 17", regex.isValid("60115678901234567"));
- assertFalse("Length 18", regex.isValid("601156789012345678"));
+ // length 16 and start with either "6011" or "65"
+ assertFalse("Length 12-6011", regex.isValid("601156789012"));
+ assertFalse("Length 12-65", regex.isValid("653456789012"));
+ assertFalse("Length 13-6011", regex.isValid("6011567890123"));
+ assertFalse("Length 13-65", regex.isValid("6534567890123"));
+ assertFalse("Length 14-6011", regex.isValid("60115678901234"));
+ assertFalse("Length 14-65", regex.isValid("65345678901234"));
+ assertFalse("Length 15-6011", regex.isValid("601156789012345"));
+ assertFalse("Length 15-65", regex.isValid("653456789012345"));
+ assertTrue("Length 16-6011", regex.isValid("6011567890123456"));
+ assertTrue("Length 16-65", regex.isValid("6534567890123456"));
+ assertFalse("Length 17-6011", regex.isValid("60115678901234567"));
+ assertFalse("Length 17-65", regex.isValid("65345678901234567"));
+ assertFalse("Length 18-6011", regex.isValid("601156789012345678"));
+ assertFalse("Length 18-65", regex.isValid("653456789012345678"));
assertFalse("Prefix 64", regex.isValid("6434567890123456"));
assertFalse("Prefix 6010", regex.isValid("6010567890123456"));
@@ -263,13 +274,17 @@
// *********** Test Validator **********
assertTrue("Valid regex", regex.isValid(ERROR_DISCOVER));
+ assertTrue("Valid regex65", regex.isValid(ERROR_DISCOVER65));
assertFalse("Invalid", validator.isValid(ERROR_DISCOVER));
+ assertFalse("Invalid65", validator.isValid(ERROR_DISCOVER65));
assertNull("validate()", validator.validate(ERROR_DISCOVER));
assertEquals(VALID_DISCOVER, validator.validate(VALID_DISCOVER));
+ assertEquals(VALID_DISCOVER65, validator.validate(VALID_DISCOVER65));
assertFalse("Amex", validator.isValid(VALID_AMEX));
assertFalse("Diners", validator.isValid(VALID_DINERS));
assertTrue("Discover", validator.isValid(VALID_DISCOVER));
+ assertTrue("Discover", validator.isValid(VALID_DISCOVER65));
assertFalse("Mastercard", validator.isValid(VALID_MASTERCARD));
assertFalse("Visa", validator.isValid(VALID_VISA));
assertFalse("Visa Short", validator.isValid(VALID_SHORT_VISA));
@@ -286,12 +301,15 @@
public void testDiscoverOption() {
CreditCardValidator validator = new CreditCardValidator(CreditCardValidator.DISCOVER);
assertFalse("Invalid", validator.isValid(ERROR_DISCOVER));
+ assertFalse("Invalid65", validator.isValid(ERROR_DISCOVER65));
assertNull("validate()", validator.validate(ERROR_DISCOVER));
assertEquals(VALID_DISCOVER, validator.validate(VALID_DISCOVER));
+ assertEquals(VALID_DISCOVER65, validator.validate(VALID_DISCOVER65));
assertFalse("Amex", validator.isValid(VALID_AMEX));
assertFalse("Diners", validator.isValid(VALID_DINERS));
assertTrue("Discover", validator.isValid(VALID_DISCOVER));
+ assertTrue("Discover", validator.isValid(VALID_DISCOVER65));
assertFalse("Mastercard", validator.isValid(VALID_MASTERCARD));
assertFalse("Visa", validator.isValid(VALID_VISA));
assertFalse("Visa Short", validator.isValid(VALID_SHORT_VISA));