Return-Path: Delivered-To: apmail-commons-commits-archive@locus.apache.org Received: (qmail 84054 invoked from network); 14 Nov 2007 04:56:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 14 Nov 2007 04:56:08 -0000 Received: (qmail 84430 invoked by uid 500); 14 Nov 2007 04:55:55 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 84356 invoked by uid 500); 14 Nov 2007 04:55:55 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 84346 invoked by uid 99); 14 Nov 2007 04:55:55 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Nov 2007 20:55:55 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 14 Nov 2007 04:56:06 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 9E0B71A9832; Tue, 13 Nov 2007 20:55:46 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Wed, 14 Nov 2007 04:55:46 -0000 To: commits@commons.apache.org From: niallp@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071114045546.9E0B71A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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));