@@ -18,8 +18,6 @@ package io.armory.plugin.events.listener.datadog
1818import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
1919import com.netflix.spinnaker.echo.api.events.Event
2020import com.netflix.spinnaker.echo.api.events.Metadata
21- import com.netflix.spinnaker.kork.plugins.api.PluginSdks
22- import com.netflix.spinnaker.kork.plugins.api.httpclient.HttpClient
2321import dev.minutest.junit.JUnit5Minutests
2422import dev.minutest.rootContext
2523import io.mockk.Called
@@ -35,15 +33,12 @@ class DataDogEventListenerTest : JUnit5Minutests {
3533
3634 private val mapper = jacksonObjectMapper()
3735
38- val pluginSdks = mockk<PluginSdks >()
39-
4036 class HttpMockableDataDogEventListener (
41- val http : HttpClient ,
42- val log : Logger ,
43- pluginSdks : PluginSdks ) : DataDogEventListener(DataDogEventListenerConfig ("asdf"), pluginSdks) {
37+ val client : DatadogClient ,
38+ val log : Logger ) : DataDogEventListener(DataDogEventListenerConfig ("asdf")) {
4439
45- override fun getHttpClient () : HttpClient {
46- return http
40+ override fun getDataDogClient () : DatadogClient {
41+ return client
4742 }
4843
4944 override fun getLogger () : Logger {
@@ -77,23 +72,25 @@ class DataDogEventListenerTest : JUnit5Minutests {
7772 " pipelineConfigId" to " f514b57a-63af-4f5f-ac0a-2bc12d6c363b"
7873 )
7974 )
80- val httpClient = mockk<HttpClient > {
81- every { post(any()) } returns mockk {
82- every { isError } returns false
75+ val datadogClient = mockk<DatadogClient > {
76+ every { sendEvent(any(), any()) } returns mockk {
77+ every { execute() } returns mockk {
78+ every { isSuccessful } returns true
79+ }
8380 }
8481 }
8582 val log = mockk<Logger >()
8683
87- val eventListener = HttpMockableDataDogEventListener (httpClient , log, pluginSdks )
84+ val eventListener = HttpMockableDataDogEventListener (datadogClient , log)
8885 eventListener.processEvent(event)
8986
9087 verify(exactly = 1 ) {
91- httpClient.post(
88+ datadogClient.sendEvent(
89+ withArg {
90+ expectThat(it).isEqualTo(" asdf" )
91+ },
9292 withArg {
93- expectThat(it.path).isEqualTo(" api/v1/events" )
94- expectThat(it.queryParams).isEqualTo(mapOf (" api_key" to " asdf" ))
95- val dataDogEvent = it.body as DataDogEvent
96- expectThat(dataDogEvent.tags).isEqualTo(setOf (
93+ expectThat(it.tags).isEqualTo(setOf (
9794 " source:orca" ,
9895 " eventType:orca:task:complete" ,
9996 " application:plugintest" ,
@@ -103,7 +100,7 @@ class DataDogEventListenerTest : JUnit5Minutests {
103100 " pipelineName:testNewStageFromPlugin" ,
104101 " pipelineConfigId:f514b57a-63af-4f5f-ac0a-2bc12d6c363b"
105102 ))
106- val actualJson = mapper.readValue(dataDogEvent .text, Map ::class .java)
103+ val actualJson = mapper.readValue(it .text, Map ::class .java)
107104 expectThat(actualJson).isEqualTo(mapOf (
108105 " details" to mapOf (
109106 " source" to " orca" ,
@@ -158,31 +155,33 @@ class DataDogEventListenerTest : JUnit5Minutests {
158155 " status" to " SUCCEEDED"
159156 )
160157 )
161- val httpClient = mockk<HttpClient > {
162- every { post(any()) } returns mockk {
163- every { isError } returns false
158+ val datadogClient = mockk<DatadogClient > {
159+ every { sendEvent(any(), any()) } returns mockk {
160+ every { execute() } returns mockk {
161+ every { isSuccessful } returns true
162+ }
164163 }
165164 }
166165 val log = mockk<Logger >()
167166
168- val eventListener = HttpMockableDataDogEventListener (httpClient , log, pluginSdks )
167+ val eventListener = HttpMockableDataDogEventListener (datadogClient , log)
169168 eventListener.processEvent(event)
170169
171170 verify(exactly = 1 ) {
172- httpClient.post(
171+ datadogClient.sendEvent(
172+ withArg {
173+ expectThat(it).isEqualTo(" asdf" )
174+ },
173175 withArg {
174- expectThat(it.path).isEqualTo(" api/v1/events" )
175- expectThat(it.queryParams).isEqualTo(mapOf (" api_key" to " asdf" ))
176- val dataDogEvent = it.body as DataDogEvent
177- expectThat(dataDogEvent.tags).isEqualTo(setOf (
176+ expectThat(it.tags).isEqualTo(setOf (
178177 " source:orca" ,
179178 " eventType:orca:orchestration:complete" ,
180179 " application:plugintest" ,
181180 " executionId:01E307DBPNB1YJ9D0BW5X4NAEY" ,
182181 " executionType:ORCHESTRATION" ,
183182 " executionStatus:SUCCEEDED"
184183 ))
185- val actualJson = mapper.readValue(dataDogEvent .text, Map ::class .java)
184+ val actualJson = mapper.readValue(it .text, Map ::class .java)
186185 expectThat(actualJson).isEqualTo(mapOf (
187186 " details" to mapOf (
188187 " source" to " orca" ,
@@ -229,25 +228,28 @@ class DataDogEventListenerTest : JUnit5Minutests {
229228 event.content = mapOf (
230229 " execution" to mapOf (" type" to " ORCHESTRATION" )
231230 )
232- val httpClient = mockk<HttpClient > {
233- every { post(any()) } returns mockk {
234- every { isError } returns true
235- every { statusCode } returns 400
231+ val datadogClient = mockk<DatadogClient > {
232+ every { sendEvent(any(), any()) } returns mockk {
233+ every { execute() } returns mockk {
234+ every { isSuccessful } returns false
235+ every { code() } returns 400
236+ every { message() } returns " it failed"
237+ }
236238 }
237239 }
238240 val log = mockk<Logger >(relaxed = true )
239241
240- val eventListener = HttpMockableDataDogEventListener (httpClient , log, pluginSdks )
242+ val eventListener = HttpMockableDataDogEventListener (datadogClient , log)
241243 eventListener.processEvent(event)
242244
243245 verify(exactly = 1 ) {
244- httpClient.post( any())
246+ datadogClient.sendEvent(any(), any())
245247 }
246248
247249 verify(exactly = 1 ) {
248250 log.error(
249251 withArg {
250- expectThat(it).startsWith(" DataDog event listener failed with response: 400" )
252+ expectThat(it).startsWith(" DataDog event listener failed with response: 400 - it failed " )
251253 }
252254 )
253255 }
0 commit comments