@@ -49,8 +49,9 @@ class Fido2IntentUtilsTest {
49
49
unmockkObject(PendingIntentHandler .Companion )
50
50
}
51
51
52
+ @Suppress(" MaxLineLength" )
52
53
@Test
53
- fun `getFido2CredentialRequestOrNull should return Fido2CredentialRequest when present` () {
54
+ fun `getFido2CreateCredentialRequestOrNull should return Fido2CreateCredentialRequest when present` () {
54
55
val intent = mockk<Intent > {
55
56
every { getStringExtra(EXTRA_KEY_USER_ID ) } returns " mockUserId"
56
57
}
@@ -83,14 +84,59 @@ class Fido2IntentUtilsTest {
83
84
packageName = mockCallingAppInfo.packageName,
84
85
signingInfo = mockCallingAppInfo.signingInfo,
85
86
origin = mockCallingAppInfo.origin,
86
- isUserVerified = false ,
87
+ isUserVerified = null ,
87
88
),
88
89
createRequest,
89
90
)
90
91
}
91
92
93
+ @Suppress(" MaxLineLength" )
92
94
@Test
93
- fun `getFido2CredentialRequestOrNull should return null when build version is below 34` () {
95
+ fun `getFido2CreateCredentialRequestOrNull should set isUserVerified when biometric prompt result is present` () {
96
+ val intent = mockk<Intent > {
97
+ every { getStringExtra(EXTRA_KEY_USER_ID ) } returns " mockUserId"
98
+ }
99
+ val mockCallingRequest = mockk<CreatePublicKeyCredentialRequest > {
100
+ every { requestJson } returns " requestJson"
101
+ every { clientDataHash } returns byteArrayOf(0 )
102
+ every { preferImmediatelyAvailableCredentials } returns false
103
+ every { origin } returns " mockOrigin"
104
+ every { isAutoSelectAllowed } returns true
105
+ }
106
+ val mockCallingAppInfo = CallingAppInfo (
107
+ packageName = " mockPackageName" ,
108
+ signingInfo = SigningInfo (),
109
+ origin = " mockOrigin" ,
110
+ )
111
+ val mockProviderRequest = ProviderCreateCredentialRequest (
112
+ callingRequest = mockCallingRequest,
113
+ callingAppInfo = mockCallingAppInfo,
114
+ biometricPromptResult = mockk {
115
+ every { isSuccessful } returns true
116
+ },
117
+ )
118
+
119
+ every {
120
+ PendingIntentHandler .retrieveProviderCreateCredentialRequest(intent)
121
+ } returns mockProviderRequest
122
+
123
+ val createRequest = intent.getFido2CreateCredentialRequestOrNull()
124
+ assertEquals(
125
+ Fido2CreateCredentialRequest (
126
+ userId = " mockUserId" ,
127
+ requestJson = mockCallingRequest.requestJson,
128
+ packageName = mockCallingAppInfo.packageName,
129
+ signingInfo = mockCallingAppInfo.signingInfo,
130
+ origin = mockCallingAppInfo.origin,
131
+ isUserVerified = true ,
132
+ ),
133
+ createRequest,
134
+ )
135
+ }
136
+
137
+ @Suppress(" MaxLineLength" )
138
+ @Test
139
+ fun `getFido2CreateCredentialRequestOrNull should return null when build version is below 34` () {
94
140
val intent = mockk<Intent >()
95
141
96
142
every { isBuildVersionBelow(34 ) } returns true
@@ -100,7 +146,7 @@ class Fido2IntentUtilsTest {
100
146
101
147
@Suppress(" MaxLineLength" )
102
148
@Test
103
- fun `getFido2CredentialRequestOrNull should return null when intent is not a provider create credential request` () {
149
+ fun `getFido2CreateCredentialRequestOrNull should return null when intent is not a provider create credential request` () {
104
150
val intent = mockk<Intent >()
105
151
106
152
every {
@@ -112,7 +158,7 @@ class Fido2IntentUtilsTest {
112
158
113
159
@Suppress(" MaxLineLength" )
114
160
@Test
115
- fun `getFido2CredentialRequestOrNull should return null when calling request is not a public key credential create request` () {
161
+ fun `getFido2CreateCredentialRequestOrNull should return null when calling request is not a public key credential create request` () {
116
162
val intent = mockk<Intent >()
117
163
val mockCallingRequest = mockk<CreatePasswordRequest >()
118
164
val mockCallingAppInfo = CallingAppInfo (
@@ -133,7 +179,7 @@ class Fido2IntentUtilsTest {
133
179
134
180
@Suppress(" MaxLineLength" )
135
181
@Test
136
- fun `getFido2CredentialRequestOrNull should return null when user id is not present in extras` () {
182
+ fun `getFido2CreateCredentialRequestOrNull should return null when user id is not present in extras` () {
137
183
val intent = mockk<Intent > {
138
184
every { getStringExtra(EXTRA_KEY_USER_ID ) } returns null
139
185
}
@@ -200,7 +246,56 @@ class Fido2IntentUtilsTest {
200
246
packageName = mockCallingAppInfo.packageName,
201
247
signingInfo = mockCallingAppInfo.signingInfo,
202
248
origin = mockCallingAppInfo.origin,
203
- isUserVerified = false ,
249
+ isUserVerified = null ,
250
+ ),
251
+ assertionRequest,
252
+ )
253
+ }
254
+
255
+ @Suppress(" MaxLineLength" )
256
+ @Test
257
+ fun `getFido2AssertionRequestOrNull should set isUserVerified when biometric prompt result is present` () {
258
+ val intent = mockk<Intent > {
259
+ every { getStringExtra(EXTRA_KEY_USER_ID ) } returns " mockUserId"
260
+ every { getStringExtra(EXTRA_KEY_CIPHER_ID ) } returns " mockCipherId"
261
+ every { getStringExtra(EXTRA_KEY_CREDENTIAL_ID ) } returns " mockCredentialId"
262
+ }
263
+ val mockOption = GetPublicKeyCredentialOption (
264
+ requestJson = " requestJson" ,
265
+ clientDataHash = byteArrayOf(0 ),
266
+ allowedProviders = emptySet(),
267
+ )
268
+ val mockCallingAppInfo = CallingAppInfo (
269
+ packageName = " mockPackageName" ,
270
+ signingInfo = SigningInfo (),
271
+ origin = " mockOrigin" ,
272
+ )
273
+ val mockProviderGetCredentialRequest = ProviderGetCredentialRequest (
274
+ credentialOptions = listOf (mockOption),
275
+ callingAppInfo = mockCallingAppInfo,
276
+ biometricPromptResult = mockk {
277
+ every { isSuccessful } returns true
278
+ },
279
+ )
280
+
281
+ every {
282
+ PendingIntentHandler .retrieveProviderGetCredentialRequest(intent)
283
+ } returns mockProviderGetCredentialRequest
284
+
285
+ val assertionRequest = intent.getFido2AssertionRequestOrNull()
286
+
287
+ assertNotNull(assertionRequest)
288
+ assertEquals(
289
+ Fido2CredentialAssertionRequest (
290
+ userId = " mockUserId" ,
291
+ cipherId = " mockCipherId" ,
292
+ credentialId = " mockCredentialId" ,
293
+ requestJson = mockOption.requestJson,
294
+ clientDataHash = mockOption.clientDataHash,
295
+ packageName = mockCallingAppInfo.packageName,
296
+ signingInfo = mockCallingAppInfo.signingInfo,
297
+ origin = mockCallingAppInfo.origin,
298
+ isUserVerified = true ,
204
299
),
205
300
assertionRequest,
206
301
)
0 commit comments