@@ -5,6 +5,7 @@ package software.aws.toolkits.jetbrains.services.amazonq.lsp.auth
55
66import com.intellij.openapi.Disposable
77import com.intellij.openapi.components.serviceIfCreated
8+ import com.intellij.openapi.project.Project
89import com.intellij.testFramework.HeavyPlatformTestCase
910import com.intellij.testFramework.replaceService
1011import com.intellij.util.messages.MessageBus
@@ -15,6 +16,7 @@ import io.mockk.just
1516import io.mockk.mockk
1617import io.mockk.mockkStatic
1718import io.mockk.runs
19+ import io.mockk.spyk
1820import io.mockk.verify
1921import kotlinx.coroutines.test.advanceUntilIdle
2022import kotlinx.coroutines.test.runTest
@@ -43,6 +45,7 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
4345 private const val TEST_ACCESS_TOKEN = " test-access-token"
4446 }
4547
48+ private lateinit var spyProject: Project
4649 private lateinit var mockLanguageServer: AmazonQLanguageServer
4750 private lateinit var mockEncryptionManager: JwtEncryptionManager
4851 private lateinit var mockConnectionManager: ToolkitConnectionManager
@@ -51,6 +54,7 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
5154
5255 override fun setUp () {
5356 super .setUp()
57+ spyProject = spyk(project)
5458 setupMockLspService()
5559 setupMockMessageBus()
5660 setupMockConnectionManager()
@@ -82,16 +86,16 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
8286 mockLanguageServer.updateConfiguration(any())
8387 } returns CompletableFuture .completedFuture(LspServerConfigurations (emptyList()))
8488
85- every { project .getService(AmazonQLspService ::class .java) } returns mockLspService
86- every { project .serviceIfCreated<AmazonQLspService >() } returns mockLspService
89+ every { spyProject .getService(AmazonQLspService ::class .java) } returns mockLspService
90+ every { spyProject .serviceIfCreated<AmazonQLspService >() } returns mockLspService
8791 }
8892
8993 private fun setupMockMessageBus () {
9094 val messageBus = mockk<MessageBus >()
9195 val mockConnection = mockk<MessageBusConnection > {
9296 every { subscribe(any(), any()) } just runs
9397 }
94- every { project .messageBus } returns messageBus
98+ every { spyProject .messageBus } returns messageBus
9599 every { messageBus.connect(any<Disposable >()) } returns mockConnection
96100 }
97101
@@ -101,7 +105,7 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
101105 every { activeConnectionForFeature(any()) } returns mockConnection
102106 every { connectionStateForFeature(any()) } returns BearerTokenAuthState .AUTHORIZED
103107 }
104- project .replaceService(ToolkitConnectionManager ::class .java, mockConnectionManager, project )
108+ spyProject .replaceService(ToolkitConnectionManager ::class .java, mockConnectionManager, spyProject )
105109 mockkStatic(" software.aws.toolkits.jetbrains.utils.FunctionUtilsKt" )
106110 // these set so init doesn't always emit
107111 every { isQConnected(any()) } returns false
@@ -141,7 +145,7 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
141145 }
142146
143147 fun testActiveConnectionChangedUpdatesTokenWhenConnectionIdMatchesQConnection () = runTest {
144- sut = DefaultAuthCredentialsService (project , mockEncryptionManager, this )
148+ sut = DefaultAuthCredentialsService (spyProject , mockEncryptionManager, this )
145149 val newConnection = createMockConnection(" new-token" , " connection-id" )
146150 every { mockConnection.id } returns " connection-id"
147151
@@ -152,7 +156,7 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
152156 }
153157
154158 fun testActiveConnectionChangedDoesNotUpdateTokenWhenConnectionIdDiffers () = runTest {
155- sut = DefaultAuthCredentialsService (project , mockEncryptionManager, this )
159+ sut = DefaultAuthCredentialsService (spyProject , mockEncryptionManager, this )
156160 val newConnection = createMockConnection(" new-token" , " different-id" )
157161 every { mockConnection.id } returns " q-connection-id"
158162
@@ -163,7 +167,7 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
163167 }
164168
165169 fun testOnChangeUpdatesTokenWithNewConnection () = runTest {
166- sut = DefaultAuthCredentialsService (project , mockEncryptionManager, this )
170+ sut = DefaultAuthCredentialsService (spyProject , mockEncryptionManager, this )
167171 setupMockConnectionManager(" updated-token" )
168172
169173 sut.onProviderChange(" providerId" , listOf (" new-scope" ))
@@ -173,28 +177,28 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
173177 }
174178
175179 fun testInitDoesNotUpdateTokenWhenQIsNotConnected () = runTest {
176- every { isQConnected(project ) } returns false
177- every { isQExpired(project ) } returns false
180+ every { isQConnected(spyProject ) } returns false
181+ every { isQExpired(spyProject ) } returns false
178182
179- sut = DefaultAuthCredentialsService (project , mockEncryptionManager, this )
183+ sut = DefaultAuthCredentialsService (spyProject , mockEncryptionManager, this )
180184
181185 advanceUntilIdle()
182186 verify(exactly = 0 ) { mockLanguageServer.updateTokenCredentials(any()) }
183187 }
184188
185189 fun testInitDoesNotUpdateTokenWhenQIsExpired () = runTest {
186- every { isQConnected(project ) } returns true
187- every { isQExpired(project ) } returns true
190+ every { isQConnected(spyProject ) } returns true
191+ every { isQExpired(spyProject ) } returns true
188192
189- sut = DefaultAuthCredentialsService (project , mockEncryptionManager, this )
193+ sut = DefaultAuthCredentialsService (spyProject , mockEncryptionManager, this )
190194
191195 advanceUntilIdle()
192196 verify(exactly = 0 ) { mockLanguageServer.updateTokenCredentials(any()) }
193197 }
194198
195199 fun testUpdateTokenCredentialsUnencryptedSuccess () = runTest {
196200 val isEncrypted = false
197- sut = DefaultAuthCredentialsService (project , mockEncryptionManager, this )
201+ sut = DefaultAuthCredentialsService (spyProject , mockEncryptionManager, this )
198202
199203 sut.updateTokenCredentials(mockConnection, isEncrypted)
200204
@@ -213,7 +217,7 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
213217 }
214218
215219 fun testUpdateTokenCredentialsEncryptedSuccess () = runTest {
216- sut = DefaultAuthCredentialsService (project , mockEncryptionManager, this )
220+ sut = DefaultAuthCredentialsService (spyProject , mockEncryptionManager, this )
217221
218222 val encryptedToken = " encryptedToken"
219223 val isEncrypted = true
@@ -237,7 +241,7 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
237241 }
238242
239243 fun testDeleteTokenCredentialsSuccess () = runTest {
240- sut = DefaultAuthCredentialsService (project , mockEncryptionManager, this )
244+ sut = DefaultAuthCredentialsService (spyProject , mockEncryptionManager, this )
241245
242246 every { mockLanguageServer.deleteTokenCredentials() } returns Unit
243247
@@ -250,7 +254,7 @@ class DefaultAuthCredentialsServiceTest : HeavyPlatformTestCase() {
250254 fun testInitResultsInTokenUpdate () = runTest {
251255 every { isQConnected(any()) } returns true
252256 every { isQExpired(any()) } returns false
253- sut = DefaultAuthCredentialsService (project , mockEncryptionManager, this )
257+ sut = DefaultAuthCredentialsService (spyProject , mockEncryptionManager, this )
254258
255259 advanceUntilIdle()
256260 verify(exactly = 1 ) { mockLanguageServer.updateTokenCredentials(any()) }
0 commit comments