package com.braintreegateway.integrationtest;
import com.braintreegateway.test.Nonce;
import com.braintreegateway.*;
import com.braintreegateway.testhelpers.TestHelper;
import com.braintreegateway.exceptions.NotFoundException;
import org.junit.Test;
import java.util.Calendar;
import java.util.Random;
import java.util.regex.Pattern;
import java.math.BigDecimal;
import static org.junit.Assert.*;
public class IdealPaymentIT extends IntegrationTest {
@Test
public void findsIdealPaymentById() {
String idealPaymentId = TestHelper.generateValidIdealPaymentId(gateway);
IdealPayment idealPayment = gateway.idealPayment().find(idealPaymentId);
assertTrue(Pattern.matches("^idealpayment_\\w{6,}$", idealPayment.getId()));
assertTrue(Pattern.matches("^\\d{16,}$", idealPayment.getIdealTransactionId()));
assertNotNull(idealPayment.getCurrency());
assertNotNull(idealPayment.getAmount());
assertNotNull(idealPayment.getStatus());
assertNotNull(idealPayment.getOrderId());
assertNotNull(idealPayment.getIssuer());
assertTrue(idealPayment.getApprovalUrl().startsWith("https://"));
assertNotNull(idealPayment.getIbanBankAccount().getAccountHolderName());
assertNotNull(idealPayment.getIbanBankAccount().getBic());
assertNotNull(idealPayment.getIbanBankAccount().getMaskedIban());
assertTrue(Pattern.matches("^\\d{4}$", idealPayment.getIbanBankAccount().getIbanAccountNumberLast4()));
assertNotNull(idealPayment.getIbanBankAccount().getIbanCountry());
assertNotNull(idealPayment.getIbanBankAccount().getDescription());
}
@Test
public void findThrowsNotFoundExceptionWhenIdealPaymentIsMissing() {
try {
gateway.idealPayment().find(TestHelper.generateInvalidIdealPaymentId());
fail("Should throw NotFoundException");
} catch (NotFoundException e) {
}
}
@Test
public void saleWithIdealPayment() {
String idealPaymentId = TestHelper.generateValidIdealPaymentId(gateway);
TransactionRequest transactionRequest = new TransactionRequest()
.merchantAccountId("ideal_merchant_account")
.orderId("ABC123")
.amount(SandboxValues.TransactionAmount.AUTHORIZE.amount);
Result<Transaction> transactionResult = gateway.idealPayment().sale(idealPaymentId, transactionRequest);
assertTrue(transactionResult.isSuccess());
Transaction transaction = transactionResult.getTarget();
assertNotNull(transaction);
assertEquals(Transaction.Status.SETTLED, transaction.getStatus());
IdealPaymentDetails idealPaymentDetails = transaction.getIdealPaymentDetails();
assertTrue(Pattern.matches("^idealpayment_\\w{6,}$", idealPaymentDetails.getIdealPaymentId()));
assertTrue(Pattern.matches("^\\d{16,}$", idealPaymentDetails.getIdealTransactionId()));
assertTrue(idealPaymentDetails.getImageUrl().startsWith("https://"));
assertNotNull(idealPaymentDetails.getMaskedIban());
assertNotNull(idealPaymentDetails.getBic());
}
}