package com.braintreegateway.integrationtest;
import com.braintreegateway.*;
import com.braintreegateway.exceptions.ForgedQueryStringException;
import com.braintreegateway.exceptions.NotFoundException;
import com.braintreegateway.test.CreditCardDefaults;
import com.braintreegateway.test.CreditCardNumbers;
import com.braintreegateway.test.VenmoSdk;
import com.braintreegateway.testhelpers.MerchantAccountTestConstants;
import com.braintreegateway.testhelpers.TestHelper;
import com.braintreegateway.testhelpers.HttpHelper;
import com.braintreegateway.util.QueryString;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.*;
import static org.junit.Assert.*;
public class CreditCardIT extends IntegrationTest implements MerchantAccountTestConstants {
@SuppressWarnings("deprecation")
@Test
public void transparentRedirectURLForCreate() {
Configuration configuration = gateway.getConfiguration();
assertEquals(configuration.getBaseURL() + configuration.getMerchantPath() + "/payment_methods/all/create_via_transparent_redirect_request",
gateway.creditCard().transparentRedirectURLForCreate());
}
@SuppressWarnings("deprecation")
@Test
public void transparentRedirectURLForUpdate() {
Configuration configuration = gateway.getConfiguration();
assertEquals(configuration.getBaseURL() + configuration.getMerchantPath() + "/payment_methods/all/update_via_transparent_redirect_request",
gateway.creditCard().transparentRedirectURLForUpdate());
}
@Test
public void trData() {
String trData = gateway.trData(new CreditCardRequest(), "http://example.com");
TestHelper.assertValidTrData(gateway.getConfiguration(), trData);
}
@Test
public void create() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
assertEquals("John Doe", card.getCardholderName());
assertEquals("MasterCard", card.getCardType());
assertEquals(customer.getId(), card.getCustomerId());
assertEquals("US", card.getCustomerLocation());
assertEquals("510510", card.getBin());
assertEquals("05", card.getExpirationMonth());
assertEquals("2012", card.getExpirationYear());
assertEquals("05/2012", card.getExpirationDate());
assertEquals("5100", card.getLast4());
assertEquals("510510******5100", card.getMaskedNumber());
assertTrue(card.getToken() != null);
assertEquals(Calendar.getInstance().get(Calendar.YEAR), card.getCreatedAt().get(Calendar.YEAR));
assertEquals(Calendar.getInstance().get(Calendar.YEAR), card.getUpdatedAt().get(Calendar.YEAR));
assertTrue(card.getUniqueNumberIdentifier().matches("\\A\\w{32}\\z"));
assertFalse(card.isVenmoSdk());
assertTrue(card.getImageUrl().matches(".*png.*"));
}
@Test
public void createWithMonthAndYear() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationMonth("06").
expirationYear("13");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
assertEquals(customer.getId(), card.getCustomerId());
assertEquals("06", card.getExpirationMonth());
assertEquals("2013", card.getExpirationYear());
assertEquals("06/2013", card.getExpirationDate());
assertEquals(Calendar.getInstance().get(Calendar.YEAR), card.getCreatedAt().get(Calendar.YEAR));
assertEquals(Calendar.getInstance().get(Calendar.YEAR), card.getUpdatedAt().get(Calendar.YEAR));
}
@Test
public void createWithXmlCharacters() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("Special Chars <>&\"'").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
assertEquals("Special Chars <>&\"'", card.getCardholderName());
}
@Test
public void createWithSecurityParams() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("Special Chars").
number("5105105105105100").
expirationDate("05/12").
deviceSessionId("abc123").
fraudMerchantId("456");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
}
@Test
public void createWithAddress() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
billingAddress().
streetAddress("1 E Main St").
extendedAddress("Unit 2").
locality("Chicago").
region("Illinois").
postalCode("60607").
countryName("United States of America").
countryCodeAlpha2("US").
countryCodeAlpha3("USA").
countryCodeNumeric("840").
done().
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
Address billingAddress = card.getBillingAddress();
assertEquals("1 E Main St", billingAddress.getStreetAddress());
assertEquals("Unit 2", billingAddress.getExtendedAddress());
assertEquals("Chicago", billingAddress.getLocality());
assertEquals("Illinois", billingAddress.getRegion());
assertEquals("60607", billingAddress.getPostalCode());
assertEquals("United States of America", billingAddress.getCountryName());
assertEquals("US", billingAddress.getCountryCodeAlpha2());
assertEquals("USA", billingAddress.getCountryCodeAlpha3());
assertEquals("840", billingAddress.getCountryCodeNumeric());
}
@Test
public void createWithExistingAddress() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
Address address = gateway.address().create(customer.getId(), new AddressRequest().postalCode("11111")).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
billingAddressId(address.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
Address billingAddress = card.getBillingAddress();
assertEquals(address.getId(), billingAddress.getId());
assertEquals("11111", billingAddress.getPostalCode());
}
@SuppressWarnings("deprecation")
@Test
public void createViaTransparentRedirect() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest trParams = new CreditCardRequest().customerId(customer.getId());
CreditCardRequest request = new CreditCardRequest().
cardholderName("John Doe").
number("5105105105105100").
expirationDate("05/12");
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, request, gateway.creditCard().transparentRedirectURLForCreate());
Result<CreditCard> result = gateway.creditCard().confirmTransparentRedirect(queryString);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
assertEquals("John Doe", card.getCardholderName());
assertEquals("510510", card.getBin());
assertEquals("05", card.getExpirationMonth());
assertEquals("2012", card.getExpirationYear());
assertEquals("05/2012", card.getExpirationDate());
assertEquals("5100", card.getLast4());
assertTrue(card.getToken() != null);
}
@Test
public void createCreditCardFromTransparentRedirectWithCountry() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest();
CreditCardRequest trParams = new CreditCardRequest().
customerId(customer.getId()).
number("4111111111111111").
expirationDate("10/10").
billingAddress().
countryName("Aruba").
countryCodeAlpha2("AW").
countryCodeAlpha3("ABW").
countryCodeNumeric("533").
done();
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, request, gateway.transparentRedirect().url());
Result<CreditCard> result = gateway.transparentRedirect().confirmCreditCard(queryString);
assertTrue(result.isSuccess());
assertEquals("411111", result.getTarget().getBin());
assertEquals("1111", result.getTarget().getLast4());
assertEquals("10/2010", result.getTarget().getExpirationDate());
assertEquals("Aruba", result.getTarget().getBillingAddress().getCountryName());
assertEquals("AW", result.getTarget().getBillingAddress().getCountryCodeAlpha2());
assertEquals("ABW", result.getTarget().getBillingAddress().getCountryCodeAlpha3());
assertEquals("533", result.getTarget().getBillingAddress().getCountryCodeNumeric());
}
@SuppressWarnings("deprecation")
@Test
public void createViaTransparentRedirectWithMakeDefaultFlagInTRParams() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request1 = new CreditCardRequest().
customerId(customer.getId()).
number("5105105105105100").
expirationDate("05/12");
gateway.creditCard().create(request1);
CreditCardRequest trParams = new CreditCardRequest().
customerId(customer.getId()).
options().
makeDefault(true).
done();
CreditCardRequest request2 = new CreditCardRequest().
number("5105105105105100").
expirationDate("05/12");
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, request2, gateway.creditCard().transparentRedirectURLForCreate());
CreditCard card = gateway.creditCard().confirmTransparentRedirect(queryString).getTarget();
assertTrue(card.isDefault());
}
@SuppressWarnings("deprecation")
@Test
public void createViaTransparentRedirectWithMakeDefaultFlagInRequest() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request1 = new CreditCardRequest().
customerId(customer.getId()).
number("5105105105105100").
expirationDate("05/12");
gateway.creditCard().create(request1);
CreditCardRequest trParams = new CreditCardRequest().
customerId(customer.getId());
CreditCardRequest request2 = new CreditCardRequest().
number("5105105105105100").
expirationDate("05/12").
options().
makeDefault(true).
done();
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, request2, gateway.creditCard().transparentRedirectURLForCreate());
CreditCard card = gateway.creditCard().confirmTransparentRedirect(queryString).getTarget();
assertTrue(card.isDefault());
}
@Test
public void createCreditCardFromTransparentRedirectWithInconsistentCountries() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest();
CreditCardRequest trParams = new CreditCardRequest().
customerId(customer.getId()).
number("4111111111111111").
expirationDate("10/10").
billingAddress().
countryName("Aruba").
countryCodeAlpha2("US").
done();
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, request, gateway.transparentRedirect().url());
Result<CreditCard> result = gateway.transparentRedirect().confirmCreditCard(queryString);
assertFalse(result.isSuccess());
assertEquals(ValidationErrorCode.ADDRESS_INCONSISTENT_COUNTRY, result.getErrors().forObject("creditCard").forObject("billingAddress").onField("base").get(0).getCode());
}
@SuppressWarnings("deprecation")
@Test(expected = ForgedQueryStringException.class)
public void createViaTransparentRedirectThrowsWhenQueryStringHasBeenTamperedWith() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest trParams = new CreditCardRequest().customerId(customer.getId());
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, new CreditCardRequest(), gateway.creditCard().transparentRedirectURLForCreate());
gateway.creditCard().confirmTransparentRedirect(queryString + "this makes it invalid");
}
@Test
public void createWithDefaultFlag() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request1 = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
number("5105105105105100").
expirationDate("05/12");
CreditCardRequest request2 = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
number("5105105105105100").
expirationDate("05/12").
options().
makeDefault(true).
done();
CreditCard card1 = gateway.creditCard().create(request1).getTarget();
CreditCard card2 = gateway.creditCard().create(request2).getTarget();
assertFalse(gateway.creditCard().find(card1.getToken()).isDefault());
assertTrue(gateway.creditCard().find(card2.getToken()).isDefault());
}
@Test
public void createWithVenmoSdkPaymentMethodCode() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
venmoSdkPaymentMethodCode(VenmoSdk.PaymentMethodCode.Visa.code);
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
assertEquals("411111", card.getBin());
assertTrue(card.isVenmoSdk());
}
@Test
public void createWithPaymentMethodNonce() {
String nonce = TestHelper.generateUnlockedNonce(gateway);
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
paymentMethodNonce(nonce);
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
}
@Test
public void createWithInvalidVenmoSdkPaymentMethodCode() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
venmoSdkPaymentMethodCode(VenmoSdk.PaymentMethodCode.Invalid.code);
Result<CreditCard> result = gateway.creditCard().create(request);
ValidationErrorCode errorCode = result.getErrors().forObject("creditCard")
.onField("venmoSdkPaymentMethodCode").get(0).getCode();
assertFalse(result.isSuccess());
assertEquals("Invalid VenmoSDK payment method code", result.getMessage());
assertEquals(ValidationErrorCode.CREDIT_CARD_INVALID_VENMO_SDK_PAYMENT_METHOD_CODE, errorCode);
}
@Test
public void createWithVenmoSdkSession() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
number("5105105105105100").
expirationDate("05/12").
options().
venmoSdkSession(VenmoSdk.Session.Valid.value).
done();
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
assertEquals("510510", card.getBin());
assertTrue(card.isVenmoSdk());
}
@Test
public void createWithInvalidVenmoSdkSession() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
number("5105105105105100").
expirationDate("05/12").
options().
venmoSdkSession(VenmoSdk.Session.Invalid.value).
done();
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
assertEquals("510510", card.getBin());
assertFalse(card.isVenmoSdk());
}
@Test
public void update() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
CreditCardRequest updateRequest = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("Jane Jones").
cvv("321").
number("4111111111111111").
expirationDate("12/05").
billingAddress().
countryName("Italy").
countryCodeAlpha2("IT").
countryCodeAlpha3("ITA").
countryCodeNumeric("380").
done();
Result<CreditCard> updateResult = gateway.creditCard().update(card.getToken(), updateRequest);
assertTrue(updateResult.isSuccess());
CreditCard updatedCard = updateResult.getTarget();
assertEquals("Jane Jones", updatedCard.getCardholderName());
assertEquals("411111", updatedCard.getBin());
assertEquals("12", updatedCard.getExpirationMonth());
assertEquals("2005", updatedCard.getExpirationYear());
assertEquals("12/2005", updatedCard.getExpirationDate());
assertEquals("1111", updatedCard.getLast4());
assertTrue(updatedCard.getToken() != card.getToken());
assertEquals("Italy", updatedCard.getBillingAddress().getCountryName());
assertEquals("IT", updatedCard.getBillingAddress().getCountryCodeAlpha2());
assertEquals("ITA", updatedCard.getBillingAddress().getCountryCodeAlpha3());
assertEquals("380", updatedCard.getBillingAddress().getCountryCodeNumeric());
}
@Test
public void updateWithDefaultFlag() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number("5105105105105100").
expirationDate("05/12");
CreditCard card1 = gateway.creditCard().create(request).getTarget();
CreditCard card2 = gateway.creditCard().create(request).getTarget();
assertTrue(card1.isDefault());
assertFalse(card2.isDefault());
gateway.creditCard().update(card2.getToken(), new CreditCardRequest().options().makeDefault(true).done());
assertFalse(gateway.creditCard().find(card1.getToken()).isDefault());
assertTrue(gateway.creditCard().find(card2.getToken()).isDefault());
gateway.creditCard().update(card1.getToken(), new CreditCardRequest().options().makeDefault(true).done());
assertTrue(gateway.creditCard().find(card1.getToken()).isDefault());
assertFalse(gateway.creditCard().find(card2.getToken()).isDefault());
}
@SuppressWarnings("deprecation")
@Test
public void updateViaTransparentRedirect() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest createRequest = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
CreditCard card = gateway.creditCard().create(createRequest).getTarget();
CreditCardRequest trParams = new CreditCardRequest().
paymentMethodToken(card.getToken());
CreditCardRequest request = new CreditCardRequest().
cardholderName("joe cool");
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, request, gateway.creditCard().transparentRedirectURLForUpdate());
Result<CreditCard> result = gateway.creditCard().confirmTransparentRedirect(queryString);
assertTrue(result.isSuccess());
CreditCard updatedCard = result.getTarget();
assertEquals("joe cool", updatedCard.getCardholderName());
}
@Test
public void updateCountryFromTransparentRedirect() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number("5105105105105100").
expirationDate("05/12");
CreditCard card = gateway.creditCard().create(request).getTarget();
CreditCardRequest updateRequest = new CreditCardRequest();
CreditCardRequest trParams = new CreditCardRequest().
paymentMethodToken(card.getToken()).
number("4111111111111111").
expirationDate("10/10").
billingAddress().
countryName("Jersey").
countryCodeAlpha2("JE").
countryCodeAlpha3("JEY").
countryCodeNumeric("832").
done();
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, updateRequest, gateway.transparentRedirect().url());
Result<CreditCard> result = gateway.transparentRedirect().confirmCreditCard(queryString);
assertTrue(result.isSuccess());
CreditCard updatedCreditCard = gateway.creditCard().find(card.getToken());
assertEquals("411111", updatedCreditCard.getBin());
assertEquals("1111", updatedCreditCard.getLast4());
assertEquals("10/2010", updatedCreditCard.getExpirationDate());
assertEquals("Jersey", updatedCreditCard.getBillingAddress().getCountryName());
assertEquals("JE", updatedCreditCard.getBillingAddress().getCountryCodeAlpha2());
assertEquals("JEY", updatedCreditCard.getBillingAddress().getCountryCodeAlpha3());
assertEquals("832", updatedCreditCard.getBillingAddress().getCountryCodeNumeric());
}
@Test
public void updateCountryFromTransparentRedirectWithInvalidCountry() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number("5105105105105100").
expirationDate("05/12");
CreditCard card = gateway.creditCard().create(request).getTarget();
CreditCardRequest updateRequest = new CreditCardRequest();
CreditCardRequest trParams = new CreditCardRequest().
paymentMethodToken(card.getToken()).
number("4111111111111111").
expirationDate("10/10").
billingAddress().
countryCodeAlpha2("zz").
done();
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, updateRequest, gateway.transparentRedirect().url());
Result<CreditCard> result = gateway.transparentRedirect().confirmCreditCard(queryString);
assertFalse(result.isSuccess());
assertEquals(
ValidationErrorCode.ADDRESS_COUNTRY_CODE_ALPHA2_IS_NOT_ACCEPTED,
result.getErrors().forObject("creditCard").forObject("billingAddress").onField("countryCodeAlpha2").get(0).getCode()
);
}
@Test
public void updateToken() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
String newToken = String.valueOf(new Random().nextInt());
CreditCardRequest updateRequest = new CreditCardRequest().customerId(customer.getId()).token(newToken);
Result<CreditCard> updateResult = gateway.creditCard().update(card.getToken(), updateRequest);
assertTrue(updateResult.isSuccess());
CreditCard updatedCard = updateResult.getTarget();
assertEquals(newToken, updatedCard.getToken());
}
@Test
public void updateOnlySomeAttributes() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
CreditCardRequest updateRequest = new CreditCardRequest().cardholderName("Jane Jones");
Result<CreditCard> updateResult = gateway.creditCard().update(card.getToken(), updateRequest);
assertTrue(updateResult.isSuccess());
CreditCard updatedCard = updateResult.getTarget();
assertEquals("Jane Jones", updatedCard.getCardholderName());
assertEquals("510510", updatedCard.getBin());
assertEquals("05", updatedCard.getExpirationMonth());
assertEquals("2012", updatedCard.getExpirationYear());
assertEquals("05/2012", updatedCard.getExpirationDate());
assertEquals("5100", updatedCard.getLast4());
}
@Test
public void updateWithBillingAddressCreatesNewAddressByDefault() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number("5105105105105100").
expirationDate("05/12").
billingAddress().
firstName("John").
done();
CreditCard creditCard = gateway.creditCard().create(request).getTarget();
CreditCardRequest updateRequest = new CreditCardRequest().
billingAddress().
lastName("Jones").
done();
CreditCard updatedCreditCard = gateway.creditCard().update(creditCard.getToken(), updateRequest).getTarget();
assertNull(updatedCreditCard.getBillingAddress().getFirstName());
assertEquals("Jones", updatedCreditCard.getBillingAddress().getLastName());
assertFalse(creditCard.getBillingAddress().getId().equals(updatedCreditCard.getBillingAddress().getId()));
}
@Test
public void updateWithBillingAddressUpdatesAddressWhenUpdateExistingIsTrue() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number("5105105105105100").
expirationDate("05/12").
billingAddress().
firstName("John").
done();
CreditCard creditCard = gateway.creditCard().create(request).getTarget();
CreditCardRequest updateRequest = new CreditCardRequest().
billingAddress().
lastName("Jones").
options().
updateExisting(true).
done().
done();
CreditCard updatedCreditCard = gateway.creditCard().update(creditCard.getToken(), updateRequest).getTarget();
assertEquals("John", updatedCreditCard.getBillingAddress().getFirstName());
assertEquals("Jones", updatedCreditCard.getBillingAddress().getLastName());
assertEquals(creditCard.getBillingAddress().getId(), updatedCreditCard.getBillingAddress().getId());
}
@Test
public void updateWillNotUpdatePayPalAccounts() {
String nonce = TestHelper.generateFuturePaymentPayPalNonce(gateway);
Result<Customer> customerResult = gateway.customer().create(new CustomerRequest());
assertTrue(customerResult.isSuccess());
Customer customer = customerResult.getTarget();
PaymentMethodRequest request = new PaymentMethodRequest().
customerId(customer.getId()).
paymentMethodNonce(nonce);
Result<? extends PaymentMethod> result = gateway.paymentMethod().create(request);
assertTrue(result.isSuccess());
CreditCardRequest updateRequest = new CreditCardRequest().
billingAddress().
lastName("Jones").
options().
updateExisting(true).
done().
done();
try {
gateway.creditCard().update(result.getTarget().getToken(), updateRequest);
fail("Should throw NotFoundException");
} catch (NotFoundException e) {
}
}
@SuppressWarnings("deprecation")
@Test
public void updateWithBillingAddressUpdatesAddressWhenUpdateExistingIsTrueForTransparentRedirect() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number("5105105105105100").
expirationDate("05/12").
billingAddress().
firstName("John").
done();
CreditCard creditCard = gateway.creditCard().create(request).getTarget();
CreditCardRequest trParams = new CreditCardRequest().
paymentMethodToken(creditCard.getToken()).
billingAddress().
options().
updateExisting(true).
done().
done();
CreditCardRequest updateRequest = new CreditCardRequest().
billingAddress().
lastName("Jones").
done();
String queryString = TestHelper.simulateFormPostForTR(gateway, trParams, updateRequest, gateway.creditCard().transparentRedirectURLForUpdate());
CreditCard updatedCard = gateway.creditCard().confirmTransparentRedirect(queryString).getTarget();
assertEquals("John", updatedCard.getBillingAddress().getFirstName());
assertEquals("Jones", updatedCard.getBillingAddress().getLastName());
assertEquals(creditCard.getBillingAddress().getId(), updatedCard.getBillingAddress().getId());
}
@Test
public void find() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
CreditCard found = gateway.creditCard().find(card.getToken());
assertEquals("John Doe", found.getCardholderName());
assertEquals("510510", found.getBin());
assertEquals("05", found.getExpirationMonth());
assertEquals("2012", found.getExpirationYear());
assertEquals("05/2012", found.getExpirationDate());
assertEquals("5100", found.getLast4());
}
@Test
public void findReturnsAssociatedSubscriptions() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest cardRequest = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
CreditCard card = gateway.creditCard().create(cardRequest).getTarget();
String id = "subscription-id-" + new Random().nextInt();
SubscriptionRequest subscriptionRequest = new SubscriptionRequest().
id(id).
planId("integration_trialless_plan").
paymentMethodToken(card.getToken()).
price(new BigDecimal("1.00"));
Subscription subscription = gateway.subscription().create(subscriptionRequest).getTarget();
CreditCard foundCard = gateway.creditCard().find(card.getToken());
assertEquals(subscription.getId(), foundCard.getSubscriptions().get(0).getId());
assertEquals(new BigDecimal("1.00"), foundCard.getSubscriptions().get(0).getPrice());
assertEquals("integration_trialless_plan", foundCard.getSubscriptions().get(0).getPlanId());
}
@Test(expected = NotFoundException.class)
public void findWithBadToken() {
gateway.creditCard().find("badToken");
}
@Test
public void findWithEmptyIds() {
try {
gateway.creditCard().find(" ");
fail("Should throw NotFoundException");
} catch (NotFoundException e) {
}
}
@Test
public void findWithPayPalAccountToken() {
String nonce = TestHelper.generateFuturePaymentPayPalNonce(gateway);
Result<Customer> customerResult = gateway.customer().create(new CustomerRequest());
assertTrue(customerResult.isSuccess());
Customer customer = customerResult.getTarget();
PaymentMethodRequest request = new PaymentMethodRequest().
customerId(customer.getId()).
paymentMethodNonce(nonce);
Result<? extends PaymentMethod> result = gateway.paymentMethod().create(request);
assertTrue(result.isSuccess());
try {
gateway.creditCard().find(result.getTarget().getToken());
fail("Should throw NotFoundException");
} catch (NotFoundException e) {
}
}
@Test
public void fromNonce() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
String nonce = TestHelper.generateUnlockedNonce(gateway, customer.getId(), "4012888888881881");
CreditCard card = gateway.creditCard().fromNonce(nonce);
assertNotNull(card);
assertEquals(card.getMaskedNumber(), "401288******1881");
}
@Test
public void fromNoncePointingToUnlockedSharedCard() {
String nonce = TestHelper.generateUnlockedNonce(gateway);
try {
gateway.creditCard().fromNonce(nonce);
fail("Should throw NotFoundException");
} catch (NotFoundException e) {
assertTrue(e.getMessage().matches(".*not found.*"));
}
}
@Test
public void fromConsumedNonce() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
String nonce = TestHelper.generateUnlockedNonce(gateway, customer.getId(), "4012888888881881");
gateway.creditCard().fromNonce(nonce);
try {
gateway.creditCard().fromNonce(nonce);
fail("Should throw NotFoundException");
} catch (NotFoundException e) {
assertTrue(e.getMessage().matches(".*consumed.*"));
}
}
@Test
public void forward() {
BraintreeGateway forwardGateway = new BraintreeGateway(
Environment.DEVELOPMENT,
"forward_payment_method_merchant_id",
"forward_payment_method_public_key",
"forward_payment_method_private_key"
);
Customer customer = forwardGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> createResult = forwardGateway.creditCard().create(request);
assertTrue(createResult.isSuccess());
CreditCard card = createResult.getTarget();
PaymentMethodForwardRequest forwardRequest = new PaymentMethodForwardRequest()
.token(card.getToken())
.receivingMerchantId("integration_merchant_id");
Result<PaymentMethodNonce> forwardResult = forwardGateway.creditCard()
.forward(forwardRequest);
assertTrue(forwardResult.isSuccess());
PaymentMethodNonce nonce = forwardResult.getTarget();
assertTrue(nonce.getPublicId().matches("\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12}"));
assertFalse(nonce.isLocked());
assertFalse(nonce.isConsumed());
}
@Test
public void forwardInvalidToken() {
BraintreeGateway forwardGateway = new BraintreeGateway(
Environment.DEVELOPMENT,
"forward_payment_method_merchant_id",
"forward_payment_method_public_key",
"forward_payment_method_private_key"
);
try {
PaymentMethodForwardRequest forwardRequest = new PaymentMethodForwardRequest()
.token("invalid")
.receivingMerchantId("integration_merchant_id");
Result<PaymentMethodNonce> forwardResult = forwardGateway.creditCard()
.forward(forwardRequest);
fail();
} catch (NotFoundException e) {
}
}
@Test
public void forwardInvalidReceivingMerchantId() {
BraintreeGateway forwardGateway = new BraintreeGateway(
Environment.DEVELOPMENT,
"forward_payment_method_merchant_id",
"forward_payment_method_public_key",
"forward_payment_method_private_key"
);
Customer customer = forwardGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> createResult = forwardGateway.creditCard().create(request);
assertTrue(createResult.isSuccess());
CreditCard card = createResult.getTarget();
try {
PaymentMethodForwardRequest forwardRequest = new PaymentMethodForwardRequest()
.token(card.getToken())
.receivingMerchantId("invalid_merchant_id");
Result<PaymentMethodNonce> forwardResult = forwardGateway.creditCard()
.forward(forwardRequest);
fail();
} catch (NotFoundException e) {
}
}
@Test
public void delete() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12");
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
Result<CreditCard> deleteResult = gateway.creditCard().delete(card.getToken());
assertTrue(deleteResult.isSuccess());
try {
gateway.creditCard().find(card.getToken());
fail();
} catch (NotFoundException e) {
}
}
@Test
public void deleteWillNotDeletePayPalAccount() {
String nonce = TestHelper.generateFuturePaymentPayPalNonce(gateway);
Result<Customer> customerResult = gateway.customer().create(new CustomerRequest());
assertTrue(customerResult.isSuccess());
Customer customer = customerResult.getTarget();
PaymentMethodRequest request = new PaymentMethodRequest().
customerId(customer.getId()).
paymentMethodNonce(nonce);
Result<? extends PaymentMethod> result = gateway.paymentMethod().create(request);
assertTrue(result.isSuccess());
try {
gateway.creditCard().delete(result.getTarget().getToken());
fail();
} catch (NotFoundException e) {
}
}
@Test
public void checkDuplicateCreditCard() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("4012000033330026").
expirationDate("05/12").
options().
failOnDuplicatePaymentMethod(true).
done();
gateway.creditCard().create(request);
Result<CreditCard> result = gateway.creditCard().create(request);
assertFalse(result.isSuccess());
assertEquals(
ValidationErrorCode.CREDIT_CARD_DUPLICATE_CARD_EXISTS,
result.getErrors().forObject("creditCard").onField("number").get(0).getCode()
);
}
@Test
public void verifyValidCreditCard() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("4111111111111111").
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
}
@Test
public void verifyValidCreditCardWithVerificationWithRiskData() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("4111111111111111").
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
CreditCard card = result.getTarget();
assertNotNull(card);
CreditCardVerification verification = card.getVerification();
assertNotNull(verification);
RiskData riskData = verification.getRiskData();
assertNotNull(riskData);
assertNotNull(riskData.getDecision());
}
@Test
public void verifyValidCreditCardWithCustomVerificationAmount() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("4111111111111111").
expirationDate("05/12").
options().
verifyCard(true).
verificationAmount("1.02").
done();
Result<CreditCard> result = gateway.creditCard().create(request);
assertTrue(result.isSuccess());
}
@Test
public void verifyCreditCardAgainstSpecificMerchantAccount() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12").
options().
verifyCard(true).
verificationMerchantAccountId(NON_DEFAULT_MERCHANT_ACCOUNT_ID).
done();
Result<CreditCard> result = gateway.creditCard().create(request);
assertFalse(result.isSuccess());
assertEquals(NON_DEFAULT_MERCHANT_ACCOUNT_ID, result.getCreditCardVerification().getMerchantAccountId());
}
@Test
public void verifyInvalidCreditCard() {
Customer customer = gateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("123").
number("5105105105105100").
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = gateway.creditCard().create(request);
assertFalse(result.isSuccess());
CreditCardVerification verification = result.getCreditCardVerification();
assertEquals(CreditCardVerification.Status.PROCESSOR_DECLINED, verification.getStatus());
assertEquals("Do Not Honor", result.getMessage());
assertNull(verification.getGatewayRejectionReason());
}
@Test
public void verificationExposesgatewayRejectionReason() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
cardholderName("John Doe").
cvv("200").
number("4111111111111111").
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
assertFalse(result.isSuccess());
CreditCardVerification verification = result.getCreditCardVerification();
assertEquals(Transaction.GatewayRejectionReason.CVV, verification.getGatewayRejectionReason());
}
@Test
public void expiredSearch() {
ResourceCollection<CreditCard> expiredCards = gateway.creditCard().expired();
assertTrue(expiredCards.getMaximumSize() > 0);
List<String> tokens = new ArrayList<String>();
for (CreditCard card : expiredCards) {
assertTrue(card.isExpired());
tokens.add(card.getToken());
}
Set<String> uniqueTokens = new HashSet<String>(tokens);
assertEquals(expiredCards.getMaximumSize(), uniqueTokens.size());
}
@Test
public void expiringBetween() {
Calendar start = Calendar.getInstance();
start.set(2010, 0, 1);
Calendar end = Calendar.getInstance();
end.set(2010, 11, 30);
ResourceCollection<CreditCard> expiredCards = gateway.creditCard().expiringBetween(start, end);
assertTrue(expiredCards.getMaximumSize() > 0);
List<String> tokens = new ArrayList<String>();
for (CreditCard card : expiredCards) {
assertEquals("2010", card.getExpirationYear());
tokens.add(card.getToken());
}
Set<String> uniqueTokens = new HashSet<String>(tokens);
assertEquals(expiredCards.getMaximumSize(), uniqueTokens.size());
}
@Test
public void commercialCard() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number(CreditCardNumbers.CardTypeIndicators.Commercial.getValue()).
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCard.Commercial.YES, card.getCommercial());
}
@Test
public void durbinRegulatedCard() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number(CreditCardNumbers.CardTypeIndicators.DurbinRegulated.getValue()).
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCard.DurbinRegulated.YES, card.getDurbinRegulated());
}
@Test
public void debitCard() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number(CreditCardNumbers.CardTypeIndicators.Debit.getValue()).
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCard.Debit.YES, card.getDebit());
}
@Test
public void healthcareCard() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number(CreditCardNumbers.CardTypeIndicators.Healthcare.getValue()).
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCard.Healthcare.YES, card.getHealthcare());
assertEquals("J3", card.getProductId());
}
@Test
public void payrollCard() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number(CreditCardNumbers.CardTypeIndicators.Payroll.getValue()).
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCard.Payroll.YES, card.getPayroll());
assertEquals("MSA", card.getProductId());
}
@Test
public void prepaidCard() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number(CreditCardNumbers.CardTypeIndicators.Prepaid.getValue()).
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCard.Prepaid.YES, card.getPrepaid());
}
@Test
public void issuingBank() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number(CreditCardNumbers.CardTypeIndicators.IssuingBank.getValue()).
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCardDefaults.IssuingBank.getValue(), card.getIssuingBank());
}
@Test
public void countryOfIssuance() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number(CreditCardNumbers.CardTypeIndicators.CountryOfIssuance.getValue()).
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCardDefaults.CountryOfIssuance.getValue(), card.getCountryOfIssuance());
}
@Test
public void negativeCardTypeIndicators() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number(CreditCardNumbers.CardTypeIndicators.No.getValue()).
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCard.Commercial.NO, card.getCommercial());
assertEquals(CreditCard.Debit.NO, card.getDebit());
assertEquals(CreditCard.DurbinRegulated.NO, card.getDurbinRegulated());
assertEquals(CreditCard.Healthcare.NO, card.getHealthcare());
assertEquals(CreditCard.Payroll.NO, card.getPayroll());
assertEquals(CreditCard.Prepaid.NO, card.getPrepaid());
assertEquals("MSB", card.getProductId());
}
@Test
public void absentCardTypeIndicators() {
BraintreeGateway processingRulesGateway = new BraintreeGateway(Environment.DEVELOPMENT, "processing_rules_merchant_id", "processing_rules_public_key", "processing_rules_private_key");
Customer customer = processingRulesGateway.customer().create(new CustomerRequest()).getTarget();
CreditCardRequest request = new CreditCardRequest().
customerId(customer.getId()).
number("5555555555554444").
expirationDate("05/12").
options().
verifyCard(true).
done();
Result<CreditCard> result = processingRulesGateway.creditCard().create(request);
CreditCard card = result.getTarget();
assertEquals(CreditCard.Commercial.UNKNOWN, card.getCommercial());
assertEquals(CreditCard.Debit.UNKNOWN, card.getDebit());
assertEquals(CreditCard.DurbinRegulated.UNKNOWN, card.getDurbinRegulated());
assertEquals(CreditCard.Healthcare.UNKNOWN, card.getHealthcare());
assertEquals(CreditCard.Payroll.UNKNOWN, card.getPayroll());
assertEquals(CreditCard.Prepaid.UNKNOWN, card.getPrepaid());
assertEquals("Unknown", card.getCountryOfIssuance());
assertEquals("Unknown", card.getIssuingBank());
assertEquals("Unknown", card.getProductId());
}
}