From 5670162d623d815498d2c93d899bd9bc9a8ce5a5 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Fri, 20 Dec 2024 11:07:54 -0800 Subject: [PATCH 1/2] Fix JSR310 serialization error when preparing login panel If a user is somehow in the situtation where they have an `sso-session` defined, with a token in their SSO cache (either valid/invalid), then prepareBrowser fails since it tries to serialize the state of `connectionSettings` without the jackson-jsr310 module. This is not intended behavior, so fix by configuring this to be an ignored field. --- ...ix-213273c1-12a5-47d1-b973-499d25e1d68e.json | 4 ++++ .../services/amazonq/TelemetryHelperTest.kt | 1 + .../core/credentials/ToolkitConnectionImpls.kt | 3 +++ .../DefaultToolkitAuthManagerTest.kt | 17 +++++++++++++++++ 4 files changed, 25 insertions(+) create mode 100644 .changes/next-release/bugfix-213273c1-12a5-47d1-b973-499d25e1d68e.json diff --git a/.changes/next-release/bugfix-213273c1-12a5-47d1-b973-499d25e1d68e.json b/.changes/next-release/bugfix-213273c1-12a5-47d1-b973-499d25e1d68e.json new file mode 100644 index 00000000000..a35b78228d3 --- /dev/null +++ b/.changes/next-release/bugfix-213273c1-12a5-47d1-b973-499d25e1d68e.json @@ -0,0 +1,4 @@ +{ + "type" : "bugfix", + "description" : "Fix issue where users are unable to login to Amazon Q if they have previously authenticated (#5214)" +} \ No newline at end of file diff --git a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt index 267d159e906..477ba0fe8eb 100644 --- a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt +++ b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt @@ -63,6 +63,7 @@ import software.aws.toolkits.jetbrains.services.cwc.messages.LinkType import software.aws.toolkits.jetbrains.services.cwc.storage.ChatSessionInfo import software.aws.toolkits.jetbrains.services.cwc.storage.ChatSessionStorage import software.aws.toolkits.jetbrains.services.telemetry.MockTelemetryServiceExtension +import software.aws.toolkits.jetbrains.services.telemetry.TelemetryService import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings import software.aws.toolkits.telemetry.CwsprChatConversationType import software.aws.toolkits.telemetry.CwsprChatInteractionType diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/ToolkitConnectionImpls.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/ToolkitConnectionImpls.kt index fb89054b5f2..f7c85b05e6c 100644 --- a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/ToolkitConnectionImpls.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/credentials/ToolkitConnectionImpls.kt @@ -3,6 +3,7 @@ package software.aws.toolkits.jetbrains.core.credentials +import com.fasterxml.jackson.annotation.JsonIgnore import com.intellij.openapi.Disposable import com.intellij.openapi.util.Disposer import software.aws.toolkits.core.TokenConnectionSettings @@ -73,6 +74,7 @@ sealed class ManagedBearerSsoConnection( region ) + @JsonIgnore override fun getConnectionSettings(): TokenConnectionSettings = provider override fun dispose() { @@ -99,6 +101,7 @@ class DetectedDiskSsoSessionConnection( region ) + @JsonIgnore override fun getConnectionSettings(): TokenConnectionSettings = provider override fun dispose() { diff --git a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt index 3f5d4962438..f63be201d7c 100644 --- a/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt +++ b/plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/credentials/DefaultToolkitAuthManagerTest.kt @@ -3,6 +3,7 @@ package software.aws.toolkits.jetbrains.core.credentials +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager import com.intellij.testFramework.ProjectExtension @@ -453,6 +454,22 @@ class DefaultToolkitAuthManagerTest { } } + @Test + fun `serializing LegacyManagedBearerSsoConnection does not include connectionSettings`() { + val profile = ManagedSsoProfile("us-east-1", "startUrl000", listOf("scopes")) + val connection = sut.createConnection(profile) as LegacyManagedBearerSsoConnection + + assertThat(jacksonObjectMapper().writeValueAsString(connection)).doesNotContain("connectionSettings") + } + + @Test + fun `serializing ProfileSsoManagedBearerSsoConnection does not include connectionSettings`() { + val profile = UserConfigSsoSessionProfile("sessionName", "us-east-1", "startUrl000", listOf("scopes")) + val connection = sut.createConnection(profile) as ProfileSsoManagedBearerSsoConnection + + assertThat(jacksonObjectMapper().writeValueAsString(connection)).doesNotContain("connectionSettings") + } + private companion object { @ExtendWith(ProjectExtension::class) val projectRule = ProjectRule() From ff4e335ec18dcf9558e2f34aac2ebebbebfc11f5 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Fri, 20 Dec 2024 11:22:33 -0800 Subject: [PATCH 2/2] Update TelemetryHelperTest.kt --- .../toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt index 477ba0fe8eb..267d159e906 100644 --- a/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt +++ b/plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt @@ -63,7 +63,6 @@ import software.aws.toolkits.jetbrains.services.cwc.messages.LinkType import software.aws.toolkits.jetbrains.services.cwc.storage.ChatSessionInfo import software.aws.toolkits.jetbrains.services.cwc.storage.ChatSessionStorage import software.aws.toolkits.jetbrains.services.telemetry.MockTelemetryServiceExtension -import software.aws.toolkits.jetbrains.services.telemetry.TelemetryService import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings import software.aws.toolkits.telemetry.CwsprChatConversationType import software.aws.toolkits.telemetry.CwsprChatInteractionType