Skip to content

Commit 386cfaa

Browse files
committed
DataConnectGrpcMetadataUnitTest.kt: fix for non-null access token result with null token.
1 parent eb214ad commit 386cfaa

File tree

2 files changed

+47
-24
lines changed

2 files changed

+47
-24
lines changed

firebase-dataconnect/src/test/kotlin/com/google/firebase/dataconnect/core/DataConnectGrpcMetadataUnitTest.kt

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import android.os.Build
1919
import androidx.test.ext.junit.runners.AndroidJUnit4
2020
import com.google.firebase.dataconnect.BuildConfig
2121
import com.google.firebase.dataconnect.FirebaseDataConnect.CallerSdkType
22+
import com.google.firebase.dataconnect.core.DataConnectAppCheck.GetAppCheckTokenResult
23+
import com.google.firebase.dataconnect.core.DataConnectAuth.GetAuthTokenResult
2224
import com.google.firebase.dataconnect.testutil.FirebaseAppUnitTestingRule
2325
import com.google.firebase.dataconnect.testutil.property.arbitrary.appCheckTokenResult
2426
import com.google.firebase.dataconnect.testutil.property.arbitrary.authTokenResult
@@ -31,9 +33,12 @@ import io.kotest.matchers.collections.shouldNotContain
3133
import io.kotest.matchers.shouldBe
3234
import io.kotest.matchers.types.shouldBeSameInstanceAs
3335
import io.kotest.property.Arb
36+
import io.kotest.property.Exhaustive
3437
import io.kotest.property.arbitrary.constant
3538
import io.kotest.property.arbitrary.enum
3639
import io.kotest.property.arbitrary.next
40+
import io.kotest.property.checkAll
41+
import io.kotest.property.exhaustive.of
3742
import io.mockk.coEvery
3843
import io.mockk.mockk
3944
import kotlinx.coroutines.test.runTest
@@ -160,24 +165,33 @@ class DataConnectGrpcMetadataUnitTest {
160165

161166
@Test
162167
fun `should omit x-firebase-auth-token when the auth token is null`() = runTest {
163-
val dataConnectAuth: DataConnectAuth = mockk()
164-
coEvery { dataConnectAuth.getToken(any()) } returns null
165-
val dataConnectGrpcMetadata =
166-
Arb.dataConnect
167-
.dataConnectGrpcMetadata(dataConnectAuth = Arb.constant(dataConnectAuth))
168-
.next()
169-
val requestId = Arb.dataConnect.requestId().next()
170-
val callerSdkType = Arb.enum<CallerSdkType>().next()
168+
val getAuthTokenResults: Exhaustive<GetAuthTokenResult?> =
169+
Exhaustive.of(
170+
null,
171+
Arb.dataConnect.authTokenResult(accessToken = Arb.constant(null)).next(),
172+
)
171173

172-
val metadata = dataConnectGrpcMetadata.get(requestId, callerSdkType)
174+
checkAll(getAuthTokenResults) { getAuthTokenResult ->
175+
val dataConnectAuth: DataConnectAuth = mockk()
176+
coEvery { dataConnectAuth.getToken(any()) } returns getAuthTokenResult
177+
val dataConnectGrpcMetadata =
178+
Arb.dataConnect
179+
.dataConnectGrpcMetadata(dataConnectAuth = Arb.constant(dataConnectAuth))
180+
.next()
181+
val requestId = Arb.dataConnect.requestId().next()
182+
val callerSdkType = Arb.enum<CallerSdkType>().next()
173183

174-
metadata.asClue { it.keys() shouldNotContain "x-firebase-auth-token" }
184+
val metadata = dataConnectGrpcMetadata.get(requestId, callerSdkType)
185+
186+
metadata.asClue { it.keys() shouldNotContain "x-firebase-auth-token" }
187+
}
175188
}
176189

177190
@Test
178191
fun `should include x-firebase-auth-token when the auth token is not null`() = runTest {
179192
val dataConnectAuth: DataConnectAuth = mockk()
180-
val authTokenResult = Arb.dataConnect.authTokenResult().next()
193+
val authTokenResult =
194+
Arb.dataConnect.authTokenResult(accessToken = Arb.dataConnect.accessToken()).next()
181195
coEvery { dataConnectAuth.getToken(any()) } returns authTokenResult
182196
val dataConnectGrpcMetadata =
183197
Arb.dataConnect
@@ -197,24 +211,33 @@ class DataConnectGrpcMetadataUnitTest {
197211

198212
@Test
199213
fun `should omit x-firebase-appcheck when the AppCheck token is null`() = runTest {
200-
val dataConnectAppCheck: DataConnectAppCheck = mockk {
201-
coEvery { getToken(any()) } returns null
202-
}
203-
val dataConnectGrpcMetadata =
204-
Arb.dataConnect
205-
.dataConnectGrpcMetadata(dataConnectAppCheck = Arb.constant(dataConnectAppCheck))
206-
.next()
207-
val requestId = Arb.dataConnect.requestId().next()
208-
val callerSdkType = Arb.enum<CallerSdkType>().next()
214+
val getAppCheckTokenResults: Exhaustive<GetAppCheckTokenResult?> =
215+
Exhaustive.of(
216+
null,
217+
Arb.dataConnect.appCheckTokenResult(accessToken = Arb.constant(null)).next(),
218+
)
209219

210-
val metadata = dataConnectGrpcMetadata.get(requestId, callerSdkType)
220+
checkAll(getAppCheckTokenResults) { getAppCheckTokenResult ->
221+
val dataConnectAppCheck: DataConnectAppCheck = mockk {
222+
coEvery { getToken(any()) } returns getAppCheckTokenResult
223+
}
224+
val dataConnectGrpcMetadata =
225+
Arb.dataConnect
226+
.dataConnectGrpcMetadata(dataConnectAppCheck = Arb.constant(dataConnectAppCheck))
227+
.next()
228+
val requestId = Arb.dataConnect.requestId().next()
229+
val callerSdkType = Arb.enum<CallerSdkType>().next()
211230

212-
metadata.asClue { it.keys() shouldNotContain "x-firebase-appcheck" }
231+
val metadata = dataConnectGrpcMetadata.get(requestId, callerSdkType)
232+
233+
metadata.asClue { it.keys() shouldNotContain "x-firebase-appcheck" }
234+
}
213235
}
214236

215237
@Test
216238
fun `should include x-firebase-appcheck when the AppCheck token is not null`() = runTest {
217-
val appCheckTokenResult = Arb.dataConnect.appCheckTokenResult().next()
239+
val appCheckTokenResult =
240+
Arb.dataConnect.appCheckTokenResult(accessToken = Arb.dataConnect.accessToken()).next()
218241
val dataConnectAppCheck: DataConnectAppCheck = mockk {
219242
coEvery { getToken(any()) } returns appCheckTokenResult
220243
}

firebase-dataconnect/src/test/kotlin/com/google/firebase/dataconnect/testutil/property/arbitrary/arbs.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,5 +339,5 @@ internal fun DataConnectArb.authTokenResult(
339339
): Arb<GetAuthTokenResult> = Arb.bind(accessToken, authUid, ::GetAuthTokenResult)
340340

341341
internal fun DataConnectArb.appCheckTokenResult(
342-
accessToken: Arb<String> = accessToken()
342+
accessToken: Arb<String?> = accessToken().orNull(nullProbability = 0.33),
343343
): Arb<GetAppCheckTokenResult> = accessToken.map(::GetAppCheckTokenResult)

0 commit comments

Comments
 (0)