package com.braintreegateway.integrationtest; import java.util.List; import com.braintreegateway.*; import com.braintreegateway.exceptions.NotFoundException; import com.braintreegateway.SandboxValues.TransactionAmount; import com.braintreegateway.test.*; import org.junit.Test; import org.junit.Rule; import org.junit.rules.ExpectedException; import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; public class CoinbaseIT extends IntegrationTest{ @Test public void canCreateTransaction() { TransactionRequest request = new TransactionRequest(). amount(TransactionAmount.AUTHORIZE.amount). paymentMethodNonce(Nonce.Coinbase); Result<Transaction> authResult = gateway.transaction().sale(request); assertTrue(authResult.isSuccess()); CoinbaseDetails details = authResult.getTarget().getCoinbaseDetails(); assertNotNull(details); assertNull(details.getToken()); assertNotNull(details.getUserId()); assertThat(details.getUserId(), not(equalTo(""))); assertNotNull(details.getUserName()); assertThat(details.getUserName(), not(equalTo(""))); assertNotNull(details.getUserEmail()); assertThat(details.getUserEmail(), not(equalTo(""))); } @Test public void canVaultOnTransactionCreate() { TransactionRequest request = new TransactionRequest(). amount(TransactionAmount.AUTHORIZE.amount). paymentMethodNonce(Nonce.Coinbase). options(). submitForSettlement(true). storeInVaultOnSuccess(true). done(); Result<Transaction> authResult = gateway.transaction().sale(request); assertTrue(authResult.isSuccess()); Transaction transaction = authResult.getTarget(); assertNotNull(transaction); CoinbaseDetails details = transaction.getCoinbaseDetails(); assertNotNull(details); String token = details.getToken(); assertNotNull(token); PaymentMethod account = gateway.paymentMethod().find(token); assertTrue(account instanceof CoinbaseAccount); assertNotNull(account); } @Test public void canVault() { Result<Customer> customerResult = gateway.customer().create(new CustomerRequest()); String customerId = customerResult.getTarget().getId(); Result<? extends PaymentMethod> paymentMethodResult = gateway.paymentMethod().create(new PaymentMethodRequest().customerId(customerId).paymentMethodNonce(Nonce.Coinbase)); assertTrue(paymentMethodResult.isSuccess()); CoinbaseAccount account = (CoinbaseAccount) paymentMethodResult.getTarget(); assertNotNull(account); assertNotNull(account.getToken()); assertNotNull(account.getUserId()); assertThat(account.getUserId(), not(equalTo(""))); assertNotNull(account.getUserName()); assertThat(account.getUserName(), not(equalTo(""))); assertNotNull(account.getUserEmail()); assertThat(account.getUserEmail(), not(equalTo(""))); } @Rule public ExpectedException exception = ExpectedException.none(); @Test public void onCustomer() { Result<Customer> customerResult = gateway.customer().create(new CustomerRequest().paymentMethodNonce(Nonce.Coinbase)); assertTrue(customerResult.isSuccess()); Customer customer = customerResult.getTarget(); List<CoinbaseAccount> accounts = gateway.customer().find(customer.getId()).getCoinbaseAccounts(); assertEquals(1, accounts.size()); CoinbaseAccount account = accounts.get(0); assertNotNull(account); assertNotNull(account.getToken()); assertNotNull(account.getUserId()); assertThat(account.getUserId(), not(equalTo(""))); assertNotNull(account.getUserName()); assertThat(account.getUserName(), not(equalTo(""))); assertNotNull(account.getUserEmail()); assertThat(account.getUserEmail(), not(equalTo(""))); String token = account.getToken(); gateway.paymentMethod().delete(token); exception.expect(NotFoundException.class); gateway.paymentMethod().find(token); } @Test public void updateUpdatesCoinbaseAccount() { Result<Customer> customerResult = gateway.customer().create(new CustomerRequest()); String customerId = customerResult.getTarget().getId(); PaymentMethodRequest venmoRequest = new PaymentMethodRequest().customerId(customerId).paymentMethodNonce(Nonce.VenmoAccount); Result<? extends PaymentMethod> venmoResult = gateway.paymentMethod().create(venmoRequest); VenmoAccount venmoAccount = (VenmoAccount) venmoResult.getTarget(); assertTrue(venmoAccount.isDefault()); PaymentMethodRequest request = new PaymentMethodRequest().customerId(customerId).paymentMethodNonce(Nonce.Coinbase); Result<? extends PaymentMethod> paymentMethodResult = gateway.paymentMethod().create(request); assertTrue(paymentMethodResult.isSuccess()); String token = paymentMethodResult.getTarget().getToken(); PaymentMethodRequest updatePaymentMethodRequest = new PaymentMethodRequest(). options(). makeDefault(true). done(); Result<? extends PaymentMethod> result = gateway.paymentMethod().update(token, updatePaymentMethodRequest); assertTrue(result.isSuccess()); assertTrue(result.getTarget() instanceof CoinbaseAccount); CoinbaseAccount coinbaseAccount = (CoinbaseAccount) result.getTarget(); assertTrue(coinbaseAccount.isDefault()); } }