@Test public void hashMapFromCard_mapsCorrectFields() { Card card = new Card.Builder(CARD_NUMBER, 8, 2019, CARD_CVC) .addressCity(CARD_CITY) .addressLine1(CARD_ADDRESS_L1) .addressLine2(CARD_ADDRESS_L2) .addressCountry(CARD_COUNTRY) .addressState(CARD_STATE) .addressZip(CARD_ZIP) .currency(CARD_CURRENCY) .name(CARD_NAME) .build(); Map<String, Object> cardMap = getCardMapFromHashMappedCard(card); assertEquals(CARD_NUMBER, cardMap.get("number")); assertEquals(CARD_CVC, cardMap.get("cvc")); assertEquals(8, cardMap.get("exp_month")); assertEquals(2019, cardMap.get("exp_year")); assertEquals(CARD_NAME, cardMap.get("name")); assertEquals(CARD_CURRENCY, cardMap.get("currency")); assertEquals(CARD_ADDRESS_L1, cardMap.get("address_line1")); assertEquals(CARD_ADDRESS_L2, cardMap.get("address_line2")); assertEquals(CARD_CITY, cardMap.get("address_city")); assertEquals(CARD_ZIP, cardMap.get("address_zip")); assertEquals(CARD_STATE, cardMap.get("address_state")); assertEquals(CARD_COUNTRY, cardMap.get("address_country")); }
final Builder builder = new Builder(null, expMonth, expYear, null); builder.addressCity(optString(jsonObject, FIELD_ADDRESS_CITY)); builder.addressLine1(optString(jsonObject, FIELD_ADDRESS_LINE1)); builder.addressLine1Check(optString(jsonObject, FIELD_ADDRESS_LINE1_CHECK)); builder.addressLine2(optString(jsonObject, FIELD_ADDRESS_LINE2)); builder.addressCountry(optString(jsonObject, FIELD_ADDRESS_COUNTRY)); builder.addressState(optString(jsonObject, FIELD_ADDRESS_STATE)); builder.addressZip(optString(jsonObject, FIELD_ADDRESS_ZIP)); builder.addressZipCheck(optString(jsonObject, FIELD_ADDRESS_ZIP_CHECK)); builder.brand(asCardBrand(optString(jsonObject, FIELD_BRAND))); builder.country(optCountryCode(jsonObject, FIELD_COUNTRY)); builder.customer(optString(jsonObject, FIELD_CUSTOMER)); builder.currency(optCurrency(jsonObject, FIELD_CURRENCY)); builder.cvcCheck(optString(jsonObject, FIELD_CVC_CHECK)); builder.funding(asFundingType(optString(jsonObject, FIELD_FUNDING))); builder.fingerprint(optString(jsonObject, FIELD_FINGERPRINT)); builder.id(optString(jsonObject, FIELD_ID)); builder.last4(optString(jsonObject, FIELD_LAST4)); builder.name(optString(jsonObject, FIELD_NAME)); builder.tokenizationMethod(optString(jsonObject, FIELD_TOKENIZATION_METHOD)); builder.metadata(optHash(jsonObject, FIELD_METADATA)); return builder.build();
@NonNull private static Card buildEquivalentJsonCard() { final Map<String, String> metadata = new HashMap<>(2); metadata.put("color", "blue"); metadata.put("animal", "dog"); return new Card.Builder(null, 8, 2017, null) .brand(Card.VISA) .funding(Card.FUNDING_CREDIT) .last4("4242") .id("card_189fi32eZvKYlo2CHK8NPRME") .country("US") .currency("usd") .addressCountry("US") .addressCity("Des Moines") .addressState("IA").addressZip("50305").addressZipCheck("unavailable") .addressLine1("123 Any Street").addressLine1Check("unavailable").addressLine2("456") .name("John Cardholder") .cvcCheck("unavailable") .customer("customer77") .fingerprint("abc123") .metadata(metadata) .build(); } }
@Test public void createQuery_withCardData_createsProperQueryString() { Card card = new Card.Builder("4242424242424242", 8, 2019, "123").build(); Map<String, Object> cardMap = StripeNetworkUtils.hashMapFromCard( ApplicationProvider.getApplicationContext(), card); String expectedValue = "product_usage=&card%5Bnumber%5D=4242424242424242&card%5B" + "cvc%5D=123&card%5Bexp_month%5D=8&card%5Bexp_year%5D=2019"; try { String query = StripeApiHandler.createQuery(cardMap); assertEquals(expectedValue, query); } catch (UnsupportedEncodingException unsupportedCodingException) { fail("Encoding error with card object"); } catch (InvalidRequestException invalidRequest) { fail("Invalid request error when encoding card query: " + invalidRequest.getLocalizedMessage()); } }
@Test public void hashMapFromCard_omitsEmptyFields() { Card card = new Card.Builder(CARD_NUMBER, 8, 2019, CARD_CVC).build(); Map<String, Object> cardMap = getCardMapFromHashMappedCard(card); assertEquals(CARD_NUMBER, cardMap.get("number")); assertEquals(CARD_CVC, cardMap.get("cvc")); assertEquals(8, cardMap.get("exp_month")); assertEquals(2019, cardMap.get("exp_year")); assertFalse(cardMap.containsKey("name")); assertFalse(cardMap.containsKey("currency")); assertFalse(cardMap.containsKey("address_line1")); assertFalse(cardMap.containsKey("address_line2")); assertFalse(cardMap.containsKey("address_city")); assertFalse(cardMap.containsKey("address_zip")); assertFalse(cardMap.containsKey("address_state")); assertFalse(cardMap.containsKey("address_country")); }