From 89a1b0016cd01fe83eac5a7a6b97afdaaebc2468 Mon Sep 17 00:00:00 2001 From: Gabriel Luong Date: Thu, 27 May 2021 18:44:00 -0400 Subject: [PATCH] For #19492 - Provide the correct CreditCardNumber type to UpdatableCreditCardFields when updating a credit card (#19692) We were crashing because we were specifying the wrong `CreditCardNumber` type when constructing the `UpdatableCreditCardFields`. We only had the plaintext card number from the user input, but was placing it off as an encrypted card number, which resulted in the crash. --- .../settings/creditcards/view/CreditCardEditorView.kt | 10 +++++++--- .../settings/creditcards/CreditCardEditorViewTest.kt | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/creditcards/view/CreditCardEditorView.kt b/app/src/main/java/org/mozilla/fenix/settings/creditcards/view/CreditCardEditorView.kt index 797dce123..8ea9d2fc4 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/creditcards/view/CreditCardEditorView.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/creditcards/view/CreditCardEditorView.kt @@ -17,6 +17,7 @@ import mozilla.components.support.ktx.android.view.hideKeyboard import mozilla.components.support.utils.creditCardIIN import org.mozilla.fenix.R import org.mozilla.fenix.ext.toEditable +import org.mozilla.fenix.settings.creditcards.CreditCardEditorFragment import org.mozilla.fenix.settings.creditcards.CreditCardEditorState import org.mozilla.fenix.settings.creditcards.interactor.CreditCardEditorInteractor import org.mozilla.fenix.settings.creditcards.last4Digits @@ -64,8 +65,10 @@ class CreditCardEditorView( } /** - * Saves a new credit card or updates an existing one with data from user input. - * @param state The state for the CreditCardEditorFragment containing all credit card data. + * Saves a new credit card or updates an existing one with data from the user input. + * + * @param state The state of the [CreditCardEditorFragment] containing the edited credit card + * information. */ internal fun saveCreditCard(state: CreditCardEditorState) { containerView.hideKeyboard() @@ -76,7 +79,7 @@ class CreditCardEditorView( if (state.isEditing) { val fields = UpdatableCreditCardFields( billingName = name_on_card_input.text.toString(), - cardNumber = CreditCardNumber.Encrypted(cardNumber), + cardNumber = CreditCardNumber.Plaintext(cardNumber), cardNumberLast4 = cardNumber.last4Digits(), expiryMonth = (expiry_month_drop_down.selectedItemPosition + 1).toLong(), expiryYear = expiry_year_drop_down.selectedItem.toString().toLong(), @@ -99,6 +102,7 @@ class CreditCardEditorView( /** * Validates the credit card information entered by the user. + * * @return true if the credit card is valid, false otherwise. */ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) diff --git a/app/src/test/java/org/mozilla/fenix/settings/creditcards/CreditCardEditorViewTest.kt b/app/src/test/java/org/mozilla/fenix/settings/creditcards/CreditCardEditorViewTest.kt index c27bb2874..8ad70ad58 100644 --- a/app/src/test/java/org/mozilla/fenix/settings/creditcards/CreditCardEditorViewTest.kt +++ b/app/src/test/java/org/mozilla/fenix/settings/creditcards/CreditCardEditorViewTest.kt @@ -222,7 +222,7 @@ class CreditCardEditorViewTest { guid = creditCard.guid, creditCardFields = UpdatableCreditCardFields( billingName = creditCard.billingName, - cardNumber = creditCard.encryptedCardNumber, + cardNumber = CreditCardNumber.Plaintext(cardNumber), cardNumberLast4 = creditCard.cardNumberLast4, expiryMonth = creditCard.expiryMonth, expiryYear = creditCard.expiryYear,