@@ -74,14 +74,15 @@ import software.aws.toolkits.jetbrains.core.credentials.ManagedSsoProfile
7474import software.aws.toolkits.jetbrains.core.credentials.MockCredentialManagerRule
7575import software.aws.toolkits.jetbrains.core.credentials.MockToolkitAuthManagerRule
7676import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
77+ import software.aws.toolkits.jetbrains.core.credentials.logoutFromSsoConnection
7778import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
79+ import software.aws.toolkits.jetbrains.core.credentials.sono.Q_SCOPES
7880import software.aws.toolkits.jetbrains.core.credentials.sono.SONO_REGION
7981import software.aws.toolkits.jetbrains.services.amazonq.FEATURE_EVALUATION_PRODUCT_NAME
8082import software.aws.toolkits.jetbrains.services.codewhisperer.CodeWhispererTestUtil.metadata
8183import software.aws.toolkits.jetbrains.services.codewhisperer.CodeWhispererTestUtil.pythonRequest
8284import software.aws.toolkits.jetbrains.services.codewhisperer.CodeWhispererTestUtil.pythonResponseWithToken
8385import software.aws.toolkits.jetbrains.services.codewhisperer.CodeWhispererTestUtil.sdkHttpResponse
84- import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWhispererClientAdaptor
8586import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWhispererClientAdaptorImpl
8687import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererCustomization
8788import 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