boolean validateCard(@NonNull Calendar now) { if (cvc == null) { return validateNumber() && validateExpiryDate(now); } else { return validateNumber() && validateExpiryDate(now) && validateCVC(); } }
@Test public void shouldFailValidateCVCIfNull() { Card card = new Card(null, null, null, null); assertFalse(card.validateCVC()); }
@Test public void shouldPassValidateCVCIfVisaAndLength3() { Card card = new Card("4242 4242 4242 4242", null, null, "123"); assertTrue(card.validateCVC()); }
@Test public void shouldFailValidateCVCIfVisaAndNotNumeric() { Card card = new Card("4242 4242 4242 4242", null, null, "12a"); assertFalse(card.validateCVC()); }
@Test public void shouldPassValidateCVCIfUnknownTypeAndLength4() { Card card = new Card(null, null, null, "1234"); assertTrue(card.validateCVC()); }
@Test public void shouldFailValidateCVCIfBlank() { Card card = new Card(null, null, null, ""); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCVCIfUnknownTypeAndLength5() { Card card = new Card(null, null, null, "12345"); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCVCIfVisaAndLength4() { Card card = new Card("4242 4242 4242 4242", null, null, "1234"); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCVCIfVisaAndLength5() { Card card = new Card("4242 4242 4242 4242", null, null, "12345"); assertFalse(card.validateCVC()); }
@Test public void shouldPassValidateCVCIfAmexAndLength4() { Card card = new Card("378282246310005", null, null, "1234"); assertTrue(card.validateCVC()); }
@Test public void shouldFailValidateCVCIfAmexAndNotNumeric() { Card card = new Card("378282246310005", null, null, "123d"); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardIfNotLuhnNumber() { Card card = new Card("4242-4242-4242-4241", 12, 2050, "123"); assertFalse(card.validateCard()); assertFalse(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertTrue(card.validateCVC()); }
@Test public void shouldPassValidateCardVisa() { Card card = new Card("4242-4242-4242-4242", 12, 2050, "123"); assertTrue(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertTrue(card.validateCVC()); }
@Test public void shouldPassValidateCardAmexWithNullCVC() { Card card = new Card("378282246310005", 12, 2050, null); assertTrue(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardAmexWithLongCVC() { Card card = new Card("378282246310005", 12, 2050, "12345"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardVisaWithShortCVC() { Card card = new Card("4242-4242-4242-4242", 12, 2050, "12"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardVisaWithLongCVC() { Card card = new Card("4242-4242-4242-4242", 12, 2050, "1234"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldPassValidateCardWithNullCVC() { Card card = new Card("4242-4242-4242-4242", 12, 2050, null); assertTrue(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardAmexWithShortCVC() { Card card = new Card("378282246310005", 12, 2050, "12"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardAmexWithBadCVC() { Card card = new Card("378282246310005", 12, 2050, "bad"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }