1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.validator;
18
19 import static org.junit.jupiter.api.Assertions.assertFalse;
20 import static org.junit.jupiter.api.Assertions.assertTrue;
21
22 import org.junit.jupiter.api.Test;
23
24
25
26
27
28
29 @Deprecated
30 public class CreditCardValidatorTest {
31
32
33
34
35 private static class DinersClub implements CreditCardValidator.CreditCardType {
36 private static final String PREFIX = "300,301,302,303,304,305,";
37
38 @Override
39 public boolean matches(final String card) {
40 final String prefix = card.substring(0, 3) + ",";
41 return PREFIX.contains(prefix) && card.length() == 14;
42 }
43 }
44
45 private static final String VALID_VISA = "4417123456789113";
46 private static final String VALID_SHORT_VISA = "4222222222222";
47 private static final String VALID_AMEX = "378282246310005";
48 private static final String VALID_MASTERCARD = "5105105105105100";
49 private static final String VALID_DISCOVER = "6011000990139424";
50
51 private static final String VALID_DINERS = "30569309025904";
52
53 @Test
54 public void testAddAllowedCardType() {
55 final CreditCardValidator ccv = new CreditCardValidator(CreditCardValidator.NONE);
56
57 assertFalse(ccv.isValid(VALID_VISA));
58 assertFalse(ccv.isValid(VALID_AMEX));
59 assertFalse(ccv.isValid(VALID_MASTERCARD));
60 assertFalse(ccv.isValid(VALID_DISCOVER));
61
62
63 ccv.addAllowedCardType(new DinersClub());
64 assertTrue(ccv.isValid(VALID_DINERS));
65 }
66
67 @Test
68 public void testIsValid() {
69 CreditCardValidator ccv = new CreditCardValidator();
70
71 assertFalse(ccv.isValid(null));
72 assertFalse(ccv.isValid(""));
73 assertFalse(ccv.isValid("123456789012"));
74 assertFalse(ccv.isValid("12345678901234567890"));
75 assertFalse(ccv.isValid("4417123456789112"));
76 assertFalse(ccv.isValid("4417q23456w89113"));
77 assertTrue(ccv.isValid(VALID_VISA));
78 assertTrue(ccv.isValid(VALID_SHORT_VISA));
79 assertTrue(ccv.isValid(VALID_AMEX));
80 assertTrue(ccv.isValid(VALID_MASTERCARD));
81 assertTrue(ccv.isValid(VALID_DISCOVER));
82
83
84 ccv = new CreditCardValidator(CreditCardValidator.AMEX);
85 assertFalse(ccv.isValid("4417123456789113"));
86 }
87
88 }