Skip to content

Commit 5aae024

Browse files
committed
feat: e2e tests for google sign in
1 parent e859ed2 commit 5aae024

File tree

6 files changed

+515
-13
lines changed

6 files changed

+515
-13
lines changed

auth/src/main/java/com/firebase/ui/auth/compose/FirebaseAuthUI.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ package com.firebase.ui.auth.compose
1616

1717
import android.content.Context
1818
import androidx.annotation.RestrictTo
19-
import com.firebase.ui.auth.compose.configuration.auth_provider.signOutFromGoogle
2019
import com.firebase.ui.auth.compose.configuration.AuthUIConfiguration
20+
import com.firebase.ui.auth.compose.configuration.auth_provider.AuthProvider
21+
import com.firebase.ui.auth.compose.configuration.auth_provider.signOutFromGoogle
2122
import com.google.firebase.FirebaseApp
2223
import com.google.firebase.auth.FirebaseAuth
2324
import com.google.firebase.auth.FirebaseAuth.AuthStateListener
@@ -72,6 +73,9 @@ class FirebaseAuthUI private constructor(
7273

7374
private val _authStateFlow = MutableStateFlow<AuthState>(AuthState.Idle)
7475

76+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
77+
var testCredentialManagerProvider: AuthProvider.Google.CredentialManagerProvider? = null
78+
7579
/**
7680
* Checks whether a user is currently signed in.
7781
*

auth/src/main/java/com/firebase/ui/auth/compose/configuration/auth_provider/AuthProvider.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import android.app.Activity
1818
import android.content.Context
1919
import android.net.Uri
2020
import android.util.Log
21+
import androidx.annotation.RestrictTo
2122
import androidx.compose.ui.graphics.Color
2223
import androidx.core.net.toUri
2324
import androidx.credentials.CredentialManager
@@ -536,7 +537,8 @@ abstract class AuthProvider(open val providerId: String, open val providerName:
536537
* Result container for Google Sign-In credential flow.
537538
* @suppress
538539
*/
539-
internal data class GoogleSignInResult(
540+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
541+
data class GoogleSignInResult(
540542
val credential: AuthCredential,
541543
val displayName: String?,
542544
val photoUrl: Uri?
@@ -570,9 +572,11 @@ abstract class AuthProvider(open val providerId: String, open val providerName:
570572
* An interface to wrap the Credential Manager flow for Google Sign-In.
571573
* @suppress
572574
*/
573-
internal interface CredentialManagerProvider {
575+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
576+
interface CredentialManagerProvider {
574577
suspend fun getGoogleCredential(
575578
context: Context,
579+
credentialManager: CredentialManager,
576580
serverClientId: String,
577581
filterByAuthorizedAccounts: Boolean,
578582
autoSelectEnabled: Boolean
@@ -583,14 +587,15 @@ abstract class AuthProvider(open val providerId: String, open val providerName:
583587
* The default implementation of [CredentialManagerProvider].
584588
* @suppress
585589
*/
586-
internal class DefaultCredentialManagerProvider : CredentialManagerProvider {
590+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
591+
class DefaultCredentialManagerProvider : CredentialManagerProvider {
587592
override suspend fun getGoogleCredential(
588593
context: Context,
594+
credentialManager: CredentialManager,
589595
serverClientId: String,
590596
filterByAuthorizedAccounts: Boolean,
591-
autoSelectEnabled: Boolean
597+
autoSelectEnabled: Boolean,
592598
): GoogleSignInResult {
593-
val credentialManager = CredentialManager.create(context)
594599
val googleIdOption = GetGoogleIdOption.Builder()
595600
.setServerClientId(serverClientId)
596601
.setFilterByAuthorizedAccounts(filterByAuthorizedAccounts)

auth/src/main/java/com/firebase/ui/auth/compose/configuration/auth_provider/GoogleAuthProvider+FirebaseAuthUI.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,14 @@ internal suspend fun FirebaseAuthUI.signInWithGoogle(
130130
}
131131
}
132132

133-
val result = credentialManagerProvider.getGoogleCredential(
134-
context = context,
135-
serverClientId = provider.serverClientId!!,
136-
filterByAuthorizedAccounts = true,
137-
autoSelectEnabled = false
138-
)
133+
val result =
134+
(testCredentialManagerProvider ?: credentialManagerProvider).getGoogleCredential(
135+
context = context,
136+
credentialManager = CredentialManager.create(context),
137+
serverClientId = provider.serverClientId!!,
138+
filterByAuthorizedAccounts = true,
139+
autoSelectEnabled = false
140+
)
139141

140142
signInAndLinkWithCredential(
141143
config = config,

composeapp/src/main/java/com/firebase/composeapp/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import com.google.firebase.FirebaseApp
3131
*/
3232
class MainActivity : ComponentActivity() {
3333
companion object {
34-
private const val USE_AUTH_EMULATOR = false
34+
private const val USE_AUTH_EMULATOR = true
3535
private const val AUTH_EMULATOR_HOST = "10.0.2.2"
3636
private const val AUTH_EMULATOR_PORT = 9099
3737
}

e2eTest/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ dependencies {
5656
testImplementation(Config.Libs.Test.mockitoInline)
5757
testImplementation(Config.Libs.Test.mockitoKotlin)
5858
testImplementation(Config.Libs.Androidx.credentials)
59+
testImplementation(Config.Libs.Misc.googleid)
5960
testImplementation(Config.Libs.Test.composeUiTestJunit4)
6061
}
6162

0 commit comments

Comments
 (0)