@Test public void collectDeviceData() throws JSONException { BraintreeFragment fragment = new MockFragmentBuilder().build(); String deviceData = DataCollector.collectDeviceData(fragment); JSONObject json = new JSONObject(deviceData); assertFalse(TextUtils.isEmpty(json.getString("device_session_id"))); assertEquals("600000", json.getString("fraud_merchant_id")); assertNotNull(json.getString("correlation_id")); }
@Test public void collectDeviceData_usesDirectMerchantId() throws JSONException { BraintreeFragment fragment = new MockFragmentBuilder().build(); String deviceData = DataCollector.collectDeviceData(fragment, "100"); JSONObject json = new JSONObject(deviceData); assertFalse(TextUtils.isEmpty(json.getString("device_session_id"))); assertEquals("100", json.getString("fraud_merchant_id")); }
@Test public void authorizeAccount_postsExceptionWhenNotEnabled() { BraintreeFragment fragment = new MockFragmentBuilder().build(); PayPal.authorizeAccount(fragment); ArgumentCaptor<Exception> captor = ArgumentCaptor.forClass(Exception.class); verify(fragment).postCallback(captor.capture()); assertTrue(captor.getValue() instanceof BraintreeException); assertEquals("PayPal is not enabled", captor.getValue().getMessage()); }
@Test public void tokenize_includesSessionIdInRequest() throws JSONException { BraintreeFragment fragment = new MockFragmentBuilder().build(); when(fragment.getSessionId()).thenReturn("session-id"); TokenizationClient.tokenize(fragment, new CardBuilder(), null); ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); verify(fragment.getHttpClient()).post(anyString(), captor.capture(), any(HttpResponseCallback.class)); JSONObject data = new JSONObject(captor.getValue()).getJSONObject("_meta"); assertEquals("session-id", data.getString("sessionId")); }
@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 onActivityResult_sendsAnalyticsEventOnSuccess() { BraintreeFragment fragment = new MockFragmentBuilder() .build(); Intent intent = new Intent() .putExtra(Venmo.EXTRA_PAYMENT_METHOD_NONCE, "123456-12345-12345-a-adfa") .putExtra(Venmo.EXTRA_USERNAME, "username"); Venmo.onActivityResult(fragment, Activity.RESULT_OK, intent); verify(fragment).sendAnalyticsEvent("pay-with-venmo.app-switch.success"); }
@Before public void setup() { mMockFragmentBuilder = new MockFragmentBuilder() .context(RuntimeEnvironment.application); }
@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 onActivityResult_sendsAnalyticsEventOnCancel() { BraintreeFragment fragment = new MockFragmentBuilder() .build(); Venmo.onActivityResult(fragment, Activity.RESULT_CANCELED, new Intent()); verify(fragment).sendAnalyticsEvent("pay-with-venmo.app-switch.canceled"); }
@Test public void authorizeAccount_postsExceptionWhenNotInstalled() { Configuration configuration = getConfigurationFromFixture(); BraintreeFragment fragment = new MockFragmentBuilder() .configuration(configuration) .build(); Venmo.authorizeAccount(fragment, false); ArgumentCaptor<AppSwitchNotAvailableException> captor = ArgumentCaptor.forClass(AppSwitchNotAvailableException.class); verify(fragment).postCallback(captor.capture()); assertEquals("Venmo is not installed", captor.getValue().getMessage()); }
@Test public void authorizeAccount_postsExceptionWhenNotEnabled() throws JSONException { Configuration configuration = new TestConfigurationBuilder().buildConfiguration(); BraintreeFragment fragment = new MockFragmentBuilder() .configuration(configuration) .build(); Venmo.authorizeAccount(fragment, false); ArgumentCaptor<AppSwitchNotAvailableException> captor = ArgumentCaptor.forClass(AppSwitchNotAvailableException.class); verify(fragment).postCallback(captor.capture()); assertEquals("Venmo is not enabled", captor.getValue().getMessage()); }
@Test public void fetchCapabilities_callsListenerWithErrorOnFailure() { RuntimeException expected = new RuntimeException("expected runtime exception"); BraintreeFragment fragment = new MockFragmentBuilder() .configuration(mConfigurationWithUnionPay) .errorResponse(expected) .build(); UnionPay.fetchCapabilities(fragment, UNIONPAY_CREDIT); verify(fragment).postCallback(expected); }
@Test public void enroll_failsIfUnionPayIsDisabled() throws JSONException { UnionPayCardBuilder unionPayCardBuilder = new UnionPayCardBuilder() .cardNumber("some-card-number"); BraintreeFragment fragment = new MockFragmentBuilder() .configuration(Configuration.fromJson(stringFromFixture("configuration/configuration.json"))) .build(); UnionPay.enroll(fragment, unionPayCardBuilder); ArgumentCaptor<ConfigurationException> argumentCaptor = ArgumentCaptor.forClass(ConfigurationException.class); verify(fragment).postCallback(argumentCaptor.capture()); assertEquals("UnionPay is not enabled", argumentCaptor.getValue().getMessage()); }
private BraintreeFragment getMockFragment(String authorization, Configuration configuration) { try { return new MockFragmentBuilder() .authorization(Authorization.fromString(authorization)) .configuration(configuration) .build(); } catch (InvalidArgumentException e) { fail(e.getMessage()); return null; } }
@Config(sdk = 21) @Test public void deletePaymentMethodNonce_sendNoncePostCallbackForSuccess() throws InvalidArgumentException { Authorization authorization = Authorization.fromString(stringFromFixture("client_token.json")); BraintreeFragment fragment = new MockFragmentBuilder() .authorization(authorization) .graphQLSuccessResponse("Success") .build(); PaymentMethod.deletePaymentMethod(fragment, mCardNonce); verify(fragment).postPaymentMethodDeletedCallback(eq(mCardNonce)); }
@Test public void getRewardsBalance_sendsAnalyticsEventOnFailure() { BraintreeFragment fragment = new MockFragmentBuilder() .configuration(mConfiguration) .errorResponse(new AuthorizationException("Bad fingerprint")) .build(); AmericanExpress.getRewardsBalance(fragment, "fake-nonce", "USD"); verify(fragment).sendAnalyticsEvent("amex.rewards-balance.start"); verify(fragment).sendAnalyticsEvent("amex.rewards-balance.error"); }
@Config(sdk = 21) @Test public void deletePaymentMethodNonce_sendAnAnalyticsEventForFailure() throws InvalidArgumentException { Authorization authorization = Authorization.fromString(stringFromFixture("client_token.json")); BraintreeFragment fragment = new MockFragmentBuilder() .authorization(authorization) .graphQLErrorResponse(new UnexpectedException("Error")) .build(); PaymentMethod.deletePaymentMethod(fragment, mCardNonce); verify(fragment).sendAnalyticsEvent("delete-payment-methods.failed"); }
@Test public void performAppSwitch_sendsAnalyticsEventWhenStarted() { Configuration configuration = getConfigurationFromFixture(); BraintreeFragment fragment = new MockFragmentBuilder() .context(VenmoInstalledContextFactory.venmoInstalledContext(true, RuntimeEnvironment.application)) .configuration(configuration) .build(); Venmo.authorizeAccount(fragment, false); verify(fragment).sendAnalyticsEvent("pay-with-venmo.selected"); verify(fragment).sendAnalyticsEvent("pay-with-venmo.app-switch.started"); }
private BraintreeFragment getSetupFragment() { String configuration = mBaseConfiguration.googlePayment(mBaseConfiguration.googlePayment() .supportedNetworks(new String[]{"visa", "mastercard", "amex", "discover"})) .withAnalytics() .build(); return new MockFragmentBuilder() .configuration(configuration) .build(); }
@Test public void tokenize_tokenizesNonCardPaymentMethodsWithRestWhenGraphQLIsEnabled() { BraintreeFragment fragment = new MockFragmentBuilder() .configuration(new TestConfigurationBuilder() .graphQL() .build()) .build(); TokenizationClient.tokenize(fragment, new PayPalAccountBuilder(), null); TokenizationClient.tokenize(fragment, new UnionPayCardBuilder(), null); TokenizationClient.tokenize(fragment, new VenmoAccountBuilder(), null); verifyZeroInteractions(fragment.getGraphQLHttpClient()); }