@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")); }
@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")); }
@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(); } }
final Builder builder = new Builder(null, expMonth, expYear, null); builder.addressCity(optString(jsonObject, FIELD_ADDRESS_CITY)); builder.addressLine1(optString(jsonObject, FIELD_ADDRESS_LINE1));
@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()); } }