Skip to content

Commit 00102b7

Browse files
committed
tests pass together
1 parent 44c4173 commit 00102b7

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/ToolkitAuthManager.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ fun reauthConnectionIfNeeded(
275275
source = source,
276276
)
277277
}
278+
hasSeenFirstNetworkError = false
278279
} catch (e: Exception) {
279280
if (isReAuth) {
280281
val result = if (e is ProcessCanceledException) Result.Cancelled else Result.Failed
@@ -326,7 +327,7 @@ fun maybeReauthProviderIfNeeded(
326327
return runUnderProgressIfNeeded(project, AwsCoreBundle.message("credentials.refreshing"), true) {
327328
tokenProvider.resolveToken()
328329
BearerTokenProviderListener.notifyCredUpdate(tokenProvider.id)
329-
hasNotifiedNetworkErrorOnce = false
330+
hasSeenFirstNetworkError = false
330331
return@runUnderProgressIfNeeded false
331332
}
332333
} catch (e: Exception) {
@@ -339,8 +340,8 @@ fun maybeReauthProviderIfNeeded(
339340
}
340341
e is UnknownHostException || e.message?.contains("Unable to execute HTTP request") == true -> {
341342
getLogger<ToolkitAuthManager>().warn(e) { "Failed to refresh token" }
342-
if (!hasNotifiedNetworkErrorOnce) {
343-
hasNotifiedNetworkErrorOnce = true
343+
if (!hasSeenFirstNetworkError) {
344+
hasSeenFirstNetworkError = true
344345
notifyInfo(
345346
message("general.auth.network.error"),
346347
message("general.auth.network.error.message"),
@@ -431,7 +432,7 @@ private fun recordAddConnection(
431432
}
432433
}
433434

434-
private var hasNotifiedNetworkErrorOnce = false
435+
private var hasSeenFirstNetworkError = false
435436

436437
data class ConnectionMetadata(
437438
val sourceId: String? = null,

plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/ToolkitAuthManagerTest.kt

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package software.aws.toolkits.jetbrains.core.credentials
55

66
import com.intellij.openapi.project.Project
77
import com.intellij.testFramework.ApplicationExtension
8+
import io.mockk.clearAllMocks
89
import org.junit.jupiter.api.BeforeEach
910
import org.junit.jupiter.api.Test
1011
import org.junit.jupiter.api.TestInstance
@@ -13,15 +14,20 @@ import org.mockito.kotlin.never
1314
import io.mockk.mockkStatic
1415
import io.mockk.verify
1516
import io.mockk.every
17+
import io.mockk.just
18+
import io.mockk.mockkObject
19+
import io.mockk.runs
1620
import org.mockito.kotlin.verify
1721
import org.mockito.kotlin.whenever
1822
import org.junit.jupiter.api.Assertions.*
1923
import org.junit.jupiter.api.extension.ExtendWith
2024
import org.mockito.kotlin.doThrow
25+
import org.mockito.kotlin.reset
2126
import software.amazon.awssdk.auth.token.credentials.SdkToken
2227
import software.aws.toolkits.jetbrains.core.credentials.sso.DeviceAuthorizationGrantToken
2328
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenAuthState
2429
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProvider
30+
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProviderListener
2531
import software.aws.toolkits.jetbrains.utils.notifyInfo
2632
import software.aws.toolkits.resources.AwsCoreBundle.message
2733
import java.net.UnknownHostException
@@ -34,22 +40,23 @@ class ToolkitAuthManagerTest {
3440
private lateinit var project: Project
3541
private lateinit var tokenProvider: BearerTokenProvider
3642
private var reauthCallCount = 0
37-
private var notificationShown = false
3843

3944
@BeforeEach
4045
fun setUp() {
4146
project = mock()
4247
tokenProvider = mock()
4348
reauthCallCount = 0
44-
notificationShown = false
49+
val field = Class.forName("software.aws.toolkits.jetbrains.core.credentials.ToolkitAuthManagerKt")
50+
.getDeclaredField("hasNotifiedNetworkErrorOnce")
51+
field.isAccessible = true
52+
field.set(null, false)
4553

46-
// Mock the notifyInfo function
54+
mockkObject(BearerTokenProviderListener)
4755
mockkStatic("software.aws.toolkits.jetbrains.utils.NotificationUtilsKt")
4856
every {
4957
notifyInfo(any(), any(), any())
50-
} answers {
51-
notificationShown = true
52-
}
58+
} just runs
59+
every { BearerTokenProviderListener.notifyCredUpdate(any<String>()) } just runs
5360
}
5461

5562

@@ -68,8 +75,7 @@ class ToolkitAuthManagerTest {
6875

6976
assertFalse(result)
7077
assertEquals(0, reauthCallCount)
71-
assertTrue(notificationShown)
72-
verify {
78+
verify(exactly = 1){
7379
notifyInfo(
7480
message("general.auth.network.error"),
7581
message("general.auth.network.error.message"),
@@ -92,9 +98,6 @@ class ToolkitAuthManagerTest {
9298
tokenProvider
9399
) { _ -> reauthCallCount++ }
94100

95-
// Reset our tracking variable
96-
notificationShown = false
97-
98101
// Second call - should not show notification
99102
val result = maybeReauthProviderIfNeeded(
100103
project,
@@ -104,7 +107,6 @@ class ToolkitAuthManagerTest {
104107

105108
assertFalse(result)
106109
assertEquals(0, reauthCallCount)
107-
assertFalse(notificationShown)
108110
verify(exactly = 1) {
109111
notifyInfo(
110112
message("general.auth.network.error"),
@@ -129,7 +131,10 @@ class ToolkitAuthManagerTest {
129131
tokenProvider
130132
) { _ -> reauthCallCount++ }
131133

134+
reset(tokenProvider)
135+
132136
// Now simulate successful refresh
137+
whenever(tokenProvider.state()).thenReturn(BearerTokenAuthState.NEEDS_REFRESH)
133138
whenever(tokenProvider.resolveToken()).thenReturn(
134139
DeviceAuthorizationGrantToken(
135140
startUrl = "https://example.com",
@@ -145,10 +150,9 @@ class ToolkitAuthManagerTest {
145150
tokenProvider
146151
) { _ -> reauthCallCount++ }
147152

148-
// Reset tracking
149-
notificationShown = false
150-
153+
reset(tokenProvider)
151154
// Now trigger another network error - should show notification again
155+
whenever(tokenProvider.state()).thenReturn(BearerTokenAuthState.NEEDS_REFRESH)
152156
doThrow(RuntimeException("Unable to execute HTTP request"))
153157
.`when`(tokenProvider)
154158
.resolveToken()
@@ -158,7 +162,6 @@ class ToolkitAuthManagerTest {
158162
tokenProvider
159163
) { _ -> reauthCallCount++ }
160164

161-
assertTrue(notificationShown)
162165
verify(exactly = 2) {
163166
notifyInfo(
164167
message("general.auth.network.error"),

0 commit comments

Comments
 (0)