/** * Retrieves the current list of {@link PaymentMethodNonce}s for the current customer. * <p/> * When finished, the {@link java.util.List} of {@link PaymentMethodNonce}s will be sent to {@link * PaymentMethodNoncesUpdatedListener#onPaymentMethodNoncesUpdated(List)}. * * @param fragment {@link BraintreeFragment} */ public static void getPaymentMethodNonces(BraintreeFragment fragment) { getPaymentMethodNonces(fragment, false); }
@Test public void getPaymentMethodNonces_includesDefaultFirstParamAndSessionIdInRequestPath() { BraintreeFragment fragment = new MockFragmentBuilder().build(); when(fragment.getSessionId()).thenReturn("session-id"); PaymentMethod.getPaymentMethodNonces(fragment, true); ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); verify(fragment.getHttpClient()).get(captor.capture(), any(HttpResponseCallback.class)); String requestUri = captor.getValue(); assertTrue(requestUri.contains("default_first=true")); assertTrue(requestUri.contains("session_id=" + fragment.getSessionId())); }
@Test public void getPaymentMethodNonces_returnsAnEmptyListIfEmpty() { BraintreeFragment fragment = new MockFragmentBuilder() .successResponse(stringFromFixture("payment_methods/get_payment_methods_empty_response.json")) .build(); PaymentMethod.getPaymentMethodNonces(fragment); ArgumentCaptor<List<PaymentMethodNonce>> captor = ArgumentCaptor.forClass((Class) List.class); verify(fragment).postCallback(captor.capture()); assertEquals(0, captor.getValue().size()); }
@Test public void getPaymentMethodNonces_doesNotParseAndroidPayPaymentMethods() { BraintreeFragment fragment = new MockFragmentBuilder() .successResponse(stringFromFixture("payment_methods/get_payment_methods_android_pay_response.json")) .build(); PaymentMethod.getPaymentMethodNonces(fragment); ArgumentCaptor<List<PaymentMethodNonce>> captor = ArgumentCaptor.forClass((Class) List.class); verify(fragment).postCallback(captor.capture()); List<PaymentMethodNonce> paymentMethodNonces = captor.getValue(); assertEquals(0, paymentMethodNonces.size()); }
@Test public void getPaymentMethodNonces_throwsAnError() { BraintreeFragment fragment = new MockFragmentBuilder() .errorResponse(new UnexpectedException("Error")) .build(); PaymentMethod.getPaymentMethodNonces(fragment); ArgumentCaptor<Exception> captor = ArgumentCaptor.forClass(Exception.class); verify(fragment).postCallback(captor.capture()); assertTrue(captor.getValue() instanceof UnexpectedException); }
@Test public void getPaymentMethodNonces_fetchesPaymentMethods() { BraintreeFragment fragment = new MockFragmentBuilder() .successResponse(stringFromFixture("payment_methods/get_payment_methods_response.json")) .build(); PaymentMethod.getPaymentMethodNonces(fragment); ArgumentCaptor<List<PaymentMethodNonce>> captor = ArgumentCaptor.forClass((Class) List.class); verify(fragment).postCallback(captor.capture()); List<PaymentMethodNonce> paymentMethodNonces = captor.getValue(); assertEquals(3, paymentMethodNonces.size()); assertEquals("11", ((CardNonce) paymentMethodNonces.get(0)).getLastTwo()); assertEquals("PayPal", paymentMethodNonces.get(1).getTypeLabel()); assertEquals("happy-venmo-joe", ((VenmoAccountNonce) paymentMethodNonces.get(2)).getUsername()); }
@Test public void getPaymentMethodNonces_sendsAnAnalyticsEventForParsingErrors() { BraintreeFragment fragment = new MockFragmentBuilder() .successResponse("{}") .build(); PaymentMethod.getPaymentMethodNonces(fragment); verify(fragment).sendAnalyticsEvent("get-payment-methods.failed"); }
@Test public void getPaymentMethodNonces_sendsAnAnalyticsEventForErrors() { BraintreeFragment fragment = new MockFragmentBuilder() .errorResponse(new UnexpectedException("Error")) .build(); PaymentMethod.getPaymentMethodNonces(fragment); verify(fragment).sendAnalyticsEvent("get-payment-methods.failed"); }
@Test public void getPaymentMethodNonces_sendsAnAnalyticsEventForSuccess() { BraintreeFragment fragment = new MockFragmentBuilder() .successResponse(stringFromFixture("payment_methods/get_payment_methods_response.json")) .build(); PaymentMethod.getPaymentMethodNonces(fragment); verify(fragment).sendAnalyticsEvent("get-payment-methods.succeeded"); }
.expirationYear(validExpirationYear())); PaymentMethod.getPaymentMethodNonces(fragment);
@Test(timeout = 10000) public void getPaymentMethodNonces_getsPaymentMethodsFromServer() throws InterruptedException, InvalidArgumentException { final CountDownLatch latch = new CountDownLatch(1); final String clientToken = new TestClientTokenBuilder().build(); BraintreeFragment fragment = BraintreeFragment.newInstance(mActivity, clientToken); getInstrumentation().waitForIdleSync(); fragment.addListener(new PaymentMethodNoncesUpdatedListener() { @Override public void onPaymentMethodNoncesUpdated(List<PaymentMethodNonce> paymentMethodNonces) { assertEquals(1, paymentMethodNonces.size()); assertIsANonce(paymentMethodNonces.get(0).getNonce()); assertEquals("11", ((CardNonce) paymentMethodNonces.get(0)).getLastTwo()); latch.countDown(); } }); fragment.addListener(new BraintreeErrorListener() { @Override public void onError(Exception error) { fail(error.getMessage()); } }); tokenize(fragment, new CardBuilder() .cardNumber(VISA) .expirationMonth("04") .expirationYear(validExpirationYear())); PaymentMethod.getPaymentMethodNonces(fragment); latch.await(); }