@@ -53,54 +53,76 @@ class BrowserConnectorTest : AmazonQTestBase() {
53
53
}
54
54
55
55
@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(""" """ )
60
58
61
59
verify(mockCodeScanManager, never()).addOnDemandIssues(any(), any(), any())
62
60
}
63
61
64
62
@Test
65
63
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
+ )
69
71
70
72
verify(mockCodeScanManager, never()).addOnDemandIssues(any(), any(), any())
71
73
}
72
74
73
75
@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()
82
83
)
83
- val additionalMessages = mutableListOf<Map <String , Any >>(findingsMessage, otherMessage)
84
- val messagesMap = mapOf (" additionalMessages" to additionalMessages)
85
84
86
- browserConnector.parseFindingsMessages(messagesMap)
85
+ verify(mockCodeScanManager, never()).addOnDemandIssues(any(), any(), any())
86
+ }
87
87
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)
90
106
}
91
107
92
108
@Test
93
109
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()
102
124
103
- assertThat(additionalMessages).isEmpty( )
125
+ browserConnector.parseFindingsMessages(findingsMessage )
104
126
}
105
127
106
128
@Test
@@ -135,14 +157,18 @@ class BrowserConnectorTest : AmazonQTestBase() {
135
157
)
136
158
137
159
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)
146
172
147
173
val issuesCaptor = argumentCaptor<List <CodeWhispererCodeScanIssue >>()
148
174
verify(mockCodeScanManager).addOnDemandIssues(
@@ -151,7 +177,6 @@ class BrowserConnectorTest : AmazonQTestBase() {
151
177
eq(CodeWhispererConstants .CodeAnalysisScope .AGENTIC )
152
178
)
153
179
154
- assertThat(additionalMessages).isEmpty()
155
180
assertThat(issuesCaptor.firstValue.isNotEmpty())
156
181
assertThat(issuesCaptor.firstValue[0 ].title == " Test Issue" )
157
182
}
@@ -177,38 +202,42 @@ class BrowserConnectorTest : AmazonQTestBase() {
177
202
)
178
203
179
204
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()
186
215
187
- browserConnector.parseFindingsMessages(messagesMap )
216
+ browserConnector.parseFindingsMessages(findingsMessage )
188
217
189
- val issuesCaptor = argumentCaptor<List <CodeWhispererCodeScanIssue >>()
190
- verify(mockCodeScanManager).addOnDemandIssues(
191
- issuesCaptor.capture(),
218
+ verify(mockCodeScanManager, never()).addOnDemandIssues(
219
+ any(),
192
220
any(),
193
221
eq(CodeWhispererConstants .CodeAnalysisScope .AGENTIC )
194
222
)
195
-
196
- assertThat(issuesCaptor.firstValue.isEmpty())
197
- assertThat(additionalMessages).isEmpty()
198
223
}
199
224
}
200
225
201
226
@Test
202
227
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()
209
238
210
- browserConnector.parseFindingsMessages(messagesMap )
239
+ browserConnector.parseFindingsMessages(findingsMessage )
211
240
212
- assertThat(additionalMessages).isEmpty( )
241
+ verify(mockCodeScanManager, never()).addOnDemandIssues(any(), any(), any() )
213
242
}
214
243
}
0 commit comments