/** * Checks whether {@code this} represents a valid card. * * @return {@code true} if valid, {@code false} otherwise. */ public boolean validateCard() { return validateCard(Calendar.getInstance()); }
@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()); }
@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 getCard_whenInputIsValidVisa_returnsCardObjectWithLoggingToken() { // The input date here will be invalid after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mCardNumberEditText.setText(VALID_VISA_WITH_SPACES); mExpiryEditText.append("12"); mExpiryEditText.append("50"); mCvcEditText.append("123"); Card card = mCardInputWidget.getCard(); assertNotNull(card); assertEquals(VALID_VISA_NO_SPACES, card.getNumber()); assertNotNull(card.getExpMonth()); assertNotNull(card.getExpYear()); assertEquals(12, card.getExpMonth().intValue()); assertEquals(2050, card.getExpYear().intValue()); assertEquals("123", card.getCVC()); assertTrue(card.validateCard()); assertArrayEquals(EXPECTED_LOGGING_ARRAY, card.getLoggingTokens().toArray()); }
@Test public void getCard_whenInputIsValidAmEx_returnsCardObjectWithLoggingToken() { // The input date here will be invalid after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mCardNumberEditText.setText(VALID_AMEX_WITH_SPACES); mExpiryEditText.append("12"); mExpiryEditText.append("50"); mCvcEditText.append("1234"); Card card = mCardInputWidget.getCard(); assertNotNull(card); assertEquals(VALID_AMEX_NO_SPACES, card.getNumber()); assertNotNull(card.getExpMonth()); assertNotNull(card.getExpYear()); assertEquals(12, card.getExpMonth().intValue()); assertEquals(2050, card.getExpYear().intValue()); assertEquals("1234", card.getCVC()); assertTrue(card.validateCard()); assertArrayEquals(EXPECTED_LOGGING_ARRAY, card.getLoggingTokens().toArray()); }
@Test public void shouldFailValidateCardInvalidMonth() { Card card = new Card("4242-4242-4242-4242", 13, 2050, "123"); assertFalse(card.validateCard()); assertTrue(card.validateNumber()); assertFalse(card.validateExpiryDate(calendar)); assertTrue(card.validateCVC()); }
@Test public void shouldFailValidateCardInvalidYear() { Card card = new Card("4242-4242-4242-4242", 1, 1990, "123"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertFalse(card.validateExpiryDate(calendar)); assertTrue(card.validateCVC()); }
@Test public void shouldFailValidateCardVisaWithBadCVC() { Card card = new Card("4242-4242-4242-4242", 12, 2050, "bad"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldPassValidateCardAmex() { Card card = new Card("378282246310005", 12, 2050, "1234"); assertTrue(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertTrue(card.validateCVC()); }
@Test public void getCard_whenInputIsValidDinersClub_returnsCardObjectWithLoggingToken() { // The input date here will be invalid after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mCardNumberEditText.setText(VALID_DINERS_CLUB_WITH_SPACES); mExpiryEditText.append("12"); mExpiryEditText.append("50"); mCvcEditText.append("123"); Card card = mCardInputWidget.getCard(); assertNotNull(card); assertEquals(VALID_DINERS_CLUB_NO_SPACES, card.getNumber()); assertNotNull(card.getExpMonth()); assertNotNull(card.getExpYear()); assertEquals(12, card.getExpMonth().intValue()); assertEquals(2050, card.getExpYear().intValue()); assertEquals("123", card.getCVC()); assertTrue(card.validateCard()); assertArrayEquals(EXPECTED_LOGGING_ARRAY, card.getLoggingTokens().toArray()); }
@Test public void getCard_whenInputIsValidVisaAndNoZipRequired_returnsFullCardAndExpectedLogging() { // The input date here will be invalid after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mNoZipGroup.cardNumberEditText.setText(VALID_VISA_WITH_SPACES); mNoZipGroup.expiryDateEditText.append("12"); mNoZipGroup.expiryDateEditText.append("50"); mNoZipGroup.cvcEditText.append("123"); Card card = mNoZipCardMultilineWidget.getCard(); assertNotNull(card); assertEquals(VALID_VISA_NO_SPACES, card.getNumber()); assertNotNull(card.getExpMonth()); assertNotNull(card.getExpYear()); assertEquals(12, card.getExpMonth().intValue()); assertEquals(2050, card.getExpYear().intValue()); assertEquals("123", card.getCVC()); assertNull(card.getAddressZip()); assertTrue(card.validateCard()); assertArrayEquals(EXPECTED_LOGGING_ARRAY, card.getLoggingTokens().toArray()); }
@Test public void getCard_whenInputIsValidAmexAndNoZipRequiredAnd4DigitCvc_returnsFullCardAndExpectedLogging() { // The input date here will be invalid after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mNoZipGroup.cardNumberEditText.setText(VALID_AMEX_WITH_SPACES); mNoZipGroup.expiryDateEditText.append("12"); mNoZipGroup.expiryDateEditText.append("50"); mNoZipGroup.cvcEditText.append("1234"); Card card = mNoZipCardMultilineWidget.getCard(); assertNotNull(card); assertEquals(VALID_AMEX_NO_SPACES, card.getNumber()); assertNotNull(card.getExpMonth()); assertNotNull(card.getExpYear()); assertEquals(12, card.getExpMonth().intValue()); assertEquals(2050, card.getExpYear().intValue()); assertEquals("1234", card.getCVC()); assertNull(card.getAddressZip()); assertTrue(card.validateCard()); assertArrayEquals(EXPECTED_LOGGING_ARRAY, card.getLoggingTokens().toArray()); }
@Test public void getCard_whenInputIsValidAmexAndNoZipRequiredAnd3DigitCvc_returnsFullCardAndExpectedLogging() { // The input date here will be invalid after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mNoZipGroup.cardNumberEditText.setText(VALID_AMEX_WITH_SPACES); mNoZipGroup.expiryDateEditText.append("12"); mNoZipGroup.expiryDateEditText.append("50"); mNoZipGroup.cvcEditText.append("123"); Card card = mNoZipCardMultilineWidget.getCard(); assertNotNull(card); assertEquals(VALID_AMEX_NO_SPACES, card.getNumber()); assertNotNull(card.getExpMonth()); assertNotNull(card.getExpYear()); assertEquals(12, card.getExpMonth().intValue()); assertEquals(2050, card.getExpYear().intValue()); assertEquals("123", card.getCVC()); assertNull(card.getAddressZip()); assertTrue(card.validateCard()); assertArrayEquals(EXPECTED_LOGGING_ARRAY, card.getLoggingTokens().toArray()); }