@@ -53,54 +53,76 @@ class BrowserConnectorTest : AmazonQTestBase() {
5353 }
5454
5555 @Test
56- fun `parseFindingsMessages should handle empty additionalMessages` () {
57- val messagesMap = mapOf<String , Any >()
58-
59- browserConnector.parseFindingsMessages(messagesMap)
56+ fun `parseFindingsMessages should handle no additionalMessages` () {
57+ browserConnector.parseFindingsMessages(""" """ )
6058
6159 verify(mockCodeScanManager, never()).addOnDemandIssues(any(), any(), any())
6260 }
6361
6462 @Test
6563 fun `parseFindingsMessages should handle null additionalMessages` () {
66- val messagesMap = mapOf (" additionalMessages" to null )
67-
68- browserConnector.parseFindingsMessages(messagesMap)
64+ browserConnector.parseFindingsMessages(
65+ """
66+ {
67+ "additionalMessages": null
68+ }
69+ """ .trimIndent()
70+ )
6971
7072 verify(mockCodeScanManager, never()).addOnDemandIssues(any(), any(), any())
7173 }
7274
7375 @Test
74- fun `parseFindingsMessages should filter messages with CODE_REVIEW_FINDINGS_SUFFIX` () {
75- val findingsMessage = mapOf (
76- " messageId" to " test_codeReviewFindings" ,
77- " body" to """ [{"filePath": "/test/file.kt", "issues": []}]"""
78- )
79- val otherMessage = mapOf (
80- " messageId" to " other_message" ,
81- " body" to " other content"
76+ fun `parseFindingsMessages should handle empty additionalMessages` () {
77+ browserConnector.parseFindingsMessages(
78+ """
79+ {
80+ "additionalMessages": []
81+ }
82+ """ .trimIndent()
8283 )
83- val additionalMessages = mutableListOf<Map <String , Any >>(findingsMessage, otherMessage)
84- val messagesMap = mapOf (" additionalMessages" to additionalMessages)
8584
86- browserConnector.parseFindingsMessages(messagesMap)
85+ verify(mockCodeScanManager, never()).addOnDemandIssues(any(), any(), any())
86+ }
8787
88- assertThat(additionalMessages.size == 1 )
89- assertThat(additionalMessages[0 ] == otherMessage)
88+ @Test
89+ fun `parseFindingsMessages should filter messages with CODE_REVIEW_FINDINGS_SUFFIX` () {
90+ val findingsMessage = """
91+ {
92+ "additionalMessages": [
93+ {
94+ "messageId": "test_codeReviewFindings",
95+ "body": [{"filePath": "/test/file.kt", "issues": []}]
96+ },
97+ {
98+ "messageId": "other_message",
99+ "body": "other content"
100+ }
101+ ]
102+ }
103+ """ .trimIndent()
104+
105+ browserConnector.parseFindingsMessages(findingsMessage)
90106 }
91107
92108 @Test
93109 fun `parseFindingsMessages should filter messages with DISPLAY_FINDINGS_SUFFIX` () {
94- val findingsMessage = mapOf (
95- " messageId" to " test_displayFindings" ,
96- " body" to """ [{"filePath": "/test/file.kt", "issues": []}]"""
97- )
98- val additionalMessages = mutableListOf<Map <String , Any >>(findingsMessage)
99- val messagesMap = mapOf (" additionalMessages" to additionalMessages)
100-
101- browserConnector.parseFindingsMessages(messagesMap)
110+ val findingsMessage = """
111+ {
112+ "additionalMessages": [
113+ {
114+ "messageId": "test_displayFindings",
115+ "body": [{"filePath": "/test/file.kt", "issues": []}]
116+ },
117+ {
118+ "messageId": "other_message",
119+ "body": "other content"
120+ }
121+ ]
122+ }
123+ """ .trimIndent()
102124
103- assertThat(additionalMessages).isEmpty( )
125+ browserConnector.parseFindingsMessages(findingsMessage )
104126 }
105127
106128 @Test
@@ -135,14 +157,18 @@ class BrowserConnectorTest : AmazonQTestBase() {
135157 )
136158
137159 val aggregatedIssue = BrowserConnector .AggregatedCodeScanIssue (" /test/file.kt" , listOf (issue))
138- val findingsMessage = mapOf (
139- " messageId" to " test_codeReviewFindings" ,
140- " body" to jacksonObjectMapper().writeValueAsString(listOf (aggregatedIssue))
141- )
142- val additionalMessages = mutableListOf<Map <String , Any >>(findingsMessage)
143- val messagesMap = mapOf (" additionalMessages" to additionalMessages)
144-
145- browserConnector.parseFindingsMessages(messagesMap)
160+ val findingsMessage = """
161+ {
162+ "additionalMessages": [
163+ {
164+ "messageId": "test_codeReviewFindings",
165+ "body": ${jacksonObjectMapper().writeValueAsString(listOf (aggregatedIssue))}
166+ }
167+ ]
168+ }
169+ """ .trimIndent()
170+
171+ browserConnector.parseFindingsMessages(findingsMessage)
146172
147173 val issuesCaptor = argumentCaptor<List <CodeWhispererCodeScanIssue >>()
148174 verify(mockCodeScanManager).addOnDemandIssues(
@@ -151,7 +177,6 @@ class BrowserConnectorTest : AmazonQTestBase() {
151177 eq(CodeWhispererConstants .CodeAnalysisScope .AGENTIC )
152178 )
153179
154- assertThat(additionalMessages).isEmpty()
155180 assertThat(issuesCaptor.firstValue.isNotEmpty())
156181 assertThat(issuesCaptor.firstValue[0 ].title == " Test Issue" )
157182 }
@@ -177,38 +202,42 @@ class BrowserConnectorTest : AmazonQTestBase() {
177202 )
178203
179204 val aggregatedIssue = BrowserConnector .AggregatedCodeScanIssue (" /test/directory" , listOf (issue))
180- val findingsMessage = mapOf (
181- " messageId" to " test_displayFindings" ,
182- " body" to jacksonObjectMapper().writeValueAsString(listOf (aggregatedIssue))
183- )
184- val additionalMessages = mutableListOf<Map <String , Any >>(findingsMessage)
185- val messagesMap = mapOf (" additionalMessages" to additionalMessages)
205+ val findingsMessage = """
206+ {
207+ "additionalMessages": [
208+ {
209+ "messageId": "test_displayFindings",
210+ "body": ${jacksonObjectMapper().writeValueAsString(listOf (aggregatedIssue))}
211+ }
212+ ]
213+ }
214+ """ .trimIndent()
186215
187- browserConnector.parseFindingsMessages(messagesMap )
216+ browserConnector.parseFindingsMessages(findingsMessage )
188217
189- val issuesCaptor = argumentCaptor<List <CodeWhispererCodeScanIssue >>()
190- verify(mockCodeScanManager).addOnDemandIssues(
191- issuesCaptor.capture(),
218+ verify(mockCodeScanManager, never()).addOnDemandIssues(
219+ any(),
192220 any(),
193221 eq(CodeWhispererConstants .CodeAnalysisScope .AGENTIC )
194222 )
195-
196- assertThat(issuesCaptor.firstValue.isEmpty())
197- assertThat(additionalMessages).isEmpty()
198223 }
199224 }
200225
201226 @Test
202227 fun `parseFindingsMessages should handle invalid JSON gracefully` () {
203- val findingsMessage = mapOf (
204- " messageId" to " test_codeReviewFindings" ,
205- " body" to " invalid json"
206- )
207- val additionalMessages = mutableListOf<Map <String , Any >>(findingsMessage)
208- val messagesMap = mapOf (" additionalMessages" to additionalMessages)
228+ val findingsMessage = """
229+ {
230+ "additionalMessages": [
231+ {
232+ "messageId": "test_codeReviewFindings",
233+ "body": "invalid json"
234+ }
235+ ]
236+ }
237+ """ .trimIndent()
209238
210- browserConnector.parseFindingsMessages(messagesMap )
239+ browserConnector.parseFindingsMessages(findingsMessage )
211240
212- assertThat(additionalMessages).isEmpty( )
241+ verify(mockCodeScanManager, never()).addOnDemandIssues(any(), any(), any() )
213242 }
214243}
0 commit comments