public void sendAnalyticsEvent(final String eventFragment) { final AnalyticsEvent request = new AnalyticsEvent(mContext, getSessionId(), mIntegrationType, eventFragment); waitForConfiguration(new ConfigurationListener() { @Override public void onConfigurationFetched(Configuration configuration) { if (configuration.getAnalytics().isEnabled()) { mAnalyticsDatabase.addEvent(request); } } }); }
.buildUpon() .appendQueryParameter("default_first", String.valueOf(defaultFirst)) .appendQueryParameter("session_id", fragment.getSessionId()) .build();
paymentMethodBuilder.setSessionId(fragment.getSessionId());
static Intent getLaunchIntent(VenmoConfiguration venmoConfiguration, String profileId, BraintreeFragment fragment) { Intent venmoIntent = getVenmoIntent() .putExtra(EXTRA_MERCHANT_ID, profileId) .putExtra(EXTRA_ACCESS_TOKEN, venmoConfiguration.getAccessToken()) .putExtra(EXTRA_ENVIRONMENT, venmoConfiguration.getEnvironment()); try { JSONObject braintreeData = new JSONObject(); JSONObject meta = new MetadataBuilder() .sessionId(fragment.getSessionId()) .integration(fragment.getIntegrationType()) .version() .build(); braintreeData.put(META_KEY, meta); venmoIntent.putExtra(EXTRA_BRAINTREE_DATA, braintreeData.toString()); } catch (JSONException ignored) {} return venmoIntent; }
.put("source", "client") .put("integration", fragment.getIntegrationType()) .put("sessionId", fragment.getSessionId()); payload.put("_meta", metaData);
@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 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 performAppSwitch_appSwitchesWithVenmoLaunchIntent() throws InvalidArgumentException, JSONException { Configuration configuration = getConfigurationFromFixture(); Authorization clientToken = Authorization.fromString(stringFromFixture("base_64_client_token.txt")); disableSignatureVerification(); BraintreeFragment fragment = new MockFragmentBuilder() .context(VenmoInstalledContextFactory.venmoInstalledContext(true, RuntimeEnvironment.application)) .authorization(clientToken) .configuration(configuration) .build(); when(fragment.getSessionId()).thenReturn("a-session-id"); when(fragment.getIntegrationType()).thenReturn("custom"); Venmo.authorizeAccount(fragment, false); ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class); verify(fragment).startActivityForResult(captor.capture(), eq(BraintreeRequestCodes.VENMO)); assertEquals("com.venmo/com.venmo.controller.SetupMerchantActivity", captor.getValue().getComponent().flattenToString()); Bundle extras = captor.getValue().getExtras(); assertEquals("merchant-id", extras.getString(Venmo.EXTRA_MERCHANT_ID)); assertEquals("access-token", extras.getString(Venmo.EXTRA_ACCESS_TOKEN)); assertEquals("environment", extras.getString(Venmo.EXTRA_ENVIRONMENT)); JSONObject braintreeData = new JSONObject(extras.getString(Venmo.EXTRA_BRAINTREE_DATA)); JSONObject meta = braintreeData.getJSONObject("_meta"); assertNotNull(meta); assertEquals(fragment.getSessionId(), meta.getString("sessionId")); assertEquals(fragment.getIntegrationType(), meta.getString("integration")); assertEquals(BuildConfig.VERSION_NAME, meta.getString("version")); assertEquals("android", meta.getString("platform")); }
@Test public void getLaunchIntent_doesNotContainAuthFingerprintWhenUsingTokenziationkey() throws JSONException, InvalidArgumentException { Configuration configuration = getConfigurationFromFixture(); Authorization clientToken = Authorization.fromString(TestTokenizationKey.TOKENIZATION_KEY); disableSignatureVerification(); BraintreeFragment fragment = new MockFragmentBuilder() .context(VenmoInstalledContextFactory.venmoInstalledContext(true, RuntimeEnvironment.application)) .authorization(clientToken) .configuration(configuration) .build(); when(fragment.getSessionId()).thenReturn("a-session-id"); when(fragment.getIntegrationType()).thenReturn("custom"); Venmo.authorizeAccount(fragment, false); ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class); verify(fragment).startActivityForResult(captor.capture(), eq(BraintreeRequestCodes.VENMO)); assertEquals("com.venmo/com.venmo.controller.SetupMerchantActivity", captor.getValue().getComponent().flattenToString()); Bundle extras = captor.getValue().getExtras(); assertEquals("merchant-id", extras.getString(Venmo.EXTRA_MERCHANT_ID)); assertEquals("access-token", extras.getString(Venmo.EXTRA_ACCESS_TOKEN)); assertEquals("environment", extras.getString(Venmo.EXTRA_ENVIRONMENT)); JSONObject braintreeData = new JSONObject(extras.getString(Venmo.EXTRA_BRAINTREE_DATA)); assertNull(Json.optString(braintreeData, "authorization_fingerprint", null)); }
.sessionId(fragment.getSessionId()) .source("client") .integration(fragment.getIntegrationType())
@Test public void performAppSwitch_whenProfileIdIsNull_appSwitchesWithMerchantId() throws InvalidArgumentException, JSONException { Configuration configuration = getConfigurationFromFixture(); Authorization clientToken = Authorization.fromString(stringFromFixture("base_64_client_token.txt")); disableSignatureVerification(); BraintreeFragment fragment = new MockFragmentBuilder() .context(VenmoInstalledContextFactory.venmoInstalledContext(true, RuntimeEnvironment.application)) .authorization(clientToken) .configuration(configuration) .build(); when(fragment.getSessionId()).thenReturn("a-session-id"); when(fragment.getIntegrationType()).thenReturn("custom"); Venmo.authorizeAccount(fragment, false, null); ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class); verify(fragment).startActivityForResult(captor.capture(), eq(BraintreeRequestCodes.VENMO)); assertEquals("com.venmo/com.venmo.controller.SetupMerchantActivity", captor.getValue().getComponent().flattenToString()); Bundle extras = captor.getValue().getExtras(); assertEquals("merchant-id", extras.getString(Venmo.EXTRA_MERCHANT_ID)); assertEquals("access-token", extras.getString(Venmo.EXTRA_ACCESS_TOKEN)); }
@Test public void performAppSwitch_whenProfileIdIsSpecified_appSwitchesWithProfileIdAndAccessToken() throws InvalidArgumentException, JSONException { Configuration configuration = getConfigurationFromFixture(); Authorization clientToken = Authorization.fromString(stringFromFixture("base_64_client_token.txt")); disableSignatureVerification(); BraintreeFragment fragment = new MockFragmentBuilder() .context(VenmoInstalledContextFactory.venmoInstalledContext(true, RuntimeEnvironment.application)) .authorization(clientToken) .configuration(configuration) .build(); when(fragment.getSessionId()).thenReturn("a-session-id"); when(fragment.getIntegrationType()).thenReturn("custom"); Venmo.authorizeAccount(fragment, false, "second-pwv-profile-id"); ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class); verify(fragment).startActivityForResult(captor.capture(), eq(BraintreeRequestCodes.VENMO)); assertEquals("com.venmo/com.venmo.controller.SetupMerchantActivity", captor.getValue().getComponent().flattenToString()); Bundle extras = captor.getValue().getExtras(); assertEquals("second-pwv-profile-id", extras.getString(Venmo.EXTRA_MERCHANT_ID)); assertEquals("access-token", extras.getString(Venmo.EXTRA_ACCESS_TOKEN)); }