Skip to content

Commit

Permalink
Fix BinType crash - ignore case when parsing BinType (#1134)
Browse files Browse the repository at this point in the history
  • Loading branch information
tdchow authored Aug 28, 2024
1 parent c075b9d commit 4032a5c
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 7 deletions.
12 changes: 6 additions & 6 deletions Card/src/main/java/com/braintreepayments/api/card/BinData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,12 @@ data class BinData internal constructor(
val json = jsonObject ?: JSONObject()

return BinData(
prepaid = BinType.valueOf(Json.optString(json, PREPAID_KEY, BinType.Unknown.name)),
healthcare = BinType.valueOf(Json.optString(json, HEALTHCARE_KEY, BinType.Unknown.name)),
debit = BinType.valueOf(Json.optString(json, DEBIT_KEY, BinType.Unknown.name)),
durbinRegulated = BinType.valueOf(Json.optString(json, DURBIN_REGULATED_KEY, BinType.Unknown.name)),
commercial = BinType.valueOf(Json.optString(json, COMMERCIAL_KEY, BinType.Unknown.name)),
payroll = BinType.valueOf(Json.optString(json, PAYROLL_KEY, BinType.Unknown.name)),
prepaid = BinType.fromString(Json.optString(json, PREPAID_KEY, BinType.Unknown.name)),
healthcare = BinType.fromString(Json.optString(json, HEALTHCARE_KEY, BinType.Unknown.name)),
debit = BinType.fromString(Json.optString(json, DEBIT_KEY, BinType.Unknown.name)),
durbinRegulated = BinType.fromString(Json.optString(json, DURBIN_REGULATED_KEY, BinType.Unknown.name)),
commercial = BinType.fromString(Json.optString(json, COMMERCIAL_KEY, BinType.Unknown.name)),
payroll = BinType.fromString(Json.optString(json, PAYROLL_KEY, BinType.Unknown.name)),
issuingBank = convertNullToUnknown(json, ISSUING_BANK_KEY),
countryOfIssuance = convertNullToUnknown(json, COUNTRY_OF_ISSUANCE_KEY),
productId = convertNullToUnknown(json, PRODUCT_ID_KEY)
Expand Down
12 changes: 11 additions & 1 deletion Card/src/main/java/com/braintreepayments/api/card/BinType.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,15 @@ package com.braintreepayments.api.card
enum class BinType {
Yes,
No,
Unknown
Unknown;

companion object {
fun fromString(string: String): BinType {
return when (string.lowercase()) {
Yes.name.lowercase() -> Yes
No.name.lowercase() -> No
else -> Unknown
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.braintreepayments.api.card

import org.junit.Test
import kotlin.test.assertEquals

class BinTypeUnitTest {

@Test
fun `fromString is case insensitive`() {
assertEquals(BinType.Yes, BinType.fromString("YES"))
}

@Test
fun `fromString returns No`() {
assertEquals(BinType.No, BinType.fromString("no"))
}

@Test
fun `fromString returns Unknown for an unknown string`() {
assertEquals(BinType.Unknown, BinType.fromString("otherString"))
}
}

0 comments on commit 4032a5c

Please sign in to comment.