[PM-9409] Define FIDO 2 assertion Special Circumstance (#3612)

This commit is contained in:
Patrick Honkonen
2024-07-24 16:01:22 -04:00
committed by GitHub
parent b48837e13c
commit da3d834a91
13 changed files with 584 additions and 7 deletions

View File

@@ -10,9 +10,12 @@ import com.x8bit.bitwarden.data.auth.repository.model.SwitchAccountResult
import com.x8bit.bitwarden.data.auth.repository.model.UserState
import com.x8bit.bitwarden.data.auth.util.getPasswordlessRequestDataIntentOrNull
import com.x8bit.bitwarden.data.autofill.fido2.manager.Fido2CredentialManager
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2CredentialAssertionRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2CredentialRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2ValidateOriginResult
import com.x8bit.bitwarden.data.autofill.fido2.model.createMockFido2CredentialAssertionRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.createMockFido2CredentialRequest
import com.x8bit.bitwarden.data.autofill.fido2.util.getFido2AssertionRequestOrNull
import com.x8bit.bitwarden.data.autofill.fido2.util.getFido2CredentialRequestOrNull
import com.x8bit.bitwarden.data.autofill.manager.AutofillSelectionManager
import com.x8bit.bitwarden.data.autofill.manager.AutofillSelectionManagerImpl
@@ -470,6 +473,27 @@ class MainViewModelTest : BaseViewModelTest() {
verify(exactly = 0) { authRepository.switchAccount(fido2CredentialRequest.userId) }
}
@Suppress("MaxLineLength")
@Test
fun `on ReceiveFirstIntent with FIDO 2 assertion request data should set the special circumstance to Fido2Assertion`() {
val viewModel = createViewModel()
val mockAssertionRequest = createMockFido2CredentialAssertionRequest(number = 1)
val fido2AssertionIntent = createMockFido2AssertionIntent(mockAssertionRequest)
every { intentManager.getShareDataFromIntent(fido2AssertionIntent) } returns null
viewModel.trySendAction(
MainAction.ReceiveFirstIntent(
intent = fido2AssertionIntent,
),
)
assertEquals(
SpecialCircumstance.Fido2Assertion(mockAssertionRequest),
specialCircumstanceManager.specialCircumstance,
)
}
@Suppress("MaxLineLength")
@Test
fun `on ReceiveNewIntent with share data should set the special circumstance to ShareNewSend`() {
@@ -695,3 +719,15 @@ private fun createMockFido2RegistrationIntent(
every { isMyVaultShortcut } returns false
every { isPasswordGeneratorShortcut } returns false
}
private fun createMockFido2AssertionIntent(
fido2CredentialAssertionRequest: Fido2CredentialAssertionRequest =
createMockFido2CredentialAssertionRequest(number = 1),
): Intent = mockk<Intent> {
every { getFido2AssertionRequestOrNull() } returns fido2CredentialAssertionRequest
every { getPasswordlessRequestDataIntentOrNull() } returns null
every { getAutofillSelectionDataOrNull() } returns null
every { getAutofillSaveItemOrNull() } returns null
every { isMyVaultShortcut } returns false
every { isPasswordGeneratorShortcut } returns false
}