Skip to content

Commit c9d5896

Browse files
committed
Changed the test appraoch
1 parent 696b2d6 commit c9d5896

File tree

1 file changed

+31
-25
lines changed

1 file changed

+31
-25
lines changed

auth0/src/test/java/com/auth0/android/provider/WebAuthProviderTest.kt

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import android.app.Activity
44
import android.content.Context
55
import android.content.Intent
66
import android.net.Uri
7-
import android.os.Looper
87
import android.os.Parcelable
98
import androidx.test.espresso.intent.matcher.IntentMatchers
109
import androidx.test.espresso.intent.matcher.UriMatchers
@@ -28,6 +27,7 @@ import com.auth0.android.request.internal.ThreadSwitcherShadow
2827
import com.auth0.android.result.Credentials
2928
import com.auth0.android.util.AuthenticationAPIMockServer
3029
import com.auth0.android.util.SSLTestUtils
30+
import org.mockito.kotlin.*
3131
import kotlinx.coroutines.Dispatchers
3232
import kotlinx.coroutines.ExperimentalCoroutinesApi
3333
import kotlinx.coroutines.launch
@@ -53,25 +53,15 @@ import org.mockito.Mock
5353
import org.mockito.Mockito
5454
import org.mockito.Mockito.`when`
5555
import org.mockito.MockitoAnnotations
56-
import org.mockito.kotlin.KArgumentCaptor
57-
import org.mockito.kotlin.any
58-
import org.mockito.kotlin.argumentCaptor
59-
import org.mockito.kotlin.doThrow
60-
import org.mockito.kotlin.eq
61-
import org.mockito.kotlin.mock
62-
import org.mockito.kotlin.never
63-
import org.mockito.kotlin.verify
6456
import org.robolectric.Robolectric
6557
import org.robolectric.RobolectricTestRunner
66-
import org.robolectric.Shadows.shadowOf
6758
import org.robolectric.annotation.Config
6859
import org.robolectric.shadows.ShadowLooper
6960
import java.io.ByteArrayInputStream
7061
import java.io.InputStream
7162
import java.nio.file.Files
7263
import java.nio.file.Paths
73-
import java.util.Collections
74-
import java.util.Date
64+
import java.util.*
7565

7666
@RunWith(RobolectricTestRunner::class)
7767
@Config(shadows = [ThreadSwitcherShadow::class])
@@ -1551,11 +1541,22 @@ public class WebAuthProviderTest {
15511541
public fun shouldFailToResumeLoginWhenRSAKeyIsMissingFromJWKSet() {
15521542
val pkce = Mockito.mock(PKCE::class.java)
15531543
`when`(pkce.codeChallenge).thenReturn("challenge")
1554-
val mockAPI = AuthenticationAPIMockServer()
1555-
mockAPI.willReturnEmptyJsonWebKeys()
1544+
val networkingClient: NetworkingClient = Mockito.spy(DefaultClient())
15561545
val authCallback = mock<Callback<Credentials, AuthenticationException>>()
1557-
val proxyAccount: Auth0 = Auth0.getInstance(JwtTestUtils.EXPECTED_AUDIENCE, mockAPI.domain)
1558-
proxyAccount.networkingClient = SSLTestUtils.testClient
1546+
val proxyAccount: Auth0 = Auth0.getInstance(JwtTestUtils.EXPECTED_AUDIENCE, JwtTestUtils.EXPECTED_BASE_DOMAIN)
1547+
proxyAccount.networkingClient = networkingClient
1548+
1549+
// Stub JWKS response with empty keys
1550+
val emptyJwksJson = """{
1551+
"keys": []
1552+
}"""
1553+
val jwksInputStream: InputStream = ByteArrayInputStream(emptyJwksJson.toByteArray())
1554+
val jwksResponse = ServerResponse(200, jwksInputStream, emptyMap())
1555+
Mockito.doReturn(jwksResponse).`when`(networkingClient).load(
1556+
eq(proxyAccount.getDomainUrl() + ".well-known/jwks.json"),
1557+
any()
1558+
)
1559+
15591560
login(proxyAccount)
15601561
.withState("1234567890")
15611562
.withNonce(JwtTestUtils.EXPECTED_NONCE)
@@ -1590,9 +1591,9 @@ public class WebAuthProviderTest {
15901591
)
15911592
Mockito.doAnswer {
15921593
callbackCaptor.firstValue.onSuccess(codeCredentials)
1594+
null
15931595
}.`when`(pkce).getToken(eq("1234"), callbackCaptor.capture())
15941596
Assert.assertTrue(resume(intent))
1595-
mockAPI.takeRequest()
15961597
ShadowLooper.idleMainLooper()
15971598
verify(authCallback).onFailure(authExceptionCaptor.capture())
15981599
val error = authExceptionCaptor.firstValue
@@ -1608,7 +1609,6 @@ public class WebAuthProviderTest {
16081609
error.cause?.message,
16091610
`is`("Could not find a public key for kid \"key123\"")
16101611
)
1611-
mockAPI.shutdown()
16121612
}
16131613

16141614
@Test
@@ -1682,11 +1682,20 @@ public class WebAuthProviderTest {
16821682
public fun shouldFailToResumeLoginWhenKeyIdIsMissingFromIdTokenHeader() {
16831683
val pkce = Mockito.mock(PKCE::class.java)
16841684
`when`(pkce.codeChallenge).thenReturn("challenge")
1685-
val mockAPI = AuthenticationAPIMockServer()
1686-
mockAPI.willReturnValidJsonWebKeys()
1685+
val networkingClient: NetworkingClient = Mockito.spy(DefaultClient())
16871686
val authCallback = mock<Callback<Credentials, AuthenticationException>>()
1688-
val proxyAccount: Auth0 = Auth0.getInstance(JwtTestUtils.EXPECTED_AUDIENCE, mockAPI.domain)
1689-
proxyAccount.networkingClient = SSLTestUtils.testClient
1687+
val proxyAccount: Auth0 = Auth0.getInstance(JwtTestUtils.EXPECTED_AUDIENCE, JwtTestUtils.EXPECTED_BASE_DOMAIN)
1688+
proxyAccount.networkingClient = networkingClient
1689+
1690+
// Stub JWKS response with valid keys
1691+
val encoded = Files.readAllBytes(Paths.get("src/test/resources/rsa_jwks.json"))
1692+
val jwksInputStream: InputStream = ByteArrayInputStream(encoded)
1693+
val jwksResponse = ServerResponse(200, jwksInputStream, emptyMap())
1694+
Mockito.doReturn(jwksResponse).`when`(networkingClient).load(
1695+
eq(proxyAccount.getDomainUrl() + ".well-known/jwks.json"),
1696+
any()
1697+
)
1698+
16901699
login(proxyAccount)
16911700
.withState("1234567890")
16921701
.withNonce("abcdefg")
@@ -1723,7 +1732,6 @@ public class WebAuthProviderTest {
17231732
null
17241733
}.`when`(pkce).getToken(eq("1234"), callbackCaptor.capture())
17251734
Assert.assertTrue(resume(intent))
1726-
mockAPI.takeRequest()
17271735
ShadowLooper.idleMainLooper()
17281736
verify(authCallback).onFailure(authExceptionCaptor.capture())
17291737
val error = authExceptionCaptor.firstValue
@@ -1739,7 +1747,6 @@ public class WebAuthProviderTest {
17391747
error.cause?.message,
17401748
`is`("Could not find a public key for kid \"null\"")
17411749
)
1742-
mockAPI.shutdown()
17431750
}
17441751

17451752
@Test
@@ -1803,7 +1810,6 @@ public class WebAuthProviderTest {
18031810
proxyAccount.networkingClient = SSLTestUtils.testClient
18041811
val authCallback = mock<Callback<Credentials, AuthenticationException>>()
18051812
login(proxyAccount)
1806-
.withIdTokenVerificationIssuer("")
18071813
.withIdTokenVerificationIssuer("")
18081814
.withPKCE(pkce)
18091815
.start(activity, authCallback)

0 commit comments

Comments
 (0)