From 61eb464ca13e23da0c71d805455c760d70ac6078 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Feb 2025 13:04:56 -0400 Subject: [PATCH 1/9] feat(authenticator): Add UI for passkey creation prompt --- .../authenticator/AuthenticatorStepState.kt | 34 +++++++ .../authenticator/enums/AuthenticatorStep.kt | 11 ++ .../states/PasskeyCreatedStateImpl.kt | 14 +++ .../states/PasskeyCreationPromptStateImpl.kt | 21 ++++ .../ui/authenticator/ui/PasskeyCreated.kt | 95 ++++++++++++++++++ .../authenticator/ui/PasskeyCreationPrompt.kt | 89 ++++++++++++++++ .../ui/authenticator/ui/TestTags.kt | 3 + .../res/drawable/authenticator_passkey.xml | 82 +++++++++++++++ .../res/drawable/authenticator_success.xml | 9 ++ authenticator/src/main/res/values/buttons.xml | 2 + authenticator/src/main/res/values/strings.xml | 6 ++ authenticator/src/main/res/values/titles.xml | 2 + .../ui/authenticator/testUtil/MockStates.kt | 22 ++++ .../ui/authenticator/ui/PasskeyCreatedTest.kt | 83 +++++++++++++++ .../ui/PasskeyCreationPromptTest.kt | 82 +++++++++++++++ .../ui/robots/PasskeyCreatedRobot.kt | 15 +++ .../ui/robots/PasskeyCreationPromptRobot.kt | 15 +++ ...skeyCreatedTest_with-multiple-passkeys.png | Bin 0 -> 45525 bytes .../PasskeyCreatedTest_with-one-passkey.png | Bin 0 -> 40479 bytes ...ationPromptTest_creating-passkey-state.png | Bin 0 -> 100828 bytes ...asskeyCreationPromptTest_default-state.png | Bin 0 -> 104577 bytes 21 files changed, 585 insertions(+) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt create mode 100644 authenticator/src/main/res/drawable/authenticator_passkey.xml create mode 100644 authenticator/src/main/res/drawable/authenticator_success.xml create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt create mode 100644 authenticator/src/test/screenshots/PasskeyCreatedTest_with-multiple-passkeys.png create mode 100644 authenticator/src/test/screenshots/PasskeyCreatedTest_with-one-passkey.png create mode 100644 authenticator/src/test/screenshots/PasskeyCreationPromptTest_creating-passkey-state.png create mode 100644 authenticator/src/test/screenshots/PasskeyCreationPromptTest_default-state.png diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index 483dc409..d8270d89 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -23,6 +23,7 @@ import com.amplifyframework.auth.AuthUser import com.amplifyframework.auth.AuthUserAttribute import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthSignOutResult +import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.MutableFormState @@ -460,3 +461,36 @@ interface VerifyUserConfirmState : AuthenticatorStepState { */ fun skip() } + +/** + * The user is being shown a prompt to create a passkey, encouraging them to use this as a way to sign in quickly + * via biometrics + */ +@Stable +interface PasskeyCreationPromptState : AuthenticatorStepState { + /** + * Create a passkey + */ + suspend fun createPasskey() + + /** + * Skip passkey creation and continue to the next step + */ + suspend fun skip() +} + +/** + * The user is being shown a confirmation screen after creating a passkey + */ +@Stable +interface PasskeyCreatedState : AuthenticatorStepState { + /** + * A list of existing passkeys for this user, including the one they've just created + */ + val passkeys: List + + /** + * Continue to the next step + */ + suspend fun done() +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt index 700efecf..e742fe2f 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt @@ -120,4 +120,15 @@ abstract class AuthenticatorStep internal constructor() { * The user has initiated verification of an account recovery mechanism (email, phone) and needs to provide a confirmation code. */ object VerifyUserConfirm : AuthenticatorStep() + + /** + * The user is being shown a prompt to create a passkey, encouraging them to use this as a way to sign in quickly + * via biometrics + */ + object PasskeyCreationPrompt : AuthenticatorStep() + + /** + * The user is being shown a confirmation screen after creating a passkey + */ + object PasskeyCreated: AuthenticatorStep() } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt new file mode 100644 index 00000000..9026fea3 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt @@ -0,0 +1,14 @@ +package com.amplifyframework.ui.authenticator.states + +import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.PasskeyCreatedState +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep + +internal class PasskeyCreatedStateImpl( + override val passkeys: List, + private val onDone: suspend () -> Unit +) : PasskeyCreatedState { + override val step: AuthenticatorStep = AuthenticatorStep.PasskeyCreated + + override suspend fun done() = onDone() +} \ No newline at end of file diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt new file mode 100644 index 00000000..43bc4ff8 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt @@ -0,0 +1,21 @@ +package com.amplifyframework.ui.authenticator.states + +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock + +class PasskeyCreationPromptStateImpl(private val onSubmit: suspend () -> Unit, private val onSkip: suspend () -> Unit) : + PasskeyCreationPromptState { + private val mutex = Mutex() + + override suspend fun createPasskey() { + mutex.withLock { + onSubmit() + } + } + + override suspend fun skip() = onSkip() + + override val step = AuthenticatorStep.PasskeyCreationPrompt +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt new file mode 100644 index 00000000..349f4409 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt @@ -0,0 +1,95 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Card +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.PasskeyCreatedState +import com.amplifyframework.ui.authenticator.R +import kotlinx.coroutines.launch + +@Composable +fun PasskeyCreated( + state: PasskeyCreatedState, + modifier: Modifier = Modifier, + headerContent: @Composable (PasskeyCreatedState) -> Unit = { + Column(verticalArrangement = Arrangement.spacedBy(8.dp)) { + Image( + painter = painterResource(R.drawable.authenticator_success), + contentDescription = null, + modifier = Modifier.size(32.dp) + ) + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_passkey_created)) + } + }, + footerContent: @Composable (PasskeyCreatedState) -> Unit = { } +) { + val scope = rememberCoroutineScope() + + Column( + modifier = modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) { + headerContent(state) + + if (state.passkeys.isNotEmpty()) { + Text( + stringResource(R.string.amplify_ui_authenticator_existing_passkeys), + style = MaterialTheme.typography.titleSmall + ) + Spacer(modifier = Modifier.size(8.dp)) + Card { + Column(modifier = Modifier.padding(16.dp).fillMaxWidth()) { + state.passkeys.forEachIndexed { index, passkey -> + Passkey(passkey) + if (index != state.passkeys.size - 1) { + HorizontalDivider(modifier = Modifier.padding(vertical = 16.dp)) + } + } + } + } + Spacer(modifier = Modifier.size(16.dp)) + } + + var enabled by remember { mutableStateOf(true) } + AuthenticatorButton( + onClick = { + scope.launch { + enabled = false + state.done() + enabled = true + } + }, + loading = !enabled, + label = stringResource(R.string.amplify_ui_authenticator_button_continue), + modifier = Modifier.testTag(TestTags.ContinueButton) + ) + + footerContent(state) + } +} + +@Composable +private fun Passkey(credential: AuthWebAuthnCredential) { + Text(credential.friendlyName ?: "Unknown Passkey") // todo String resource +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt new file mode 100644 index 00000000..4c349bff --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt @@ -0,0 +1,89 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState +import com.amplifyframework.ui.authenticator.R +import kotlinx.coroutines.launch + +private enum class Action { + CreatingPasskey, + Skipping +} + +@Composable +fun PasskeyPrompt( + state: PasskeyCreationPromptState, + modifier: Modifier = Modifier, + headerContent: @Composable (PasskeyCreationPromptState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_prompt_for_passkey)) + }, + footerContent: @Composable (PasskeyCreationPromptState) -> Unit = {} +) { + val scope = rememberCoroutineScope() + + var inProgress by remember { mutableStateOf(null) } + + Column( + modifier = modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) { + headerContent(state) + + Text(stringResource(R.string.amplify_ui_authenticator_passkey_prompt_content)) + + Spacer(modifier = Modifier.size(16.dp)) + + Image( + painter = painterResource(R.drawable.authenticator_passkey), + contentDescription = null, + modifier = Modifier.fillMaxWidth() + ) + + Spacer(modifier = Modifier.size(16.dp)) + + AuthenticatorButton( + onClick = { + scope.launch { + inProgress = Action.CreatingPasskey + state.createPasskey() + inProgress = null + } + }, + loading = inProgress == Action.CreatingPasskey, + label = stringResource(R.string.amplify_ui_authenticator_button_create_passkey), + modifier = Modifier.testTag(TestTags.CreatePasskeyButton) + ) + + OutlinedButton( + modifier = Modifier.fillMaxWidth().testTag(TestTags.SkipPasskeyButton), + onClick = { scope.launch { + inProgress = Action.Skipping + state.skip() + inProgress = null + } } + ) { + Text(stringResource(R.string.amplify_ui_authenticator_button_skip_passkey)) + } + + footerContent(state) + } +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt index a63665a5..a5e00e11 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt @@ -27,6 +27,9 @@ internal object TestTags { const val ForgotPasswordButton = "ForgotPasswordButton" const val CreateAccountButton = "CreateAccountButton" const val PasswordResetButton = "PasswordResetButton" + const val ContinueButton = "ContinueButton" + const val CreatePasskeyButton = "CreatePasskeyButton" + const val SkipPasskeyButton = "SkipPasskeyButton" const val AuthenticatorTitle = "AuthenticatorTitle" const val ShowPasswordIcon = "ShowPasswordIcon" diff --git a/authenticator/src/main/res/drawable/authenticator_passkey.xml b/authenticator/src/main/res/drawable/authenticator_passkey.xml new file mode 100644 index 00000000..91c21dee --- /dev/null +++ b/authenticator/src/main/res/drawable/authenticator_passkey.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/authenticator/src/main/res/drawable/authenticator_success.xml b/authenticator/src/main/res/drawable/authenticator_success.xml new file mode 100644 index 00000000..9a86c70a --- /dev/null +++ b/authenticator/src/main/res/drawable/authenticator_success.xml @@ -0,0 +1,9 @@ + + + diff --git a/authenticator/src/main/res/values/buttons.xml b/authenticator/src/main/res/values/buttons.xml index 2e654d2d..4e6a6cab 100644 --- a/authenticator/src/main/res/values/buttons.xml +++ b/authenticator/src/main/res/values/buttons.xml @@ -26,4 +26,6 @@ Send Code Skip Copy Key + Create a Passkey + Continue without a Passkey diff --git a/authenticator/src/main/res/values/strings.xml b/authenticator/src/main/res/values/strings.xml index 755ec635..07db7eed 100644 --- a/authenticator/src/main/res/values/strings.xml +++ b/authenticator/src/main/res/values/strings.xml @@ -36,4 +36,10 @@ Text Message (SMS) Authenticator App (TOTP) Email Message + + + Passkeys are WebAuthn credentials that validate your identity using biometric data like touch or facial recognition or device authentication like passwords or PINs, serving as a secure password replacement. + + + Existing Passkeys diff --git a/authenticator/src/main/res/values/titles.xml b/authenticator/src/main/res/values/titles.xml index e3db56de..213f47f1 100644 --- a/authenticator/src/main/res/values/titles.xml +++ b/authenticator/src/main/res/values/titles.xml @@ -27,4 +27,6 @@ Choose your preferred two-factor authentication method to set up Choose your two-factor authentication method Add Email for Two-Factor Authentication + Sign in faster with Passkey + Passkey created successfully! diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index b37831f5..15b1d02e 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -18,11 +18,14 @@ package com.amplifyframework.ui.authenticator.testUtil import com.amplifyframework.auth.AuthCodeDeliveryDetails import com.amplifyframework.auth.AuthUserAttributeKey import com.amplifyframework.auth.MFAType +import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.FormData import com.amplifyframework.ui.authenticator.mockAuthCodeDeliveryDetails +import com.amplifyframework.ui.authenticator.states.PasskeyCreatedStateImpl +import com.amplifyframework.ui.authenticator.states.PasskeyCreationPromptStateImpl import com.amplifyframework.ui.authenticator.states.PasswordResetConfirmStateImpl import com.amplifyframework.ui.authenticator.states.PasswordResetStateImpl import com.amplifyframework.ui.authenticator.states.SignInConfirmMfaStateImpl @@ -33,6 +36,7 @@ import com.amplifyframework.ui.authenticator.states.SignInContinueWithMfaSetupSe import com.amplifyframework.ui.authenticator.states.SignInContinueWithTotpSetupStateImpl import com.amplifyframework.ui.authenticator.states.SignInStateImpl import com.amplifyframework.ui.authenticator.states.SignUpStateImpl +import io.mockk.mockk internal fun mockSignInState() = SignInStateImpl( signInMethod = SignInMethod.Username, @@ -120,3 +124,21 @@ internal fun mockSignInContinueWithMfaSetupSelectionState( onSubmit = { }, onMoveTo = { } ) + +internal fun mockPasskeyCreatedState( + passkeys: List = emptyList(), + onDone: suspend () -> Unit = {} +) = PasskeyCreatedStateImpl( + passkeys = passkeys, + onDone = onDone +) + +internal fun mockPasskeyCreationPromptState( + creatingPasskey: Boolean = false, + onSubmit: suspend () -> Unit = {}, + onSkip: suspend () -> Unit = {} +) = PasskeyCreationPromptStateImpl( + onSubmit = onSubmit, + onSkip = onSkip, + creatingPasskey = creatingPasskey +) diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt new file mode 100644 index 00000000..ef8edc53 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt @@ -0,0 +1,83 @@ +package com.amplifyframework.ui.authenticator.ui + +import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest +import com.amplifyframework.ui.authenticator.testUtil.mockPasskeyCreatedState +import com.amplifyframework.ui.authenticator.ui.robots.passkeyCreated +import com.amplifyframework.ui.testing.ScreenshotTest +import io.mockk.coVerify +import io.mockk.every +import io.mockk.mockk +import org.junit.Test + +class PasskeyCreatedTest : AuthenticatorUiTest() { + + @Test + fun `title is Passkey created successfully`() { + setContent { + PasskeyCreated(state = mockPasskeyCreatedState()) + } + passkeyCreated { + hasTitle("Passkey created successfully!") + } + } + + @Test + fun `button is Continue`() { + setContent { + PasskeyCreated(state = mockPasskeyCreatedState()) + } + passkeyCreated { + hasContinueButton("Continue") + } + } + + @Test + fun `clicking continue calls done`() { + val onDone = mockk Unit>(relaxed = true) + setContent { + PasskeyCreated(state = mockPasskeyCreatedState(onDone = onDone)) + } + passkeyCreated { + clickContinueButton() + } + coVerify { onDone() } + } + + @Test + fun `displays existing passkeys when present`() { + val passkey = mockk { + every { friendlyName } returns "Test Passkey" + } + setContent { + PasskeyCreated(state = mockPasskeyCreatedState(passkeys = listOf(passkey))) + } + passkeyCreated { + hasPasskeyText("Existing Passkeys") + hasPasskeyText("Test Passkey") + } + } + + @Test + @ScreenshotTest + fun `with one passkey`() { + val passkey = mockk { + every { friendlyName } returns "Test Passkey" + } + setContent { + PasskeyCreated(state = mockPasskeyCreatedState(passkeys = listOf(passkey))) + } + } + + @Test + @ScreenshotTest + fun `with multiple passkeys`() { + val passkeys = listOf( + mockk { every { friendlyName} returns "Test Passkey 1" }, + mockk { every { friendlyName} returns "Test Passkey 2" } + ) + setContent { + PasskeyCreated(state = mockPasskeyCreatedState(passkeys = passkeys)) + } + } +} \ No newline at end of file diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt new file mode 100644 index 00000000..93d830aa --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt @@ -0,0 +1,82 @@ +package com.amplifyframework.ui.authenticator.ui + +import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest +import com.amplifyframework.ui.authenticator.testUtil.mockPasskeyCreationPromptState +import com.amplifyframework.ui.authenticator.ui.robots.passkeyCreationPrompt +import com.amplifyframework.ui.testing.ScreenshotTest +import io.mockk.coVerify +import io.mockk.mockk +import org.junit.Test + +class PasskeyCreationPromptTest : AuthenticatorUiTest() { + + @Test + fun `title is Sign in faster with Passkey`() { + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState()) + } + passkeyCreationPrompt { + hasTitle("Sign in faster with Passkey") + } + } + + @Test + fun `has create passkey button`() { + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState()) + } + passkeyCreationPrompt { + hasCreatePasskeyButton("Create a Passkey") + } + } + + @Test + fun `has skip passkey button`() { + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState()) + } + passkeyCreationPrompt { + hasSkipPasskeyButton("Continue without a Passkey") + } + } + + @Test + fun `clicking create passkey calls createPasskey`() { + val onSubmit = mockk Unit>(relaxed = true) + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState(onSubmit = onSubmit)) + } + passkeyCreationPrompt { + clickCreatePasskeyButton() + } + coVerify { onSubmit() } + } + + @Test + fun `clicking skip calls skip`() { + val onSkip = mockk Unit>(relaxed = true) + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState(onSkip = onSkip)) + } + passkeyCreationPrompt { + clickSkipPasskeyButton() + } + coVerify { onSkip() } + } + + @Test + @ScreenshotTest + fun `default state`() { + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState()) + } + } + + @Test + @ScreenshotTest + fun `creating passkey state`() { + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState(creatingPasskey = true)) + } + } +} \ No newline at end of file diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt new file mode 100644 index 00000000..a06b738c --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt @@ -0,0 +1,15 @@ +package com.amplifyframework.ui.authenticator.ui.robots + +import androidx.compose.ui.test.junit4.ComposeTestRule +import com.amplifyframework.ui.authenticator.ui.TestTags +import com.amplifyframework.ui.testing.ComposeTest + +fun ComposeTest.passkeyCreated(func: PasskeyCreatedRobot.() -> Unit) = PasskeyCreatedRobot(composeTestRule).func() + +class PasskeyCreatedRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { + fun hasContinueButton(expected: String) = assertExists(TestTags.ContinueButton, expected) + fun hasPasskeyText(text: String) = assertExists(text) + + fun clickContinueButton() = clickOnTag(TestTags.ContinueButton) + +} \ No newline at end of file diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt new file mode 100644 index 00000000..ccf72c31 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt @@ -0,0 +1,15 @@ +package com.amplifyframework.ui.authenticator.ui.robots + +import androidx.compose.ui.test.junit4.ComposeTestRule +import com.amplifyframework.ui.authenticator.ui.TestTags +import com.amplifyframework.ui.testing.ComposeTest + +fun ComposeTest.passkeyCreationPrompt(func: PasskeyCreationPromptRobot.() -> Unit) = PasskeyCreationPromptRobot(composeTestRule).func() + +class PasskeyCreationPromptRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { + fun hasCreatePasskeyButton(expected: String) = assertExists(TestTags.CreatePasskeyButton, expected) + fun hasSkipPasskeyButton(expected: String) = assertExists(TestTags.SkipPasskeyButton, expected) + fun clickCreatePasskeyButton() = clickOnTag(TestTags.CreatePasskeyButton) + fun clickSkipPasskeyButton() = clickOnTag(TestTags.SkipPasskeyButton) + fun hasPromptText(text: String) = assertExists(text) +} \ No newline at end of file diff --git a/authenticator/src/test/screenshots/PasskeyCreatedTest_with-multiple-passkeys.png b/authenticator/src/test/screenshots/PasskeyCreatedTest_with-multiple-passkeys.png new file mode 100644 index 0000000000000000000000000000000000000000..f13ce08501af6c1e449b964310dec6c96ee2f240 GIT binary patch literal 45525 zcmeFZcURM0w=Rsg2)2NTiX@a%J`L)wdR^@mTO)!A({vk$Z_a#IyyRt z>K(=VbaeD^I=W+~M;XAC!2Q3t=;)r&sVd%n@YG~>!1MQ+u7QQcoyhD5*|`sz?q*!8 z)pcHN56aO~7qQVSAdEt9U$(huAHE&vg!eggkN&KO(WfI}PI$r8UoEL4e+eZgKRcfK zS88xkX7XFVt*sAyVbVh#(j7NDq_JKTyNx-g{am(OH8fh=COfP)+w1pM3&146C;7Fn z#s0xp&2#jygKH&6!9>AF4#|R|eR)Q_NTPkA%TU4{qJ6s?YId0RCF&fWx*$5bD}w$I z+80fO{~d@Xi2sL-)Z;2G5WoAdH~o9gsWZ>}c%c4y+>rSzhJD>{zkXeB&(N=ja@DH* z2yLw1ze#s)AA0#$C@b&Dqv&vHe$vGA!?2HYCAFWKyR6m^HU+AJV=?c|K8rVZX=LQP z$MK8)jJ_o0o50oW_PyEbv~iwo9fe=yZAs!d8Rs0pDpwM)wmp+N-Ey5az%vVa*br

<3qgh4_X~KfWaVoy-ck)K9%e=UVvYB)pSUen^gw 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 N>sNKv^DbLI{BMW!j8^~v literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/PasskeyCreatedTest_with-one-passkey.png b/authenticator/src/test/screenshots/PasskeyCreatedTest_with-one-passkey.png new file mode 100644 index 0000000000000000000000000000000000000000..9f04397e19637bbea6a1d459e6dd00d724b62ef1 GIT binary patch literal 40479 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 literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/PasskeyCreationPromptTest_creating-passkey-state.png b/authenticator/src/test/screenshots/PasskeyCreationPromptTest_creating-passkey-state.png new file mode 100644 index 0000000000000000000000000000000000000000..40ac8fb8a2e8d22fc6265553f18a8f7216036e31 GIT binary patch literal 100828 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 D-T+*Z literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/PasskeyCreationPromptTest_default-state.png b/authenticator/src/test/screenshots/PasskeyCreationPromptTest_default-state.png new file mode 100644 index 0000000000000000000000000000000000000000..8ab6bbb6afac9bf6b661958fb24764b43751441a GIT binary patch literal 104577 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 Date: Tue, 9 Sep 2025 12:17:52 -0300 Subject: [PATCH 2/9] Add options to AuthenticatorButton --- .../authenticator/ui/AuthenticatorButton.kt | 43 +++++++++++++++++++ .../ui/authenticator/ui/AuthenticatorForm.kt | 28 ------------ 2 files changed, 43 insertions(+), 28 deletions(-) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt new file mode 100644 index 00000000..b6e7e231 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt @@ -0,0 +1,43 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import com.amplifyframework.ui.authenticator.R + +/** + * The button displayed in Authenticator. + * @param onClick The click handler for the button + * @param loading True to show the [loadingIndicator] content, false to show the button label. + * @param modifier The [Modifier] for the composable. + * @param label The label for the button + * @param loadingIndicator The content to show when loading. + */ +@Composable +internal fun AuthenticatorButton( + onClick: () -> Unit, + loading: Boolean, + modifier: Modifier = Modifier, + label: String = stringResource(R.string.amplify_ui_authenticator_button_submit), + loadingIndicator: @Composable () -> Unit = { LoadingIndicator() }, + enabled: Boolean = true, + colors: ButtonColors = ButtonDefaults.buttonColors() +) { + Button( + modifier = modifier.fillMaxWidth(), + onClick = onClick, + colors = colors, + enabled = enabled && !loading + ) { + if (loading) { + loadingIndicator() + } else { + Text(label) + } + } +} \ No newline at end of file diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt index 57b31c6a..0dfca34c 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt @@ -56,33 +56,5 @@ internal fun AuthenticatorForm( } Spacer(modifier = Modifier.size(16.dp)) } -} - -/** - * The button displayed in Authenticator. - * @param onClick The click handler for the button - * @param loading True to show the [loadingIndicator] content, false to show the button label. - * @param modifier The [Modifier] for the composable. - * @param label The label for the button - * @param loadingIndicator The content to show when loading. - */ -@Composable -internal fun AuthenticatorButton( - onClick: () -> Unit, - loading: Boolean, - modifier: Modifier = Modifier, - label: String = stringResource(R.string.amplify_ui_authenticator_button_submit), - loadingIndicator: @Composable () -> Unit = { LoadingIndicator() } -) { - Button( - modifier = modifier.fillMaxWidth(), - onClick = onClick, - enabled = !loading - ) { - if (loading) { - loadingIndicator() - } else { - Text(label) - } } } From b8dbfb946cec96b13c84b98015e2124ef08a4d5f Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Tue, 9 Sep 2025 16:45:09 -0300 Subject: [PATCH 3/9] Update buttons on passkey creation --- .../authenticator/ui/AuthenticatorButton.kt | 45 ++++++++++++------ .../ui/authenticator/ui/AuthenticatorForm.kt | 1 - .../authenticator/ui/PasskeyCreationPrompt.kt | 25 ++++++---- .../ui/authenticator/testUtil/MockStates.kt | 4 +- .../ui/PasskeyCreationPromptTest.kt | 8 ---- ...ationPromptTest_creating-passkey-state.png | Bin 100828 -> 0 bytes 6 files changed, 48 insertions(+), 35 deletions(-) delete mode 100644 authenticator/src/test/screenshots/PasskeyCreationPromptTest_creating-passkey-state.png diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt index b6e7e231..0eac5752 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt @@ -2,14 +2,18 @@ package com.amplifyframework.ui.authenticator.ui import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.Button -import androidx.compose.material3.ButtonColors -import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import com.amplifyframework.ui.authenticator.R +internal enum class ButtonStyle { + Primary, + Secondary +} + /** * The button displayed in Authenticator. * @param onClick The click handler for the button @@ -26,18 +30,31 @@ internal fun AuthenticatorButton( label: String = stringResource(R.string.amplify_ui_authenticator_button_submit), loadingIndicator: @Composable () -> Unit = { LoadingIndicator() }, enabled: Boolean = true, - colors: ButtonColors = ButtonDefaults.buttonColors() + style: ButtonStyle = ButtonStyle.Primary ) { - Button( - modifier = modifier.fillMaxWidth(), - onClick = onClick, - colors = colors, - enabled = enabled && !loading - ) { - if (loading) { - loadingIndicator() - } else { - Text(label) + if (style == ButtonStyle.Primary) { + Button( + modifier = modifier.fillMaxWidth(), + onClick = onClick, + enabled = enabled && !loading + ) { + if (loading) { + loadingIndicator() + } else { + Text(label) + } + } + } else { + OutlinedButton( + modifier = modifier.fillMaxWidth(), + onClick = onClick, + enabled = enabled && !loading + ) { + if (loading) { + loadingIndicator() + } else { + Text(label) + } } } -} \ No newline at end of file +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt index 0dfca34c..07d9257d 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt @@ -56,5 +56,4 @@ internal fun AuthenticatorForm( } Spacer(modifier = Modifier.size(16.dp)) } - } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt index 4c349bff..c2250200 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt @@ -6,6 +6,8 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -69,20 +71,25 @@ fun PasskeyPrompt( } }, loading = inProgress == Action.CreatingPasskey, + enabled = inProgress == null, label = stringResource(R.string.amplify_ui_authenticator_button_create_passkey), modifier = Modifier.testTag(TestTags.CreatePasskeyButton) ) - OutlinedButton( + AuthenticatorButton( modifier = Modifier.fillMaxWidth().testTag(TestTags.SkipPasskeyButton), - onClick = { scope.launch { - inProgress = Action.Skipping - state.skip() - inProgress = null - } } - ) { - Text(stringResource(R.string.amplify_ui_authenticator_button_skip_passkey)) - } + onClick = { + scope.launch { + inProgress = Action.Skipping + state.skip() + inProgress = null + } + }, + loading = inProgress == Action.Skipping, + enabled = inProgress == null, + label = stringResource(R.string.amplify_ui_authenticator_button_skip_passkey), + style = ButtonStyle.Secondary + ) footerContent(state) } diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index 15b1d02e..e9ca3278 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -134,11 +134,9 @@ internal fun mockPasskeyCreatedState( ) internal fun mockPasskeyCreationPromptState( - creatingPasskey: Boolean = false, onSubmit: suspend () -> Unit = {}, onSkip: suspend () -> Unit = {} ) = PasskeyCreationPromptStateImpl( onSubmit = onSubmit, - onSkip = onSkip, - creatingPasskey = creatingPasskey + onSkip = onSkip ) diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt index 93d830aa..53d88e2d 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt @@ -71,12 +71,4 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { PasskeyPrompt(state = mockPasskeyCreationPromptState()) } } - - @Test - @ScreenshotTest - fun `creating passkey state`() { - setContent { - PasskeyPrompt(state = mockPasskeyCreationPromptState(creatingPasskey = true)) - } - } } \ No newline at end of file diff --git a/authenticator/src/test/screenshots/PasskeyCreationPromptTest_creating-passkey-state.png b/authenticator/src/test/screenshots/PasskeyCreationPromptTest_creating-passkey-state.png deleted file mode 100644 index 40ac8fb8a2e8d22fc6265553f18a8f7216036e31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100828 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 D-T+*Z From 57d31dd7e19664e6de2ed94620eca3b24e1f50b5 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Tue, 9 Sep 2025 16:46:44 -0300 Subject: [PATCH 4/9] Lint --- .../authenticator/enums/AuthenticatorStep.kt | 2 +- .../states/PasskeyCreatedStateImpl.kt | 2 +- .../ui/authenticator/ui/AuthenticatorForm.kt | 9 +------ .../authenticator/ui/PasskeyCreationPrompt.kt | 3 --- .../ui/authenticator/testUtil/MockStates.kt | 26 ++++++++----------- .../ui/authenticator/ui/PasskeyCreatedTest.kt | 6 ++--- .../ui/robots/PasskeyCreatedRobot.kt | 3 +-- .../ui/robots/PasskeyCreationPromptRobot.kt | 5 ++-- 8 files changed, 21 insertions(+), 35 deletions(-) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt index e742fe2f..e6379b75 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt @@ -130,5 +130,5 @@ abstract class AuthenticatorStep internal constructor() { /** * The user is being shown a confirmation screen after creating a passkey */ - object PasskeyCreated: AuthenticatorStep() + object PasskeyCreated : AuthenticatorStep() } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt index 9026fea3..e7df13e2 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt @@ -11,4 +11,4 @@ internal class PasskeyCreatedStateImpl( override val step: AuthenticatorStep = AuthenticatorStep.PasskeyCreated override suspend fun done() = onDone() -} \ No newline at end of file +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt index 07d9257d..37c26d46 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt @@ -20,15 +20,11 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size -import androidx.compose.material3.Button -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import com.amplifyframework.ui.authenticator.R import com.amplifyframework.ui.authenticator.forms.MutableFormState /** @@ -37,10 +33,7 @@ import com.amplifyframework.ui.authenticator.forms.MutableFormState * @param modifier The Modifier for the composable. */ @Composable -internal fun AuthenticatorForm( - state: MutableFormState, - modifier: Modifier = Modifier -) { +internal fun AuthenticatorForm(state: MutableFormState, modifier: Modifier = Modifier) { Column( modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally, diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt index c2250200..bf4a23a9 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt @@ -6,9 +6,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material3.ButtonColors -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index e9ca3278..f5e812d4 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -36,7 +36,6 @@ import com.amplifyframework.ui.authenticator.states.SignInContinueWithMfaSetupSe import com.amplifyframework.ui.authenticator.states.SignInContinueWithTotpSetupStateImpl import com.amplifyframework.ui.authenticator.states.SignInStateImpl import com.amplifyframework.ui.authenticator.states.SignUpStateImpl -import io.mockk.mockk internal fun mockSignInState() = SignInStateImpl( signInMethod = SignInMethod.Username, @@ -109,13 +108,12 @@ internal fun mockSignInContinueWithTotpSetupState( onMoveTo = onMoveTo ) -internal fun mockSignInConfirmMfaState( - deliveryDetails: AuthCodeDeliveryDetails = mockAuthCodeDeliveryDetails() -) = SignInConfirmMfaStateImpl( - deliveryDetails = deliveryDetails, - onSubmit = { }, - onMoveTo = { } -) +internal fun mockSignInConfirmMfaState(deliveryDetails: AuthCodeDeliveryDetails = mockAuthCodeDeliveryDetails()) = + SignInConfirmMfaStateImpl( + deliveryDetails = deliveryDetails, + onSubmit = { }, + onMoveTo = { } + ) internal fun mockSignInContinueWithMfaSetupSelectionState( allowedMfaTypes: Set = setOf(MFAType.TOTP, MFAType.SMS, MFAType.EMAIL) @@ -133,10 +131,8 @@ internal fun mockPasskeyCreatedState( onDone = onDone ) -internal fun mockPasskeyCreationPromptState( - onSubmit: suspend () -> Unit = {}, - onSkip: suspend () -> Unit = {} -) = PasskeyCreationPromptStateImpl( - onSubmit = onSubmit, - onSkip = onSkip -) +internal fun mockPasskeyCreationPromptState(onSubmit: suspend () -> Unit = {}, onSkip: suspend () -> Unit = {}) = + PasskeyCreationPromptStateImpl( + onSubmit = onSubmit, + onSkip = onSkip + ) diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt index ef8edc53..bd91a9b9 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt @@ -73,11 +73,11 @@ class PasskeyCreatedTest : AuthenticatorUiTest() { @ScreenshotTest fun `with multiple passkeys`() { val passkeys = listOf( - mockk { every { friendlyName} returns "Test Passkey 1" }, - mockk { every { friendlyName} returns "Test Passkey 2" } + mockk { every { friendlyName } returns "Test Passkey 1" }, + mockk { every { friendlyName } returns "Test Passkey 2" } ) setContent { PasskeyCreated(state = mockPasskeyCreatedState(passkeys = passkeys)) } } -} \ No newline at end of file +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt index a06b738c..7c3985de 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt @@ -11,5 +11,4 @@ class PasskeyCreatedRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { fun hasPasskeyText(text: String) = assertExists(text) fun clickContinueButton() = clickOnTag(TestTags.ContinueButton) - -} \ No newline at end of file +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt index ccf72c31..8562606c 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt @@ -4,7 +4,8 @@ import androidx.compose.ui.test.junit4.ComposeTestRule import com.amplifyframework.ui.authenticator.ui.TestTags import com.amplifyframework.ui.testing.ComposeTest -fun ComposeTest.passkeyCreationPrompt(func: PasskeyCreationPromptRobot.() -> Unit) = PasskeyCreationPromptRobot(composeTestRule).func() +fun ComposeTest.passkeyCreationPrompt(func: PasskeyCreationPromptRobot.() -> Unit) = + PasskeyCreationPromptRobot(composeTestRule).func() class PasskeyCreationPromptRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { fun hasCreatePasskeyButton(expected: String) = assertExists(TestTags.CreatePasskeyButton, expected) @@ -12,4 +13,4 @@ class PasskeyCreationPromptRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) fun clickCreatePasskeyButton() = clickOnTag(TestTags.CreatePasskeyButton) fun clickSkipPasskeyButton() = clickOnTag(TestTags.SkipPasskeyButton) fun hasPromptText(text: String) = assertExists(text) -} \ No newline at end of file +} From a20ea68d411f40daad9c176aed0f0660aba0931c Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Tue, 9 Sep 2025 16:29:45 -0300 Subject: [PATCH 5/9] Add select factor and confirm password UIs --- .../authenticator/AuthenticatorStepState.kt | 63 ++++++++++ .../ui/authenticator/data/AuthFactor.kt | 53 +++++++++ .../authenticator/enums/AuthenticatorStep.kt | 10 ++ .../states/SignInConfirmPasswordStateImpl.kt | 31 +++++ .../states/SignInSelectFactorStateImpl.kt | 44 +++++++ .../ui/authenticator/ui/Authenticator.kt | 10 +- .../ui/authenticator/ui/CommonFooter.kt | 5 +- .../ui/authenticator/ui/DividerWithText.kt | 47 ++++++++ .../authenticator/ui/SignInConfirmPassword.kt | 60 ++++++++++ .../ui/authenticator/ui/SignInSelectFactor.kt | 109 ++++++++++++++++++ .../util/AuthenticatorUiConstants.kt | 7 ++ authenticator/src/main/res/values/buttons.xml | 5 + authenticator/src/main/res/values/titles.xml | 2 + 13 files changed, 443 insertions(+), 3 deletions(-) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectFactorStateImpl.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectFactor.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index d8270d89..4c024382 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -26,6 +26,7 @@ import com.amplifyframework.auth.result.AuthSignOutResult import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.forms.MutableFormState /** @@ -94,6 +95,68 @@ interface SignInState : AuthenticatorStepState { suspend fun signIn() } +/** + * The user has entered their username and must select the authentication factor they'd like to use to sign in + */ +@Stable +interface SignInSelectFactorState: AuthenticatorStepState { + /** + * The input form state holder for this step. + */ + val form: MutableFormState + + /** + * The username entered in the SignIn step + */ + val username: String + + /** + * The available types to select how to sign in. + */ + val availableAuthFactors: Set + + /** + * The factor the user selected and is currently being processed + */ + val selectedFactor: AuthFactor? + + /** + * Move the user to a different [AuthenticatorInitialStep]. + */ + fun moveTo(step: AuthenticatorInitialStep) + + /** + * Initiate a sign in with one of the available sign in types + */ + suspend fun select(authFactor: AuthFactor) +} + +/** + * A user has entered their username and must enter their password to continue signing in + */ +@Stable +interface SignInConfirmPasswordState : AuthenticatorStepState { + /** + * The input form state holder for this step. + */ + val form: MutableFormState + + /** + * The username entered in the SignIn step + */ + val username: String + + /** + * Move the user to a different [AuthenticatorInitialStep]. + */ + fun moveTo(step: AuthenticatorInitialStep) + + /** + * Initiate a sign in with the information entered into the [form]. + */ + suspend fun signIn() +} + /** * The user has completed the initial Sign In step, and needs to enter the confirmation code from an MFA * message to complete the sign in process. diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt new file mode 100644 index 00000000..2dbe9a1c --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt @@ -0,0 +1,53 @@ +/* + * Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.amplifyframework.ui.authenticator.enums + +import com.amplifyframework.auth.AuthFactorType + +sealed interface AuthFactor { + data class Password(val srp: Boolean = true) : AuthFactor + data object EmailOtp: AuthFactor + data object SmsOtp: AuthFactor + data object WebAuthn: AuthFactor +} + +internal fun AuthFactor.toAuthFactorType() = when (this) { + AuthFactor.EmailOtp -> AuthFactorType.EMAIL_OTP + AuthFactor.SmsOtp -> AuthFactorType.SMS_OTP + AuthFactor.WebAuthn -> AuthFactorType.WEB_AUTHN + is AuthFactor.Password -> if(srp) AuthFactorType.PASSWORD_SRP else AuthFactorType.PASSWORD +} + +internal fun AuthFactorType.toAuthFactor() = when (this) { + AuthFactorType.PASSWORD -> AuthFactor.Password(srp = false) + AuthFactorType.PASSWORD_SRP -> AuthFactor.Password(srp = true) + AuthFactorType.EMAIL_OTP -> AuthFactor.EmailOtp + AuthFactorType.SMS_OTP -> AuthFactor.SmsOtp + AuthFactorType.WEB_AUTHN -> AuthFactor.WebAuthn +} + +internal val AuthFactor.challengeResponse: String + get() = this.toAuthFactorType().challengeResponse + +internal fun Collection.toAuthFactors(): Set { + // If both SRP and password are available then use SRP to sign in + var factors = this + if (this.contains(AuthFactorType.PASSWORD) && this.contains(AuthFactorType.PASSWORD_SRP)) { + factors = this - AuthFactorType.PASSWORD // remove password + } + return factors.map { it.toAuthFactor() }.toSet() +} +internal fun Collection.containsPassword() = any { it is AuthFactor.Password } \ No newline at end of file diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt index e6379b75..f30c4924 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt @@ -46,6 +46,16 @@ abstract class AuthenticatorStep internal constructor() { */ object SignIn : AuthenticatorInitialStep() + /** + * The user has entered their username and must select the authentication factor they'd like to use to sign in + */ + object SignInSelectFactor: AuthenticatorStep() + + /** + * A user has entered their username and must enter their password to continue signing in + */ + object SignInConfirmPassword: AuthenticatorStep() + /** * The user has completed the initial Sign In step, and needs to enter the confirmation code from a custom * challenge to complete the sign in process. diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt new file mode 100644 index 00000000..2757b716 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt @@ -0,0 +1,31 @@ +package com.amplifyframework.ui.authenticator.states + +import com.amplifyframework.ui.authenticator.SignInConfirmNewPasswordState +import com.amplifyframework.ui.authenticator.SignInConfirmPasswordState +import com.amplifyframework.ui.authenticator.auth.PasswordCriteria +import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.forms.FieldKey +import com.amplifyframework.ui.authenticator.forms.FieldValidators +import com.amplifyframework.ui.authenticator.forms.MutableFormState + +internal class SignInConfirmPasswordStateImpl( + override val username: String, + private val onSubmit: suspend (password: String) -> Unit, + private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit +) : BaseStateImpl(), SignInConfirmPasswordState { + + init { + form.addFields { + password() + } + } + + override val step: AuthenticatorStep = AuthenticatorStep.SignInConfirmPassword + override fun moveTo(step: AuthenticatorInitialStep) = onMoveTo(step) + + override suspend fun signIn() = doSubmit { + val password = form.getTrimmed(FieldKey.Password)!! + onSubmit(password) + } +} \ No newline at end of file diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectFactorStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectFactorStateImpl.kt new file mode 100644 index 00000000..5baf1efc --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectFactorStateImpl.kt @@ -0,0 +1,44 @@ +package com.amplifyframework.ui.authenticator.states + +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import com.amplifyframework.ui.authenticator.SignInSelectFactorState +import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.enums.containsPassword + +internal class SignInSelectFactorStateImpl( + override val username: String, + override val availableAuthFactors: Set, + private val onSubmit: suspend (authFactor: AuthFactor) -> Unit, + private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit +) : BaseStateImpl(), + SignInSelectFactorState { + override val step: AuthenticatorStep = AuthenticatorStep.SignInSelectFactor + + override var selectedFactor: AuthFactor? by mutableStateOf(null) + + init { + if (availableAuthFactors.containsPassword()) { + form.addFields { password() } + } + } + + override fun moveTo(step: AuthenticatorInitialStep) = onMoveTo(step) + + override suspend fun select(authFactor: AuthFactor) { + // Clear errors + form.fields.values.forEach { it.state.error = null } + + selectedFactor = authFactor + form.enabled = false + onSubmit(authFactor) + form.enabled = true + selectedFactor = null + } +} + +internal fun SignInSelectFactorState.getPasswordFactor(): AuthFactor = + availableAuthFactors.first { it is AuthFactor.Password } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt index ef00f113..f219d252 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt @@ -41,16 +41,20 @@ import com.amplifyframework.ui.authenticator.AuthenticatorState import com.amplifyframework.ui.authenticator.AuthenticatorStepState import com.amplifyframework.ui.authenticator.ErrorState import com.amplifyframework.ui.authenticator.LoadingState +import com.amplifyframework.ui.authenticator.PasskeyCreatedState import com.amplifyframework.ui.authenticator.PasswordResetConfirmState import com.amplifyframework.ui.authenticator.PasswordResetState +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState import com.amplifyframework.ui.authenticator.SignInConfirmCustomState import com.amplifyframework.ui.authenticator.SignInConfirmMfaState import com.amplifyframework.ui.authenticator.SignInConfirmNewPasswordState +import com.amplifyframework.ui.authenticator.SignInConfirmPasswordState import com.amplifyframework.ui.authenticator.SignInConfirmTotpCodeState import com.amplifyframework.ui.authenticator.SignInContinueWithEmailSetupState import com.amplifyframework.ui.authenticator.SignInContinueWithMfaSelectionState import com.amplifyframework.ui.authenticator.SignInContinueWithMfaSetupSelectionState import com.amplifyframework.ui.authenticator.SignInContinueWithTotpSetupState +import com.amplifyframework.ui.authenticator.SignInSelectFactorState import com.amplifyframework.ui.authenticator.SignInState import com.amplifyframework.ui.authenticator.SignUpConfirmState import com.amplifyframework.ui.authenticator.SignUpState @@ -147,6 +151,7 @@ fun Authenticator( when (targetState) { is LoadingState -> loadingContent() is SignInState -> signInContent(targetState) + is SignInSelectFactorState -> SignInSelectFactor(targetState) is SignInConfirmMfaState -> signInConfirmMfaContent(targetState) is SignInConfirmCustomState -> signInConfirmCustomContent(targetState) is SignInConfirmNewPasswordState -> signInConfirmNewPasswordContent( @@ -167,7 +172,10 @@ fun Authenticator( is SignUpConfirmState -> signUpConfirmContent(targetState) is VerifyUserState -> verifyUserContent(targetState) is VerifyUserConfirmState -> verifyUserConfirmContent(targetState) - else -> Unit + is PasskeyCreationPromptState -> PasskeyPrompt(targetState) + is PasskeyCreatedState -> PasskeyCreated(targetState) + is SignInConfirmPasswordState -> SignInConfirmPassword(targetState) + else -> error("Unimplemented state") } footerContent() } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/CommonFooter.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/CommonFooter.kt index 381f4051..d4be20f8 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/CommonFooter.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/CommonFooter.kt @@ -14,7 +14,8 @@ import com.amplifyframework.ui.authenticator.R @Composable internal fun BackToSignInFooter( onClickBackToSignIn: () -> Unit, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, + label: String = stringResource(R.string.amplify_ui_authenticator_button_back_to_signin) ) { Box( modifier = modifier.fillMaxWidth(), @@ -24,7 +25,7 @@ internal fun BackToSignInFooter( modifier = Modifier.testTag(TestTags.BackToSignInButton), onClick = onClickBackToSignIn ) { - Text(stringResource(R.string.amplify_ui_authenticator_button_back_to_signin)) + Text(label) } } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt new file mode 100644 index 00000000..da06ff27 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt @@ -0,0 +1,47 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp + +@Composable +internal fun DividerWithText( + text: String, + modifier: Modifier = Modifier, + textStyle: TextStyle = MaterialTheme.typography.bodyMedium, + textColor: Color = MaterialTheme.colorScheme.onSurfaceVariant, + dividerColor: Color = MaterialTheme.colorScheme.outline, + thickness: Dp = 1.dp, + textPadding: Dp = 16.dp +) { + Row( + modifier = modifier, + verticalAlignment = Alignment.CenterVertically + ) { + HorizontalDivider( + modifier = Modifier.weight(1f), + color = dividerColor, + thickness = thickness + ) + Text( + text = text, + style = textStyle, + color = textColor, + modifier = Modifier.padding(horizontal = textPadding) + ) + HorizontalDivider( + modifier = Modifier.weight(1f), + color = dividerColor, + thickness = thickness + ) + } +} \ No newline at end of file diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt new file mode 100644 index 00000000..2df11ab9 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt @@ -0,0 +1,60 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.amplifyframework.ui.authenticator.R +import com.amplifyframework.ui.authenticator.SignInConfirmPasswordState +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.util.AuthenticatorUiConstants +import kotlinx.coroutines.launch + +@Composable +fun SignInConfirmPassword( + state: SignInConfirmPasswordState, + modifier: Modifier = Modifier, + headerContent: @Composable (state: SignInConfirmPasswordState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signin_confirm_password)) + }, + footerContent: @Composable (state: SignInConfirmPasswordState) -> Unit = { SignInConfirmPasswordFooter(it) } +) { + val scope = rememberCoroutineScope() + Column( + modifier = modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) { + headerContent(state) + OutlinedTextField( + modifier = Modifier.fillMaxWidth(), + value = state.username, + onValueChange = {}, + label = { Text("Username") }, // todo proper labelling + enabled = false + ) + Spacer(modifier = Modifier.size(AuthenticatorUiConstants.spaceBetweenFields)) + AuthenticatorForm( + state = state.form + ) + AuthenticatorButton( + onClick = { scope.launch { state.signIn() } }, + loading = !state.form.enabled + ) + footerContent(state) + } +} + +@Composable +fun SignInConfirmPasswordFooter(state: SignInConfirmPasswordState, modifier: Modifier = Modifier) = BackToSignInFooter( + modifier = modifier, + onClickBackToSignIn = { state.moveTo(AuthenticatorStep.SignIn) } +) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectFactor.kt new file mode 100644 index 00000000..9379b6ca --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectFactor.kt @@ -0,0 +1,109 @@ +package com.amplifyframework.ui.authenticator.ui + +import android.widget.Space +import androidx.compose.animation.core.animateValueAsState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.amplifyframework.ui.authenticator.R +import com.amplifyframework.ui.authenticator.SignInSelectFactorState +import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.enums.containsPassword +import com.amplifyframework.ui.authenticator.states.getPasswordFactor +import com.amplifyframework.ui.authenticator.util.AuthenticatorUiConstants +import kotlinx.coroutines.launch + +@Composable +fun SignInSelectFactor( + state: SignInSelectFactorState, + modifier: Modifier = Modifier, + headerContent: @Composable (SignInSelectFactorState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_select_factor)) + }, + footerContent: @Composable (SignInSelectFactorState) -> Unit = { SignInSelectFactorFooter(it) } +) { + val scope = rememberCoroutineScope() + Column( + modifier = modifier.fillMaxWidth().padding(horizontal = 16.dp) + ) { + headerContent(state) + + OutlinedTextField( + modifier = Modifier.fillMaxWidth(), + value = state.username, + onValueChange = {}, + label = { Text("Username") }, // todo proper labelling + enabled = false + ) + Spacer(modifier = Modifier.size(AuthenticatorUiConstants.spaceBetweenFields)) + AuthenticatorForm( + state = state.form, + bottomSpace = 0.dp + ) + + if (state.availableAuthFactors.containsPassword()) { + AuthenticatorButton( + onClick = { scope.launch { state.select(state.getPasswordFactor()) } }, + loading = state.selectedFactor == state.getPasswordFactor(), + enabled = state.selectedFactor == null, + label = stringResource(R.string.amplify_ui_authenticator_button_signin_password), + modifier = Modifier.testTag("SignInPasswordButton") + ) + + if (state.availableAuthFactors.size > 1) { + DividerWithText( + text = "or", // todo string resource + modifier = Modifier.fillMaxWidth() + ) + } + } + + if (state.availableAuthFactors.contains(AuthFactor.WebAuthn)) { + AuthenticatorButton( + onClick = { scope.launch { state.select(AuthFactor.WebAuthn) } }, + loading = state.selectedFactor == AuthFactor.WebAuthn, + enabled = state.selectedFactor == null, + label = stringResource(R.string.amplify_ui_authenticator_button_signin_passkey), + modifier = Modifier.testTag("SignInPasskeyButton") + ) + } + if (state.availableAuthFactors.contains(AuthFactor.EmailOtp)) { + AuthenticatorButton( + onClick = { scope.launch { state.select(AuthFactor.EmailOtp) } }, + loading = state.selectedFactor == AuthFactor.EmailOtp, + enabled = state.selectedFactor == null, + label = stringResource(R.string.amplify_ui_authenticator_button_signin_email), + modifier = Modifier.testTag("SignInEmailButton") + ) + } + if (state.availableAuthFactors.contains(AuthFactor.SmsOtp)) { + AuthenticatorButton( + onClick = { scope.launch { state.select(AuthFactor.SmsOtp) } }, + loading = state.selectedFactor == AuthFactor.SmsOtp, + enabled = state.selectedFactor == null, + label = stringResource(R.string.amplify_ui_authenticator_button_signin_sms), + modifier = Modifier.testTag("SignInSmsButton") + ) + } + footerContent(state) + } +} + +@Composable +fun SignInSelectFactorFooter(state: SignInSelectFactorState, modifier: Modifier = Modifier) = BackToSignInFooter( + modifier = modifier, + onClickBackToSignIn = { state.moveTo(AuthenticatorStep.SignIn) } +) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt new file mode 100644 index 00000000..ede3a4dd --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt @@ -0,0 +1,7 @@ +package com.amplifyframework.ui.authenticator.util + +import androidx.compose.ui.unit.dp + +internal object AuthenticatorUiConstants { + val spaceBetweenFields = 8.dp +} \ No newline at end of file diff --git a/authenticator/src/main/res/values/buttons.xml b/authenticator/src/main/res/values/buttons.xml index 4e6a6cab..4991c7e8 100644 --- a/authenticator/src/main/res/values/buttons.xml +++ b/authenticator/src/main/res/values/buttons.xml @@ -18,6 +18,10 @@ Submit Continue Sign In + Sign In with Password + Sign In with SMS + Sign In with Email + Sign In with Passkey Change Password Create Account Forgot Password? @@ -26,6 +30,7 @@ Send Code Skip Copy Key + Start Over Create a Passkey Continue without a Passkey diff --git a/authenticator/src/main/res/values/titles.xml b/authenticator/src/main/res/values/titles.xml index 213f47f1..5ac623bb 100644 --- a/authenticator/src/main/res/values/titles.xml +++ b/authenticator/src/main/res/values/titles.xml @@ -16,6 +16,8 @@ Sign In + Choose how to sign in + Enter your password Verify your sign-in Change your password to sign in Create Account From ba45003b7ec9745bc01af441c516cf7c8c04583b Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Wed, 24 Sep 2025 13:07:57 -0300 Subject: [PATCH 6/9] Rename SignInSelectAuthFactor and fix hardcoded strings --- .../authenticator/AuthenticatorStepState.kt | 2 +- .../authenticator/enums/AuthenticatorStep.kt | 2 +- .../states/SignInConfirmPasswordStateImpl.kt | 7 +- ....kt => SignInSelectAuthFactorStateImpl.kt} | 15 +- .../authenticator/strings/StringResolver.kt | 175 +++++++++--------- .../ui/authenticator/ui/Authenticator.kt | 4 +- .../authenticator/ui/SignInConfirmPassword.kt | 18 +- ...ectFactor.kt => SignInSelectAuthFactor.kt} | 36 ++-- .../ui/authenticator/ui/TestTags.kt | 5 + authenticator/src/main/res/values/strings.xml | 3 + 10 files changed, 146 insertions(+), 121 deletions(-) rename authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/{SignInSelectFactorStateImpl.kt => SignInSelectAuthFactorStateImpl.kt} (74%) rename authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/{SignInSelectFactor.kt => SignInSelectAuthFactor.kt} (75%) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index 4c024382..3c354250 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -99,7 +99,7 @@ interface SignInState : AuthenticatorStepState { * The user has entered their username and must select the authentication factor they'd like to use to sign in */ @Stable -interface SignInSelectFactorState: AuthenticatorStepState { +interface SignInSelectAuthFactorState: AuthenticatorStepState { /** * The input form state holder for this step. */ diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt index f30c4924..5d513efe 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt @@ -49,7 +49,7 @@ abstract class AuthenticatorStep internal constructor() { /** * The user has entered their username and must select the authentication factor they'd like to use to sign in */ - object SignInSelectFactor: AuthenticatorStep() + object SignInSelectAuthFactor: AuthenticatorStep() /** * A user has entered their username and must enter their password to continue signing in diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt index 2757b716..cf8e21f3 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt @@ -3,6 +3,7 @@ package com.amplifyframework.ui.authenticator.states import com.amplifyframework.ui.authenticator.SignInConfirmNewPasswordState import com.amplifyframework.ui.authenticator.SignInConfirmPasswordState import com.amplifyframework.ui.authenticator.auth.PasswordCriteria +import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.FieldKey @@ -11,6 +12,7 @@ import com.amplifyframework.ui.authenticator.forms.MutableFormState internal class SignInConfirmPasswordStateImpl( override val username: String, + val signInMethod: SignInMethod, private val onSubmit: suspend (password: String) -> Unit, private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit ) : BaseStateImpl(), SignInConfirmPasswordState { @@ -28,4 +30,7 @@ internal class SignInConfirmPasswordStateImpl( val password = form.getTrimmed(FieldKey.Password)!! onSubmit(password) } -} \ No newline at end of file +} + +internal val SignInConfirmPasswordState.signInMethod: SignInMethod + get() = (this as SignInConfirmPasswordStateImpl).signInMethod \ No newline at end of file diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectFactorStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt similarity index 74% rename from authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectFactorStateImpl.kt rename to authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt index 5baf1efc..d0601eb7 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectFactorStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt @@ -3,20 +3,22 @@ package com.amplifyframework.ui.authenticator.states import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import com.amplifyframework.ui.authenticator.SignInSelectFactorState +import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState +import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.enums.containsPassword -internal class SignInSelectFactorStateImpl( +internal class SignInSelectAuthFactorStateImpl( override val username: String, + val signInMethod: SignInMethod, override val availableAuthFactors: Set, private val onSubmit: suspend (authFactor: AuthFactor) -> Unit, private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit ) : BaseStateImpl(), - SignInSelectFactorState { - override val step: AuthenticatorStep = AuthenticatorStep.SignInSelectFactor + SignInSelectAuthFactorState { + override val step: AuthenticatorStep = AuthenticatorStep.SignInSelectAuthFactor override var selectedFactor: AuthFactor? by mutableStateOf(null) @@ -40,5 +42,8 @@ internal class SignInSelectFactorStateImpl( } } -internal fun SignInSelectFactorState.getPasswordFactor(): AuthFactor = +internal fun SignInSelectAuthFactorState.getPasswordFactor(): AuthFactor = availableAuthFactors.first { it is AuthFactor.Password } + +internal val SignInSelectAuthFactorState.signInMethod: SignInMethod + get() = (this as SignInSelectAuthFactorStateImpl).signInMethod \ No newline at end of file diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt index 2626cc9b..8964b46e 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt @@ -32,7 +32,7 @@ internal open class StringResolver { @Composable @ReadOnlyComposable open fun label(config: FieldConfig): String { - var label = title(config) + var label = fieldName(config) if (!config.required) { label = stringResource(R.string.amplify_ui_authenticator_field_optional, label) } @@ -41,118 +41,116 @@ internal open class StringResolver { @Composable @ReadOnlyComposable - private fun title(config: FieldConfig): String { - return config.label ?: when (config.key) { - FieldKey.ConfirmPassword -> stringResource(R.string.amplify_ui_authenticator_field_label_password_confirm) - FieldKey.ConfirmationCode -> stringResource(R.string.amplify_ui_authenticator_field_label_confirmation_code) - FieldKey.Password -> stringResource(R.string.amplify_ui_authenticator_field_label_password) - FieldKey.PhoneNumber -> stringResource(R.string.amplify_ui_authenticator_field_label_phone_number) - FieldKey.Email -> stringResource(R.string.amplify_ui_authenticator_field_label_email) - FieldKey.Username -> stringResource(R.string.amplify_ui_authenticator_field_label_username) - FieldKey.Birthdate -> stringResource(R.string.amplify_ui_authenticator_field_label_birthdate) - FieldKey.FamilyName -> stringResource(R.string.amplify_ui_authenticator_field_label_family_name) - FieldKey.GivenName -> stringResource(R.string.amplify_ui_authenticator_field_label_given_name) - FieldKey.MiddleName -> stringResource(R.string.amplify_ui_authenticator_field_label_middle_name) - FieldKey.Name -> stringResource(R.string.amplify_ui_authenticator_field_label_name) - FieldKey.Website -> stringResource(R.string.amplify_ui_authenticator_field_label_website) - FieldKey.PhoneNumber -> stringResource(R.string.amplify_ui_authenticator_field_label_phone_number) - FieldKey.Nickname -> stringResource(R.string.amplify_ui_authenticator_field_label_nickname) - FieldKey.PreferredUsername -> - stringResource(R.string.amplify_ui_authenticator_field_label_preferred_username) - FieldKey.Profile -> stringResource(R.string.amplify_ui_authenticator_field_label_profile) - FieldKey.VerificationAttribute -> - stringResource(R.string.amplify_ui_authenticator_field_label_verification_attribute) - else -> "" - } + private fun fieldName(config: FieldConfig): String = config.label ?: fieldName(config.key) + + @Composable + @ReadOnlyComposable + fun fieldName(key: FieldKey): String = when (key) { + FieldKey.ConfirmPassword -> stringResource(R.string.amplify_ui_authenticator_field_label_password_confirm) + FieldKey.ConfirmationCode -> stringResource(R.string.amplify_ui_authenticator_field_label_confirmation_code) + FieldKey.Password -> stringResource(R.string.amplify_ui_authenticator_field_label_password) + FieldKey.PhoneNumber -> stringResource(R.string.amplify_ui_authenticator_field_label_phone_number) + FieldKey.Email -> stringResource(R.string.amplify_ui_authenticator_field_label_email) + FieldKey.Username -> stringResource(R.string.amplify_ui_authenticator_field_label_username) + FieldKey.Birthdate -> stringResource(R.string.amplify_ui_authenticator_field_label_birthdate) + FieldKey.FamilyName -> stringResource(R.string.amplify_ui_authenticator_field_label_family_name) + FieldKey.GivenName -> stringResource(R.string.amplify_ui_authenticator_field_label_given_name) + FieldKey.MiddleName -> stringResource(R.string.amplify_ui_authenticator_field_label_middle_name) + FieldKey.Name -> stringResource(R.string.amplify_ui_authenticator_field_label_name) + FieldKey.Website -> stringResource(R.string.amplify_ui_authenticator_field_label_website) + FieldKey.PhoneNumber -> stringResource(R.string.amplify_ui_authenticator_field_label_phone_number) + FieldKey.Nickname -> stringResource(R.string.amplify_ui_authenticator_field_label_nickname) + FieldKey.PreferredUsername -> + stringResource(R.string.amplify_ui_authenticator_field_label_preferred_username) + FieldKey.Profile -> stringResource(R.string.amplify_ui_authenticator_field_label_profile) + FieldKey.VerificationAttribute -> + stringResource(R.string.amplify_ui_authenticator_field_label_verification_attribute) + else -> "" } @Composable @ReadOnlyComposable - open fun hint(config: FieldConfig): String? { - return config.hint ?: when { - config.key == FieldKey.ConfirmPassword -> - stringResource(R.string.amplify_ui_authenticator_field_hint_password_confirm) - config is FieldConfig.Date -> "yyyy-mm-dd" - else -> { - val label = label(config) - stringResource(R.string.amplify_ui_authenticator_field_hint, label) - } + open fun hint(config: FieldConfig): String? = config.hint ?: when { + config.key == FieldKey.ConfirmPassword -> + stringResource(R.string.amplify_ui_authenticator_field_hint_password_confirm) + config is FieldConfig.Date -> "yyyy-mm-dd" + else -> { + val label = label(config) + stringResource(R.string.amplify_ui_authenticator_field_hint, label) } } @OptIn(ExperimentalComposeUiApi::class) @Composable @ReadOnlyComposable - open fun error(config: FieldConfig, error: FieldError): String { - return when (error) { - is FieldError.InvalidPassword -> { - var errorText = stringResource(R.string.amplify_ui_authenticator_field_password_requirements) - error.errors.forEach { - errorText += "\n" + when (it) { - is PasswordError.InvalidPasswordLength -> - pluralStringResource( - id = R.plurals.amplify_ui_authenticator_field_password_too_short, - count = it.minimumLength, - it.minimumLength - ) - PasswordError.InvalidPasswordMissingSpecial -> - stringResource(R.string.amplify_ui_authenticator_field_password_missing_special) - PasswordError.InvalidPasswordMissingNumber -> - stringResource(R.string.amplify_ui_authenticator_field_password_missing_number) - PasswordError.InvalidPasswordMissingUpper -> - stringResource(R.string.amplify_ui_authenticator_field_password_missing_upper) - PasswordError.InvalidPasswordMissingLower -> - stringResource(R.string.amplify_ui_authenticator_field_password_missing_lower) - else -> "" - } + open fun error(config: FieldConfig, error: FieldError): String = when (error) { + is FieldError.InvalidPassword -> { + var errorText = stringResource(R.string.amplify_ui_authenticator_field_password_requirements) + error.errors.forEach { + errorText += "\n" + when (it) { + is PasswordError.InvalidPasswordLength -> + pluralStringResource( + id = R.plurals.amplify_ui_authenticator_field_password_too_short, + count = it.minimumLength, + it.minimumLength + ) + PasswordError.InvalidPasswordMissingSpecial -> + stringResource(R.string.amplify_ui_authenticator_field_password_missing_special) + PasswordError.InvalidPasswordMissingNumber -> + stringResource(R.string.amplify_ui_authenticator_field_password_missing_number) + PasswordError.InvalidPasswordMissingUpper -> + stringResource(R.string.amplify_ui_authenticator_field_password_missing_upper) + PasswordError.InvalidPasswordMissingLower -> + stringResource(R.string.amplify_ui_authenticator_field_password_missing_lower) + else -> "" } - errorText - } - FieldError.PasswordsDoNotMatch -> - stringResource(R.string.amplify_ui_authenticator_field_warn_unmatched_password) - FieldError.MissingRequired -> { - val label = title(config) - stringResource(R.string.amplify_ui_authenticator_field_warn_empty, label) - } - FieldError.InvalidFormat -> { - val label = title(config) - stringResource(R.string.amplify_ui_authenticator_field_warn_invalid_format, label) - } - FieldError.FieldValueExists -> { - val label = title(config) - stringResource(R.string.amplify_ui_authenticator_field_warn_existing, label) - } - FieldError.ConfirmationCodeIncorrect -> { - stringResource(R.string.amplify_ui_authenticator_field_warn_incorrect_code) - } - is FieldError.Custom -> error.message - FieldError.NotFound -> { - val label = title(config) - stringResource(R.string.amplify_ui_authenticator_field_warn_not_found, label) } - else -> "" + errorText } + FieldError.PasswordsDoNotMatch -> + stringResource(R.string.amplify_ui_authenticator_field_warn_unmatched_password) + FieldError.MissingRequired -> { + val label = fieldName(config) + stringResource(R.string.amplify_ui_authenticator_field_warn_empty, label) + } + FieldError.InvalidFormat -> { + val label = fieldName(config) + stringResource(R.string.amplify_ui_authenticator_field_warn_invalid_format, label) + } + FieldError.FieldValueExists -> { + val label = fieldName(config) + stringResource(R.string.amplify_ui_authenticator_field_warn_existing, label) + } + FieldError.ConfirmationCodeIncorrect -> { + stringResource(R.string.amplify_ui_authenticator_field_warn_incorrect_code) + } + is FieldError.Custom -> error.message + FieldError.NotFound -> { + val label = fieldName(config) + stringResource(R.string.amplify_ui_authenticator_field_warn_not_found, label) + } + else -> "" } @Suppress("UNUSED_EXPRESSION") @Composable @ReadOnlyComposable - open fun error(error: AuthException): String { - return when (error) { - else -> stringResource(R.string.amplify_ui_authenticator_error_unknown) - } + open fun error(error: AuthException): String = when (error) { + else -> stringResource(R.string.amplify_ui_authenticator_error_unknown) } companion object { @Composable @ReadOnlyComposable - fun label(config: FieldConfig) = - LocalStringResolver.current.label(config = config) + fun label(config: FieldConfig) = LocalStringResolver.current.label(config = config) + + @Composable + @ReadOnlyComposable + fun fieldName(key: FieldKey) = LocalStringResolver.current.fieldName(key = key) @Composable @ReadOnlyComposable - fun hint(config: FieldConfig) = - LocalStringResolver.current.hint(config = config) + fun hint(config: FieldConfig) = LocalStringResolver.current.hint(config = config) @Composable @ReadOnlyComposable @@ -161,7 +159,6 @@ internal open class StringResolver { @Composable @ReadOnlyComposable - fun error(error: AuthException) = - LocalStringResolver.current.error(error = error) + fun error(error: AuthException) = LocalStringResolver.current.error(error = error) } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt index f219d252..1a44fa4f 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt @@ -54,7 +54,7 @@ import com.amplifyframework.ui.authenticator.SignInContinueWithEmailSetupState import com.amplifyframework.ui.authenticator.SignInContinueWithMfaSelectionState import com.amplifyframework.ui.authenticator.SignInContinueWithMfaSetupSelectionState import com.amplifyframework.ui.authenticator.SignInContinueWithTotpSetupState -import com.amplifyframework.ui.authenticator.SignInSelectFactorState +import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState import com.amplifyframework.ui.authenticator.SignInState import com.amplifyframework.ui.authenticator.SignUpConfirmState import com.amplifyframework.ui.authenticator.SignUpState @@ -151,7 +151,7 @@ fun Authenticator( when (targetState) { is LoadingState -> loadingContent() is SignInState -> signInContent(targetState) - is SignInSelectFactorState -> SignInSelectFactor(targetState) + is SignInSelectAuthFactorState -> SignInSelectAuthFactor(targetState) is SignInConfirmMfaState -> signInConfirmMfaContent(targetState) is SignInConfirmCustomState -> signInConfirmCustomContent(targetState) is SignInConfirmNewPasswordState -> signInConfirmNewPasswordContent( diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt index 2df11ab9..252a6f9f 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt @@ -10,11 +10,16 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.amplifyframework.ui.authenticator.R import com.amplifyframework.ui.authenticator.SignInConfirmPasswordState +import com.amplifyframework.ui.authenticator.auth.toFieldKey import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.forms.FieldKey +import com.amplifyframework.ui.authenticator.states.signInMethod +import com.amplifyframework.ui.authenticator.strings.StringResolver import com.amplifyframework.ui.authenticator.util.AuthenticatorUiConstants import kotlinx.coroutines.launch @@ -34,12 +39,15 @@ fun SignInConfirmPassword( .padding(horizontal = 16.dp) ) { headerContent(state) + val usernameLabel = StringResolver.fieldName(state.signInMethod.toFieldKey()) OutlinedTextField( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .testTag(FieldKey.Username.testTag), value = state.username, onValueChange = {}, - label = { Text("Username") }, // todo proper labelling - enabled = false + label = { Text(usernameLabel) }, + readOnly = true ) Spacer(modifier = Modifier.size(AuthenticatorUiConstants.spaceBetweenFields)) AuthenticatorForm( @@ -47,7 +55,9 @@ fun SignInConfirmPassword( ) AuthenticatorButton( onClick = { scope.launch { state.signIn() } }, - loading = !state.form.enabled + loading = !state.form.enabled, + label = stringResource(R.string.amplify_ui_authenticator_button_signin), + modifier = Modifier.testTag(TestTags.SignInButton) ) footerContent(state) } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt similarity index 75% rename from authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectFactor.kt rename to authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt index 9379b6ca..bc4681d2 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectFactor.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt @@ -1,8 +1,5 @@ package com.amplifyframework.ui.authenticator.ui -import android.widget.Space -import androidx.compose.animation.core.animateValueAsState -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -12,28 +9,31 @@ import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.amplifyframework.ui.authenticator.R -import com.amplifyframework.ui.authenticator.SignInSelectFactorState +import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState +import com.amplifyframework.ui.authenticator.auth.toFieldKey import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.enums.containsPassword +import com.amplifyframework.ui.authenticator.locals.LocalStringResolver import com.amplifyframework.ui.authenticator.states.getPasswordFactor +import com.amplifyframework.ui.authenticator.states.signInMethod +import com.amplifyframework.ui.authenticator.strings.StringResolver import com.amplifyframework.ui.authenticator.util.AuthenticatorUiConstants import kotlinx.coroutines.launch @Composable -fun SignInSelectFactor( - state: SignInSelectFactorState, +fun SignInSelectAuthFactor( + state: SignInSelectAuthFactorState, modifier: Modifier = Modifier, - headerContent: @Composable (SignInSelectFactorState) -> Unit = { + headerContent: @Composable (SignInSelectAuthFactorState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_select_factor)) }, - footerContent: @Composable (SignInSelectFactorState) -> Unit = { SignInSelectFactorFooter(it) } + footerContent: @Composable (SignInSelectAuthFactorState) -> Unit = { SignInSelectFactorFooter(it) } ) { val scope = rememberCoroutineScope() Column( @@ -41,17 +41,17 @@ fun SignInSelectFactor( ) { headerContent(state) + val usernameLabel = StringResolver.fieldName(state.signInMethod.toFieldKey()) OutlinedTextField( modifier = Modifier.fillMaxWidth(), value = state.username, onValueChange = {}, - label = { Text("Username") }, // todo proper labelling + label = { Text(usernameLabel) }, enabled = false ) Spacer(modifier = Modifier.size(AuthenticatorUiConstants.spaceBetweenFields)) AuthenticatorForm( - state = state.form, - bottomSpace = 0.dp + state = state.form ) if (state.availableAuthFactors.containsPassword()) { @@ -60,12 +60,12 @@ fun SignInSelectFactor( loading = state.selectedFactor == state.getPasswordFactor(), enabled = state.selectedFactor == null, label = stringResource(R.string.amplify_ui_authenticator_button_signin_password), - modifier = Modifier.testTag("SignInPasswordButton") + modifier = Modifier.testTag(TestTags.AuthFactorPassword) ) if (state.availableAuthFactors.size > 1) { DividerWithText( - text = "or", // todo string resource + text = stringResource(R.string.amplify_ui_authenticator_or), modifier = Modifier.fillMaxWidth() ) } @@ -77,7 +77,7 @@ fun SignInSelectFactor( loading = state.selectedFactor == AuthFactor.WebAuthn, enabled = state.selectedFactor == null, label = stringResource(R.string.amplify_ui_authenticator_button_signin_passkey), - modifier = Modifier.testTag("SignInPasskeyButton") + modifier = Modifier.testTag(TestTags.AuthFactorPasskey) ) } if (state.availableAuthFactors.contains(AuthFactor.EmailOtp)) { @@ -86,7 +86,7 @@ fun SignInSelectFactor( loading = state.selectedFactor == AuthFactor.EmailOtp, enabled = state.selectedFactor == null, label = stringResource(R.string.amplify_ui_authenticator_button_signin_email), - modifier = Modifier.testTag("SignInEmailButton") + modifier = Modifier.testTag(TestTags.AuthFactorEmail) ) } if (state.availableAuthFactors.contains(AuthFactor.SmsOtp)) { @@ -95,7 +95,7 @@ fun SignInSelectFactor( loading = state.selectedFactor == AuthFactor.SmsOtp, enabled = state.selectedFactor == null, label = stringResource(R.string.amplify_ui_authenticator_button_signin_sms), - modifier = Modifier.testTag("SignInSmsButton") + modifier = Modifier.testTag(TestTags.AuthFactorSms) ) } footerContent(state) @@ -103,7 +103,7 @@ fun SignInSelectFactor( } @Composable -fun SignInSelectFactorFooter(state: SignInSelectFactorState, modifier: Modifier = Modifier) = BackToSignInFooter( +fun SignInSelectFactorFooter(state: SignInSelectAuthFactorState, modifier: Modifier = Modifier) = BackToSignInFooter( modifier = modifier, onClickBackToSignIn = { state.moveTo(AuthenticatorStep.SignIn) } ) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt index a5e00e11..e85107fd 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt @@ -32,6 +32,11 @@ internal object TestTags { const val SkipPasskeyButton = "SkipPasskeyButton" const val AuthenticatorTitle = "AuthenticatorTitle" + const val AuthFactorPassword = "AuthFactorPassword" + const val AuthFactorSms = "AuthFactorSms" + const val AuthFactorEmail = "AuthFactorEmail" + const val AuthFactorPasskey = "AuthFactorPasskey" + const val ShowPasswordIcon = "ShowPasswordIcon" } diff --git a/authenticator/src/main/res/values/strings.xml b/authenticator/src/main/res/values/strings.xml index 07db7eed..0924a7f8 100644 --- a/authenticator/src/main/res/values/strings.xml +++ b/authenticator/src/main/res/values/strings.xml @@ -42,4 +42,7 @@ Existing Passkeys + + + or From 2ac5a51e01495734e8c99bdf135a936e964a9a2a Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Wed, 24 Sep 2025 15:39:01 -0300 Subject: [PATCH 7/9] Add confirm password tests --- .../ui/authenticator/testUtil/MockStates.kt | 13 ++ .../ui/SignInConfirmPasswordTest.kt | 119 ++++++++++++++++++ .../ui/robots/SignInConfirmPasswordRobot.kt | 40 ++++++ ...ignInConfirmPasswordTest_default-state.png | Bin 0 -> 43448 bytes ...InConfirmPasswordTest_password-visible.png | Bin 0 -> 48469 bytes ...asswordTest_ready-to-submit-with-email.png | Bin 0 -> 44736 bytes ...dTest_ready-to-submit-with-phonenumber.png | Bin 0 -> 45521 bytes ...nInConfirmPasswordTest_ready-to-submit.png | Bin 0 -> 43515 bytes 8 files changed, 172 insertions(+) create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_default-state.png create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_password-visible.png create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit-with-email.png create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit-with-phonenumber.png create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit.png diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index f5e812d4..93e886f7 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -34,6 +34,7 @@ import com.amplifyframework.ui.authenticator.states.SignInContinueWithEmailSetup import com.amplifyframework.ui.authenticator.states.SignInContinueWithMfaSelectionStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithMfaSetupSelectionStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithTotpSetupStateImpl +import com.amplifyframework.ui.authenticator.states.SignInConfirmPasswordStateImpl import com.amplifyframework.ui.authenticator.states.SignInStateImpl import com.amplifyframework.ui.authenticator.states.SignUpStateImpl @@ -136,3 +137,15 @@ internal fun mockPasskeyCreationPromptState(onSubmit: suspend () -> Unit = {}, o onSubmit = onSubmit, onSkip = onSkip ) + +internal fun mockSignInConfirmPasswordState( + username: String = "testuser", + signInMethod: SignInMethod = SignInMethod.Username, + onSubmit: suspend (String) -> Unit = { }, + onMoveTo: (AuthenticatorInitialStep) -> Unit = { } +) = SignInConfirmPasswordStateImpl( + username = username, + signInMethod = signInMethod, + onSubmit = onSubmit, + onMoveTo = onMoveTo +) diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt new file mode 100644 index 00000000..b6d2431b --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt @@ -0,0 +1,119 @@ +/* + * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.amplifyframework.ui.authenticator.ui + +import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest +import com.amplifyframework.ui.authenticator.testUtil.mockSignInConfirmPasswordState +import com.amplifyframework.ui.authenticator.ui.robots.signInConfirmPassword +import com.amplifyframework.ui.testing.ScreenshotTest +import org.junit.Test + +class SignInConfirmPasswordTest : AuthenticatorUiTest() { + + @Test + fun `title is Enter your password`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + hasTitle("Enter your password") + } + } + + @Test + fun `button is Sign In`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + hasSubmitButton("Sign In") + } + } + + @Test + fun `username field is populated with username`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState(username = "testuser")) + } + signInConfirmPassword { + hasUsername("testuser") + } + } + + @Test + fun `has back to sign in footer`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + hasBackToSignInButton() + } + } + + @Test + @ScreenshotTest + fun `default state`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + } + + @Test + @ScreenshotTest + fun `ready to submit`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + setPassword("password123") + } + } + + @Test + @ScreenshotTest + fun `ready to submit with email`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState(username = "test@test.com", signInMethod = SignInMethod.Email)) + } + signInConfirmPassword { + setPassword("password123") + } + } + + @Test + @ScreenshotTest + fun `ready to submit with phonenumber`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState(username = "+19021231234", signInMethod = SignInMethod.PhoneNumber)) + } + signInConfirmPassword { + setPassword("password123") + } + } + + @Test + @ScreenshotTest + fun `password visible`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + setPassword("password123") + clickShowPassword() + } + } +} \ No newline at end of file diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt new file mode 100644 index 00000000..4604ca01 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.amplifyframework.ui.authenticator.ui.robots + +import androidx.compose.ui.test.hasTestTag +import androidx.compose.ui.test.hasText +import androidx.compose.ui.test.junit4.ComposeTestRule +import com.amplifyframework.ui.authenticator.forms.FieldKey +import com.amplifyframework.ui.authenticator.ui.TestTags +import com.amplifyframework.ui.authenticator.ui.testTag +import com.amplifyframework.ui.testing.ComposeTest + +fun ComposeTest.signInConfirmPassword(func: SignInConfirmPasswordRobot.() -> Unit) = + SignInConfirmPasswordRobot(composeTestRule).func() + +class SignInConfirmPasswordRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { + fun hasSubmitButton(expected: String) = assertExists(TestTags.SignInButton, expected) + fun hasUsername(expected: String) = composeTestRule.onNode( + hasTestTag(FieldKey.Username.testTag) and hasText(expected) + ).assertExists() + fun hasBackToSignInButton() = composeTestRule.onNode(hasTestTag(TestTags.BackToSignInButton)).assertExists() + + fun setPassword(value: String) = setFieldContent(FieldKey.Password, value) + fun clickShowPassword() = clickOnShowIcon(FieldKey.Password) + fun clickSubmitButton() = clickOnTag(TestTags.SignInButton) + fun clickBackToSignIn() = clickOnTag(TestTags.BackToSignInButton) +} \ No newline at end of file diff --git a/authenticator/src/test/screenshots/SignInConfirmPasswordTest_default-state.png b/authenticator/src/test/screenshots/SignInConfirmPasswordTest_default-state.png new file mode 100644 index 0000000000000000000000000000000000000000..f07df71c412b06b9da745b0b76b35ee462c3338c GIT binary patch literal 43448 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

PbKS)f2 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 literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInConfirmPasswordTest_password-visible.png b/authenticator/src/test/screenshots/SignInConfirmPasswordTest_password-visible.png new file mode 100644 index 0000000000000000000000000000000000000000..104df59507ba28de040fbc94768f738cff28d191 GIT binary patch literal 48469 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 Q5VD>#GB+$aedYH50`%Zo%K!iX literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit.png b/authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit.png new file mode 100644 index 0000000000000000000000000000000000000000..ec72099f53e75a3524b7d1b9e1ed8286ff9076c5 GIT binary patch literal 43515 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 z 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 literal 0 HcmV?d00001 From 640309bb5012374cc927d07d12c638f1976e4abf Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 26 Sep 2025 10:13:43 -0300 Subject: [PATCH 8/9] Add SelectAuthFactor unit tests --- .../ui/SignInSelectAuthFactor.kt | 63 +++--- .../ui/authenticator/ui/TestTags.kt | 9 + .../ui/authenticator/testUtil/MockStates.kt | 19 +- .../ui/SignInSelectAuthFactorTest.kt | 206 ++++++++++++++++++ .../ui/robots/SignInSelectAuthFactorRobot.kt | 41 ++++ ...ault-state-with-all-factors-with-email.png | Bin 0 -> 66502 bytes ...ate-with-all-factors-with-phone-number.png | Bin 0 -> 68168 bytes ...torTest_default-state-with-all-factors.png | Bin 0 -> 65403 bytes ...SignInSelectAuthFactorTest_no-password.png | Bin 0 -> 44416 bytes 9 files changed, 306 insertions(+), 32 deletions(-) create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt create mode 100644 authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-email.png create mode 100644 authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-phone-number.png create mode 100644 authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors.png create mode 100644 authenticator/src/test/screenshots/SignInSelectAuthFactorTest_no-password.png diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt index bc4681d2..6dc18765 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt @@ -19,6 +19,7 @@ import com.amplifyframework.ui.authenticator.auth.toFieldKey import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.enums.containsPassword +import com.amplifyframework.ui.authenticator.forms.FieldKey import com.amplifyframework.ui.authenticator.locals.LocalStringResolver import com.amplifyframework.ui.authenticator.states.getPasswordFactor import com.amplifyframework.ui.authenticator.states.signInMethod @@ -35,7 +36,6 @@ fun SignInSelectAuthFactor( }, footerContent: @Composable (SignInSelectAuthFactorState) -> Unit = { SignInSelectFactorFooter(it) } ) { - val scope = rememberCoroutineScope() Column( modifier = modifier.fillMaxWidth().padding(horizontal = 16.dp) ) { @@ -43,7 +43,9 @@ fun SignInSelectAuthFactor( val usernameLabel = StringResolver.fieldName(state.signInMethod.toFieldKey()) OutlinedTextField( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .testTag(FieldKey.Username.testTag), value = state.username, onValueChange = {}, label = { Text(usernameLabel) }, @@ -55,14 +57,7 @@ fun SignInSelectAuthFactor( ) if (state.availableAuthFactors.containsPassword()) { - AuthenticatorButton( - onClick = { scope.launch { state.select(state.getPasswordFactor()) } }, - loading = state.selectedFactor == state.getPasswordFactor(), - enabled = state.selectedFactor == null, - label = stringResource(R.string.amplify_ui_authenticator_button_signin_password), - modifier = Modifier.testTag(TestTags.AuthFactorPassword) - ) - + AuthFactorButton(authFactor = state.getPasswordFactor(), state = state) if (state.availableAuthFactors.size > 1) { DividerWithText( text = stringResource(R.string.amplify_ui_authenticator_or), @@ -72,31 +67,13 @@ fun SignInSelectAuthFactor( } if (state.availableAuthFactors.contains(AuthFactor.WebAuthn)) { - AuthenticatorButton( - onClick = { scope.launch { state.select(AuthFactor.WebAuthn) } }, - loading = state.selectedFactor == AuthFactor.WebAuthn, - enabled = state.selectedFactor == null, - label = stringResource(R.string.amplify_ui_authenticator_button_signin_passkey), - modifier = Modifier.testTag(TestTags.AuthFactorPasskey) - ) + AuthFactorButton(authFactor = AuthFactor.WebAuthn, state = state) } if (state.availableAuthFactors.contains(AuthFactor.EmailOtp)) { - AuthenticatorButton( - onClick = { scope.launch { state.select(AuthFactor.EmailOtp) } }, - loading = state.selectedFactor == AuthFactor.EmailOtp, - enabled = state.selectedFactor == null, - label = stringResource(R.string.amplify_ui_authenticator_button_signin_email), - modifier = Modifier.testTag(TestTags.AuthFactorEmail) - ) + AuthFactorButton(authFactor = AuthFactor.EmailOtp, state = state) } if (state.availableAuthFactors.contains(AuthFactor.SmsOtp)) { - AuthenticatorButton( - onClick = { scope.launch { state.select(AuthFactor.SmsOtp) } }, - loading = state.selectedFactor == AuthFactor.SmsOtp, - enabled = state.selectedFactor == null, - label = stringResource(R.string.amplify_ui_authenticator_button_signin_sms), - modifier = Modifier.testTag(TestTags.AuthFactorSms) - ) + AuthFactorButton(authFactor = AuthFactor.SmsOtp, state = state) } footerContent(state) } @@ -107,3 +84,27 @@ fun SignInSelectFactorFooter(state: SignInSelectAuthFactorState, modifier: Modif modifier = modifier, onClickBackToSignIn = { state.moveTo(AuthenticatorStep.SignIn) } ) + +@Composable +private fun AuthFactorButton( + authFactor: AuthFactor, + state: SignInSelectAuthFactorState, + modifier: Modifier = Modifier +) { + val scope = rememberCoroutineScope() + AuthenticatorButton( + onClick = { scope.launch { state.select(authFactor) } }, + loading = state.selectedFactor == authFactor, + enabled = state.selectedFactor == null, + label = stringResource(authFactor.signInResourceId), + modifier = modifier.testTag(authFactor.testTag) + ) +} + +private val AuthFactor.signInResourceId: Int + get() = when(this) { + is AuthFactor.Password -> R.string.amplify_ui_authenticator_button_signin_password + AuthFactor.SmsOtp -> R.string.amplify_ui_authenticator_button_signin_sms + AuthFactor.EmailOtp -> R.string.amplify_ui_authenticator_button_signin_email + AuthFactor.WebAuthn -> R.string.amplify_ui_authenticator_button_signin_passkey + } \ No newline at end of file diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt index e85107fd..69a236ff 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt @@ -15,6 +15,7 @@ package com.amplifyframework.ui.authenticator.ui +import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.forms.FieldKey @Suppress("ConstPropertyName") @@ -42,3 +43,11 @@ internal object TestTags { internal val FieldKey.testTag: String get() = this.toString() + +internal val AuthFactor.testTag: String + get() = when(this) { + is AuthFactor.Password -> TestTags.AuthFactorPassword + AuthFactor.SmsOtp -> TestTags.AuthFactorSms + AuthFactor.EmailOtp -> TestTags.AuthFactorEmail + AuthFactor.WebAuthn -> TestTags.AuthFactorPasskey + } diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index 93e886f7..2c2bda98 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -21,6 +21,7 @@ import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.FormData import com.amplifyframework.ui.authenticator.mockAuthCodeDeliveryDetails @@ -29,12 +30,13 @@ import com.amplifyframework.ui.authenticator.states.PasskeyCreationPromptStateIm import com.amplifyframework.ui.authenticator.states.PasswordResetConfirmStateImpl import com.amplifyframework.ui.authenticator.states.PasswordResetStateImpl import com.amplifyframework.ui.authenticator.states.SignInConfirmMfaStateImpl +import com.amplifyframework.ui.authenticator.states.SignInConfirmPasswordStateImpl import com.amplifyframework.ui.authenticator.states.SignInConfirmTotpCodeStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithEmailSetupStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithMfaSelectionStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithMfaSetupSelectionStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithTotpSetupStateImpl -import com.amplifyframework.ui.authenticator.states.SignInConfirmPasswordStateImpl +import com.amplifyframework.ui.authenticator.states.SignInSelectAuthFactorStateImpl import com.amplifyframework.ui.authenticator.states.SignInStateImpl import com.amplifyframework.ui.authenticator.states.SignUpStateImpl @@ -149,3 +151,18 @@ internal fun mockSignInConfirmPasswordState( onSubmit = onSubmit, onMoveTo = onMoveTo ) + +internal fun mockSignInSelectAuthFactorState( + username: String = "testuser", + signInMethod: SignInMethod = SignInMethod.Username, + availableAuthFactors: Set = + setOf(AuthFactor.Password(), AuthFactor.SmsOtp, AuthFactor.EmailOtp, AuthFactor.WebAuthn), + onSelect: suspend (AuthFactor) -> Unit = { }, + onMoveTo: (AuthenticatorInitialStep) -> Unit = { } +) = SignInSelectAuthFactorStateImpl( + username = username, + signInMethod = signInMethod, + availableAuthFactors = availableAuthFactors, + onSubmit = onSelect, + onMoveTo = onMoveTo +) diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt new file mode 100644 index 00000000..d38a9df3 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt @@ -0,0 +1,206 @@ +/* + * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.amplifyframework.ui.authenticator.ui + +import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest +import com.amplifyframework.ui.authenticator.testUtil.mockSignInSelectAuthFactorState +import com.amplifyframework.ui.authenticator.ui.robots.signInSelectAuthFactor +import com.amplifyframework.ui.testing.ScreenshotTest +import io.kotest.matchers.types.shouldBeInstanceOf +import io.mockk.mockk +import io.mockk.verify +import org.junit.Test + +class SignInSelectAuthFactorTest : AuthenticatorUiTest() { + + @Test + fun `title is Choose how to sign in`() { + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState()) + } + signInSelectAuthFactor { + hasTitle("Choose how to sign in") + } + } + + @Test + fun `username field is populated`() { + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(username = "testuser")) + } + signInSelectAuthFactor { + hasUsername("testuser") + } + } + + @Test + fun `shows password button when available`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState(availableAuthFactors = setOf(AuthFactor.Password())) + ) + } + signInSelectAuthFactor { + hasPasswordButton() + } + } + + @Test + fun `shows passkey button when available`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + availableAuthFactors = setOf(AuthFactor.WebAuthn) + ) + ) + } + signInSelectAuthFactor { + hasPasskeyButton() + } + } + + @Test + fun `shows email button when available`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + availableAuthFactors = setOf(AuthFactor.EmailOtp) + ) + ) + } + signInSelectAuthFactor { + hasEmailButton() + } + } + + @Test + fun `shows sms button when available`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + availableAuthFactors = setOf(AuthFactor.SmsOtp) + ) + ) + } + signInSelectAuthFactor { + hasSmsButton() + } + } + + @Test + fun `selects password`() { + val onSelect = mockk<(AuthFactor) -> Unit>(relaxed = true) + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(onSelect = onSelect)) + } + signInSelectAuthFactor { + clickOnAuthFactor(AuthFactor.Password()) + } + verify { + onSelect(withArg { it.shouldBeInstanceOf() }) + } + } + + @Test + fun `selects sms otp`() { + val onSelect = mockk<(AuthFactor) -> Unit>(relaxed = true) + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(onSelect = onSelect)) + } + signInSelectAuthFactor { + clickOnAuthFactor(AuthFactor.SmsOtp) + } + verify { + onSelect(AuthFactor.SmsOtp) + } + } + + @Test + fun `selects email otp`() { + val onSelect = mockk<(AuthFactor) -> Unit>(relaxed = true) + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(onSelect = onSelect)) + } + signInSelectAuthFactor { + clickOnAuthFactor(AuthFactor.EmailOtp) + } + verify { + onSelect(AuthFactor.EmailOtp) + } + } + + @Test + fun `selects passkey`() { + val onSelect = mockk<(AuthFactor) -> Unit>(relaxed = true) + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(onSelect = onSelect)) + } + signInSelectAuthFactor { + clickOnAuthFactor(AuthFactor.WebAuthn) + } + verify { + onSelect(AuthFactor.WebAuthn) + } + } + + @Test + @ScreenshotTest + fun `default state with all factors`() { + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState()) + } + } + + @Test + @ScreenshotTest + fun `default state with all factors with phone number`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + username = "+19021234567", + signInMethod = SignInMethod.PhoneNumber + ) + ) + } + } + + @Test + @ScreenshotTest + fun `default state with all factors with email`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + username = "test@test.com", + signInMethod = SignInMethod.Email + ) + ) + } + } + + @Test + @ScreenshotTest + fun `no password`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + availableAuthFactors = setOf(AuthFactor.EmailOtp, AuthFactor.SmsOtp) + ) + ) + } + } +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt new file mode 100644 index 00000000..9a2944e4 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.amplifyframework.ui.authenticator.ui.robots + +import androidx.compose.ui.test.hasTestTag +import androidx.compose.ui.test.hasText +import androidx.compose.ui.test.junit4.ComposeTestRule +import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.forms.FieldKey +import com.amplifyframework.ui.authenticator.ui.TestTags +import com.amplifyframework.ui.authenticator.ui.testTag +import com.amplifyframework.ui.testing.ComposeTest + +fun ComposeTest.signInSelectAuthFactor(func: SignInSelectAuthFactorRobot.() -> Unit) = + SignInSelectAuthFactorRobot(composeTestRule).func() + +class SignInSelectAuthFactorRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { + fun hasUsername(expected: String) = composeTestRule.onNode( + hasTestTag(FieldKey.Username.testTag) and hasText(expected) + ).assertExists() + + fun hasPasswordButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorPassword)).assertExists() + fun hasPasskeyButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorPasskey)).assertExists() + fun hasEmailButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorEmail)).assertExists() + fun hasSmsButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorSms)).assertExists() + + fun clickOnAuthFactor(factor: AuthFactor) = clickOnTag(factor.testTag) +} \ No newline at end of file diff --git a/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-email.png b/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-email.png new file mode 100644 index 0000000000000000000000000000000000000000..02d524201dfb34ce9ffc3d56b0cb7439f84470b0 GIT binary patch literal 66502 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 i6^)*>!rG^^{{YGdvZ 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 BEvx_l literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-phone-number.png b/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-phone-number.png new file mode 100644 index 0000000000000000000000000000000000000000..4093b1627325a18060e7d6a7b13e79d901248add GIT binary patch literal 68168 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

Jt!)e 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 z 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 K3x(&b@Bc3uRb}J= literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_no-password.png b/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_no-password.png new file mode 100644 index 0000000000000000000000000000000000000000..7384463334d2a853524556bc102b73a1466a61d8 GIT binary patch literal 44416 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 literal 0 HcmV?d00001 From ffb5a376d2d9ff2c4d595bf96ad769f4213fdc9e Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 26 Sep 2025 10:47:02 -0300 Subject: [PATCH 9/9] lint --- .../ui/authenticator/AuthenticatorStepState.kt | 4 ++-- .../ui/authenticator/data/AuthFactor.kt | 10 +++++----- .../ui/authenticator/enums/AuthenticatorStep.kt | 4 ++-- .../states/SignInConfirmPasswordStateImpl.kt | 9 +++------ .../ui/authenticator/ui/Authenticator.kt | 2 +- .../ui/authenticator/ui/DividerWithText.kt | 2 +- .../ui/authenticator/ui/SignInSelectAuthFactor.kt | 7 +++---- .../ui/authenticator/ui/TestTags.kt | 2 +- .../authenticator/util/AuthenticatorUiConstants.kt | 2 +- .../authenticator/ui/PasskeyCreationPromptTest.kt | 2 +- .../authenticator/ui/SignInConfirmPasswordTest.kt | 13 ++++++++++--- .../ui/robots/SignInConfirmPasswordRobot.kt | 6 +++--- .../ui/robots/SignInSelectAuthFactorRobot.kt | 6 +++--- 13 files changed, 36 insertions(+), 33 deletions(-) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index 3c354250..45508517 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -24,9 +24,9 @@ import com.amplifyframework.auth.AuthUserAttribute import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthSignOutResult import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep -import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.forms.MutableFormState /** @@ -99,7 +99,7 @@ interface SignInState : AuthenticatorStepState { * The user has entered their username and must select the authentication factor they'd like to use to sign in */ @Stable -interface SignInSelectAuthFactorState: AuthenticatorStepState { +interface SignInSelectAuthFactorState : AuthenticatorStepState { /** * The input form state holder for this step. */ diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt index 2dbe9a1c..f2dca046 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt @@ -19,16 +19,16 @@ import com.amplifyframework.auth.AuthFactorType sealed interface AuthFactor { data class Password(val srp: Boolean = true) : AuthFactor - data object EmailOtp: AuthFactor - data object SmsOtp: AuthFactor - data object WebAuthn: AuthFactor + data object EmailOtp : AuthFactor + data object SmsOtp : AuthFactor + data object WebAuthn : AuthFactor } internal fun AuthFactor.toAuthFactorType() = when (this) { AuthFactor.EmailOtp -> AuthFactorType.EMAIL_OTP AuthFactor.SmsOtp -> AuthFactorType.SMS_OTP AuthFactor.WebAuthn -> AuthFactorType.WEB_AUTHN - is AuthFactor.Password -> if(srp) AuthFactorType.PASSWORD_SRP else AuthFactorType.PASSWORD + is AuthFactor.Password -> if (srp) AuthFactorType.PASSWORD_SRP else AuthFactorType.PASSWORD } internal fun AuthFactorType.toAuthFactor() = when (this) { @@ -50,4 +50,4 @@ internal fun Collection.toAuthFactors(): Set { } return factors.map { it.toAuthFactor() }.toSet() } -internal fun Collection.containsPassword() = any { it is AuthFactor.Password } \ No newline at end of file +internal fun Collection.containsPassword() = any { it is AuthFactor.Password } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt index 5d513efe..e691ef2b 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt @@ -49,12 +49,12 @@ abstract class AuthenticatorStep internal constructor() { /** * The user has entered their username and must select the authentication factor they'd like to use to sign in */ - object SignInSelectAuthFactor: AuthenticatorStep() + object SignInSelectAuthFactor : AuthenticatorStep() /** * A user has entered their username and must enter their password to continue signing in */ - object SignInConfirmPassword: AuthenticatorStep() + object SignInConfirmPassword : AuthenticatorStep() /** * The user has completed the initial Sign In step, and needs to enter the confirmation code from a custom diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt index cf8e21f3..d8c49bfb 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt @@ -1,21 +1,18 @@ package com.amplifyframework.ui.authenticator.states -import com.amplifyframework.ui.authenticator.SignInConfirmNewPasswordState import com.amplifyframework.ui.authenticator.SignInConfirmPasswordState -import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.FieldKey -import com.amplifyframework.ui.authenticator.forms.FieldValidators -import com.amplifyframework.ui.authenticator.forms.MutableFormState internal class SignInConfirmPasswordStateImpl( override val username: String, val signInMethod: SignInMethod, private val onSubmit: suspend (password: String) -> Unit, private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit -) : BaseStateImpl(), SignInConfirmPasswordState { +) : BaseStateImpl(), + SignInConfirmPasswordState { init { form.addFields { @@ -33,4 +30,4 @@ internal class SignInConfirmPasswordStateImpl( } internal val SignInConfirmPasswordState.signInMethod: SignInMethod - get() = (this as SignInConfirmPasswordStateImpl).signInMethod \ No newline at end of file + get() = (this as SignInConfirmPasswordStateImpl).signInMethod diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt index 1a44fa4f..9f378142 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt @@ -42,9 +42,9 @@ import com.amplifyframework.ui.authenticator.AuthenticatorStepState import com.amplifyframework.ui.authenticator.ErrorState import com.amplifyframework.ui.authenticator.LoadingState import com.amplifyframework.ui.authenticator.PasskeyCreatedState +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState import com.amplifyframework.ui.authenticator.PasswordResetConfirmState import com.amplifyframework.ui.authenticator.PasswordResetState -import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState import com.amplifyframework.ui.authenticator.SignInConfirmCustomState import com.amplifyframework.ui.authenticator.SignInConfirmMfaState import com.amplifyframework.ui.authenticator.SignInConfirmNewPasswordState diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt index da06ff27..7ae67fe8 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt @@ -44,4 +44,4 @@ internal fun DividerWithText( thickness = thickness ) } -} \ No newline at end of file +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt index 6dc18765..e7baf5e8 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt @@ -20,7 +20,6 @@ import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.enums.containsPassword import com.amplifyframework.ui.authenticator.forms.FieldKey -import com.amplifyframework.ui.authenticator.locals.LocalStringResolver import com.amplifyframework.ui.authenticator.states.getPasswordFactor import com.amplifyframework.ui.authenticator.states.signInMethod import com.amplifyframework.ui.authenticator.strings.StringResolver @@ -47,7 +46,7 @@ fun SignInSelectAuthFactor( .fillMaxWidth() .testTag(FieldKey.Username.testTag), value = state.username, - onValueChange = {}, + onValueChange = {}, label = { Text(usernameLabel) }, enabled = false ) @@ -102,9 +101,9 @@ private fun AuthFactorButton( } private val AuthFactor.signInResourceId: Int - get() = when(this) { + get() = when (this) { is AuthFactor.Password -> R.string.amplify_ui_authenticator_button_signin_password AuthFactor.SmsOtp -> R.string.amplify_ui_authenticator_button_signin_sms AuthFactor.EmailOtp -> R.string.amplify_ui_authenticator_button_signin_email AuthFactor.WebAuthn -> R.string.amplify_ui_authenticator_button_signin_passkey - } \ No newline at end of file + } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt index 69a236ff..5df6ca97 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt @@ -45,7 +45,7 @@ internal val FieldKey.testTag: String get() = this.toString() internal val AuthFactor.testTag: String - get() = when(this) { + get() = when (this) { is AuthFactor.Password -> TestTags.AuthFactorPassword AuthFactor.SmsOtp -> TestTags.AuthFactorSms AuthFactor.EmailOtp -> TestTags.AuthFactorEmail diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt index ede3a4dd..4a27ed17 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt @@ -4,4 +4,4 @@ import androidx.compose.ui.unit.dp internal object AuthenticatorUiConstants { val spaceBetweenFields = 8.dp -} \ No newline at end of file +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt index 53d88e2d..38001881 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt @@ -71,4 +71,4 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { PasskeyPrompt(state = mockPasskeyCreationPromptState()) } } -} \ No newline at end of file +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt index b6d2431b..fe1fb7f4 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt @@ -87,7 +87,9 @@ class SignInConfirmPasswordTest : AuthenticatorUiTest() { @ScreenshotTest fun `ready to submit with email`() { setContent { - SignInConfirmPassword(state = mockSignInConfirmPasswordState(username = "test@test.com", signInMethod = SignInMethod.Email)) + SignInConfirmPassword( + state = mockSignInConfirmPasswordState(username = "test@test.com", signInMethod = SignInMethod.Email) + ) } signInConfirmPassword { setPassword("password123") @@ -98,7 +100,12 @@ class SignInConfirmPasswordTest : AuthenticatorUiTest() { @ScreenshotTest fun `ready to submit with phonenumber`() { setContent { - SignInConfirmPassword(state = mockSignInConfirmPasswordState(username = "+19021231234", signInMethod = SignInMethod.PhoneNumber)) + SignInConfirmPassword( + state = mockSignInConfirmPasswordState( + username = "+19021231234", + signInMethod = SignInMethod.PhoneNumber + ) + ) } signInConfirmPassword { setPassword("password123") @@ -116,4 +123,4 @@ class SignInConfirmPasswordTest : AuthenticatorUiTest() { clickShowPassword() } } -} \ No newline at end of file +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt index 4604ca01..fec97e7f 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt @@ -23,7 +23,7 @@ import com.amplifyframework.ui.authenticator.ui.TestTags import com.amplifyframework.ui.authenticator.ui.testTag import com.amplifyframework.ui.testing.ComposeTest -fun ComposeTest.signInConfirmPassword(func: SignInConfirmPasswordRobot.() -> Unit) = +fun ComposeTest.signInConfirmPassword(func: SignInConfirmPasswordRobot.() -> Unit) = SignInConfirmPasswordRobot(composeTestRule).func() class SignInConfirmPasswordRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { @@ -32,9 +32,9 @@ class SignInConfirmPasswordRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) hasTestTag(FieldKey.Username.testTag) and hasText(expected) ).assertExists() fun hasBackToSignInButton() = composeTestRule.onNode(hasTestTag(TestTags.BackToSignInButton)).assertExists() - + fun setPassword(value: String) = setFieldContent(FieldKey.Password, value) fun clickShowPassword() = clickOnShowIcon(FieldKey.Password) fun clickSubmitButton() = clickOnTag(TestTags.SignInButton) fun clickBackToSignIn() = clickOnTag(TestTags.BackToSignInButton) -} \ No newline at end of file +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt index 9a2944e4..143851b4 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt @@ -24,18 +24,18 @@ import com.amplifyframework.ui.authenticator.ui.TestTags import com.amplifyframework.ui.authenticator.ui.testTag import com.amplifyframework.ui.testing.ComposeTest -fun ComposeTest.signInSelectAuthFactor(func: SignInSelectAuthFactorRobot.() -> Unit) = +fun ComposeTest.signInSelectAuthFactor(func: SignInSelectAuthFactorRobot.() -> Unit) = SignInSelectAuthFactorRobot(composeTestRule).func() class SignInSelectAuthFactorRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { fun hasUsername(expected: String) = composeTestRule.onNode( hasTestTag(FieldKey.Username.testTag) and hasText(expected) ).assertExists() - + fun hasPasswordButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorPassword)).assertExists() fun hasPasskeyButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorPasskey)).assertExists() fun hasEmailButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorEmail)).assertExists() fun hasSmsButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorSms)).assertExists() fun clickOnAuthFactor(factor: AuthFactor) = clickOnTag(factor.testTag) -} \ No newline at end of file +}