@Config(sdk = 21) @Test public void deletePaymentMethodNonce_postToGraphQL() throws Exception { Authorization authorization = Authorization.fromString(stringFromFixture("client_token.json")); BraintreeFragment fragment = new MockFragmentBuilder() .authorization(authorization) .graphQLSuccessResponse("Success") .sessionId("test-session-id") .integration("test-integration") .build(); PaymentMethod.deletePaymentMethod(fragment, mCardNonce); ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); verify(fragment.getGraphQLHttpClient()).post(captor.capture(), any(HttpResponseCallback.class)); JSONObject graphQlRequest = new JSONObject(captor.getValue()); assertEquals(GraphQLQueryHelper.getQuery(RuntimeEnvironment.application, R.raw.delete_payment_method_mutation), graphQlRequest.getString(GraphQLConstants.Keys.QUERY)); JSONObject metadata = graphQlRequest.getJSONObject("clientSdkMetadata"); assertEquals(mCardNonce.getNonce(), graphQlRequest.getJSONObject("variables") .getJSONObject("input").getString("singleUseTokenId")); assertEquals("DeletePaymentMethodFromSingleUseToken", graphQlRequest .getString(GraphQLConstants.Keys.OPERATION_NAME)); assertEquals("test-integration", metadata.getString("integration")); assertEquals("test-session-id", metadata.getString("sessionId")); assertEquals("client", metadata.getString("source")); }
@Test public void deletePaymentMethodNonce_withApiBelowLollipop_doesNotPostToGraphQL() throws InvalidArgumentException { Authorization authorization = Authorization.fromString(stringFromFixture("client_token.json")); BraintreeFragment fragment = new MockFragmentBuilder() .authorization(authorization) .graphQLSuccessResponse("Success") .sessionId("test-session-id") .integration("test-integration") .build(); PaymentMethod.deletePaymentMethod(fragment, mCardNonce); ArgumentCaptor<Exception> captor = ArgumentCaptor.forClass(Exception.class); verify(fragment).postCallback(captor.capture()); assertTrue(captor.getValue() instanceof BraintreeException); assertEquals("Payment Method Nonce deletion is not supported for API < 21", captor.getValue().getMessage()); verifyZeroInteractions(fragment.getGraphQLHttpClient()); } }
@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)); }
@Config(sdk = 21) @Test public void deletePaymentMethodNonce_sendAnAnalyticsEventForSuccess() 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).sendAnalyticsEvent("delete-payment-methods.succeeded"); }
@Config(sdk = 21) @Test public void tokenize_sendGraphQLAnalyticsEventOnSuccess() { BraintreeFragment fragment = new MockFragmentBuilder() .configuration(new TestConfigurationBuilder() .graphQL() .build()) .graphQLSuccessResponse(stringFromFixture("response/graphql/credit_card.json")) .build(); CardBuilder cardBuilder = new CardBuilder(); TokenizationClient.tokenize(fragment, cardBuilder, new PaymentMethodNonceCallback() { @Override public void success(PaymentMethodNonce paymentMethodNonce) {} @Override public void failure(Exception exception) {} }); verify(fragment).sendAnalyticsEvent("card.graphql.tokenization.success"); }