Skip to content

Commit eab031b

Browse files
committed
p
1 parent 4b4d9ba commit eab031b

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererClientAdaptor.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ open class CodeWhispererClientAdaptorImpl(override val project: Project) : CodeW
287287
return (getDelegate() as Lazy<*>).isInitialized()
288288
}
289289

290-
private fun bearerClient(): CodeWhispererRuntimeClient =
290+
fun bearerClient(): CodeWhispererRuntimeClient =
291291
ToolkitConnectionManager.getInstance(project).activeConnectionForFeature(QConnection.getInstance())?.getConnectionSettings()
292292
?.awsClient<CodeWhispererRuntimeClient>()
293293
?: throw Exception("attempt to get bearer client while there is no valid credential")

plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererClientAdaptorTest.kt

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,15 @@ import software.aws.toolkits.jetbrains.core.credentials.ManagedSsoProfile
7474
import software.aws.toolkits.jetbrains.core.credentials.MockCredentialManagerRule
7575
import software.aws.toolkits.jetbrains.core.credentials.MockToolkitAuthManagerRule
7676
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
77+
import software.aws.toolkits.jetbrains.core.credentials.logoutFromSsoConnection
7778
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
79+
import software.aws.toolkits.jetbrains.core.credentials.sono.Q_SCOPES
7880
import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_REGION
7981
import software.aws.toolkits.jetbrains.services.amazonq.FEATURE_EVALUATION_PRODUCT_NAME
8082
import software.aws.toolkits.jetbrains.services.codewhisperer.CodeWhispererTestUtil.metadata
8183
import software.aws.toolkits.jetbrains.services.codewhisperer.CodeWhispererTestUtil.pythonRequest
8284
import software.aws.toolkits.jetbrains.services.codewhisperer.CodeWhispererTestUtil.pythonResponseWithToken
8385
import software.aws.toolkits.jetbrains.services.codewhisperer.CodeWhispererTestUtil.sdkHttpResponse
84-
import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWhispererClientAdaptor
8586
import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWhispererClientAdaptorImpl
8687
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererCustomization
8788
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator
@@ -112,7 +113,7 @@ class CodeWhispererClientAdaptorTest {
112113
private lateinit var bearerClient: CodeWhispererRuntimeClient
113114
private lateinit var ssoClient: SsoOidcClient
114115

115-
private lateinit var sut: CodeWhispererClientAdaptor
116+
private lateinit var sut: CodeWhispererClientAdaptorImpl
116117
private lateinit var connectionManager: ToolkitConnectionManager
117118
private var isTelemetryEnabledDefault: Boolean = false
118119

@@ -167,13 +168,38 @@ class CodeWhispererClientAdaptorTest {
167168
}
168169

169170
@Test
170-
fun `should throw if there is no valid credential`() {
171+
fun `should throw if there is no valid credential, otherwise return codewhispererRuntimeClient`() {
172+
val connectionManager = DefaultToolkitConnectionManager()
171173
projectRule.project.replaceService(ToolkitConnectionManager::class.java, DefaultToolkitConnectionManager(), disposableRule.disposable)
174+
172175
assertThat(ToolkitConnectionManager.getInstance(projectRule.project).activeConnectionForFeature(QConnection.getInstance())).isNull()
176+
assertThrows<Exception>("attempt to get bearer client while there is no valid credential") {
177+
sut.bearerClient()
178+
}
173179

180+
val qConnection = authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), Q_SCOPES))
181+
connectionManager.switchConnection(qConnection)
182+
assertThat(connectionManager.activeConnectionForFeature(QConnection.getInstance()))
183+
.isNotNull
184+
.isEqualTo(qConnection)
185+
assertThat(sut.bearerClient())
186+
.isNotNull
187+
.isInstanceOf(CodeWhispererRuntimeClient::class.java)
188+
189+
logoutFromSsoConnection(projectRule.project, qConnection as AwsBearerTokenConnection)
190+
assertThat(connectionManager.activeConnectionForFeature(QConnection.getInstance())).isNull()
174191
assertThrows<Exception>("attempt to get bearer client while there is no valid credential") {
175-
sut.listFeatureEvaluations()
192+
sut.bearerClient()
176193
}
194+
195+
val anotherQConnection = authManagerRule.createConnection(ManagedSsoProfile("us-east-1", aString(), Q_SCOPES))
196+
connectionManager.switchConnection(anotherQConnection)
197+
assertThat(connectionManager.activeConnectionForFeature(QConnection.getInstance()))
198+
.isNotNull
199+
.isEqualTo(anotherQConnection)
200+
assertThat(sut.bearerClient())
201+
.isNotNull
202+
.isInstanceOf(CodeWhispererRuntimeClient::class.java)
177203
}
178204

179205
@Test

0 commit comments

Comments
 (0)