@@ -17,11 +17,18 @@ package com.amplifyframework.auth.cognito.helpers
17
17
18
18
import android.app.Activity
19
19
import android.content.Context
20
+ import androidx.credentials.CreatePublicKeyCredentialRequest
20
21
import androidx.credentials.CreatePublicKeyCredentialResponse
21
22
import androidx.credentials.CredentialManager
22
23
import androidx.credentials.GetCredentialRequest
23
24
import androidx.credentials.GetCredentialResponse
24
25
import androidx.credentials.PublicKeyCredential
26
+ import androidx.credentials.exceptions.domerrors.NotSupportedError
27
+ import androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialDomException
28
+ import androidx.credentials.exceptions.publickeycredential.GetPublicKeyCredentialDomException
29
+ import com.amplifyframework.auth.cognito.exceptions.webauthn.WebAuthnNotSupportedException
30
+ import io.kotest.assertions.throwables.shouldThrow
31
+ import io.kotest.assertions.throwables.shouldThrowWithMessage
25
32
import io.kotest.matchers.shouldBe
26
33
import io.mockk.coEvery
27
34
import io.mockk.coVerify
@@ -31,6 +38,7 @@ import kotlinx.coroutines.test.runTest
31
38
import org.junit.Test
32
39
import org.junit.runner.RunWith
33
40
import org.robolectric.RobolectricTestRunner
41
+ import org.robolectric.annotation.Config
34
42
35
43
@RunWith(RobolectricTestRunner ::class )
36
44
class WebAuthnHelperTest {
@@ -72,9 +80,37 @@ class WebAuthnHelperTest {
72
80
}
73
81
}
74
82
83
+ @Test
84
+ fun `throws WebAuthnNotSupportedException for NotSupported error for get` () = runTest {
85
+ coEvery { credentialManager.getCredential(any(), any<GetCredentialRequest >()) } throws
86
+ GetPublicKeyCredentialDomException (NotSupportedError ())
87
+
88
+ shouldThrow<WebAuthnNotSupportedException > {
89
+ helper.getCredential(requestJson, mockk())
90
+ }
91
+ }
92
+
75
93
@Test
76
94
fun `creates credential` () = runTest {
77
95
val result = helper.createCredential(requestJson, mockk())
78
96
result shouldBe responseJson
79
97
}
98
+
99
+ @Test
100
+ fun `throws WebAuthnNotSupportedException for NotSupported error for create` () = runTest {
101
+ coEvery { credentialManager.createCredential(any(), any<CreatePublicKeyCredentialRequest >()) } throws
102
+ CreatePublicKeyCredentialDomException (NotSupportedError ())
103
+
104
+ shouldThrow<WebAuthnNotSupportedException > {
105
+ helper.createCredential(requestJson, mockk())
106
+ }
107
+ }
108
+
109
+ @Config(sdk = [27 ])
110
+ @Test
111
+ fun `throws WebAuthnNotSupportedException for devices below API 28` () = runTest {
112
+ shouldThrowWithMessage<WebAuthnNotSupportedException >(" Passkeys are only supported on API 28 and above" ) {
113
+ helper.createCredential(requestJson, mockk())
114
+ }
115
+ }
80
116
}
0 commit comments