[fenix] Fix breaking change in KeyProvider

`key` was renamed to `getOrGenerateKey` and is now a `suspend`.
pull/600/head
Grisha Kruglov 3 years ago committed by mergify[bot]
parent 4ad2c1c592
commit 6b7cdce783

@ -12,6 +12,9 @@ import android.view.View
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.SecureFragment import org.mozilla.fenix.SecureFragment
import org.mozilla.fenix.databinding.FragmentCreditCardEditorBinding import org.mozilla.fenix.databinding.FragmentCreditCardEditorBinding
@ -65,10 +68,14 @@ class CreditCardEditorFragment : SecureFragment(R.layout.fragment_credit_card_ed
val binding = FragmentCreditCardEditorBinding.bind(view) val binding = FragmentCreditCardEditorBinding.bind(view)
creditCardEditorState = lifecycleScope.launch(Dispatchers.Main) {
args.creditCard?.toCreditCardEditorState(storage) ?: getInitialCreditCardEditorState() creditCardEditorState = withContext(Dispatchers.IO) {
creditCardEditorView = CreditCardEditorView(binding, interactor) args.creditCard?.toCreditCardEditorState(storage)
creditCardEditorView.bind(creditCardEditorState) ?: getInitialCreditCardEditorState()
}
creditCardEditorView = CreditCardEditorView(binding, interactor)
creditCardEditorView.bind(creditCardEditorState)
}
} }
/** /**

@ -31,9 +31,9 @@ data class CreditCardEditorState(
/** /**
* Returns a [CreditCardEditorState] from the given [CreditCard]. * Returns a [CreditCardEditorState] from the given [CreditCard].
*/ */
fun CreditCard.toCreditCardEditorState(storage: AutofillCreditCardsAddressesStorage): CreditCardEditorState { suspend fun CreditCard.toCreditCardEditorState(storage: AutofillCreditCardsAddressesStorage): CreditCardEditorState {
val crypto = storage.getCreditCardCrypto() val crypto = storage.getCreditCardCrypto()
val key = crypto.key() val key = crypto.getOrGenerateKey()
val cardNumber = crypto.decrypt(key, encryptedCardNumber)?.number ?: "" val cardNumber = crypto.decrypt(key, encryptedCardNumber)?.number ?: ""
val startYear = expiryYear.toInt() val startYear = expiryYear.toInt()
val endYear = startYear + NUMBER_OF_YEARS_TO_SHOW val endYear = startYear + NUMBER_OF_YEARS_TO_SHOW

@ -6,6 +6,7 @@ package org.mozilla.fenix.settings.creditcards
import io.mockk.every import io.mockk.every
import io.mockk.mockk import io.mockk.mockk
import kotlinx.coroutines.runBlocking
import mozilla.components.concept.storage.CreditCard import mozilla.components.concept.storage.CreditCard
import mozilla.components.concept.storage.CreditCardNumber import mozilla.components.concept.storage.CreditCardNumber
import mozilla.components.service.sync.autofill.AutofillCreditCardsAddressesStorage import mozilla.components.service.sync.autofill.AutofillCreditCardsAddressesStorage
@ -36,7 +37,7 @@ class CreditCardEditorStateTest {
) )
@Test @Test
fun testToCreditCardEditorState() { fun testToCreditCardEditorState() = runBlocking {
val storage: AutofillCreditCardsAddressesStorage = mockk(relaxed = true) val storage: AutofillCreditCardsAddressesStorage = mockk(relaxed = true)
val crypto: AutofillCrypto = mockk(relaxed = true) val crypto: AutofillCrypto = mockk(relaxed = true)

@ -10,6 +10,7 @@ import io.mockk.every
import io.mockk.mockk import io.mockk.mockk
import io.mockk.spyk import io.mockk.spyk
import io.mockk.verify import io.mockk.verify
import kotlinx.coroutines.runBlocking
import mozilla.components.concept.storage.CreditCard import mozilla.components.concept.storage.CreditCard
import mozilla.components.concept.storage.CreditCardNumber import mozilla.components.concept.storage.CreditCardNumber
import mozilla.components.concept.storage.NewCreditCardFields import mozilla.components.concept.storage.NewCreditCardFields
@ -99,7 +100,7 @@ class CreditCardEditorViewTest {
} }
@Test @Test
fun `GIVEN a credit card THEN credit card form inputs are displaying the provided credit card information`() { fun `GIVEN a credit card THEN credit card form inputs are displaying the provided credit card information`() = runBlocking {
creditCardEditorView.bind(creditCard.toCreditCardEditorState(storage)) creditCardEditorView.bind(creditCard.toCreditCardEditorState(storage))
assertEquals(cardNumber, fragmentCreditCardEditorBinding.cardNumberInput.text.toString()) assertEquals(cardNumber, fragmentCreditCardEditorBinding.cardNumberInput.text.toString())
@ -120,7 +121,7 @@ class CreditCardEditorViewTest {
} }
@Test @Test
fun `GIVEN a credit card WHEN the delete card button is clicked THEN interactor is called`() { fun `GIVEN a credit card WHEN the delete card button is clicked THEN interactor is called`() = runBlocking {
creditCardEditorView.bind(creditCard.toCreditCardEditorState(storage)) creditCardEditorView.bind(creditCard.toCreditCardEditorState(storage))
assertEquals(View.VISIBLE, fragmentCreditCardEditorBinding.deleteButton.visibility) assertEquals(View.VISIBLE, fragmentCreditCardEditorBinding.deleteButton.visibility)
@ -271,7 +272,7 @@ class CreditCardEditorViewTest {
} }
@Test @Test
fun `GIVEN a valid credit card WHEN the save button is clicked THEN interactor is called`() { fun `GIVEN a valid credit card WHEN the save button is clicked THEN interactor is called`() = runBlocking {
creditCardEditorView.bind(creditCard.toCreditCardEditorState(storage)) creditCardEditorView.bind(creditCard.toCreditCardEditorState(storage))
fragmentCreditCardEditorBinding.saveButton.performClick() fragmentCreditCardEditorBinding.saveButton.performClick()

Loading…
Cancel
Save