From f292cac07aa5c9bbc70112580dfff8b5458d42dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Henning?= <soeren.henning@email.uni-kiel.de>
Date: Wed, 15 Jun 2022 17:22:30 +0200
Subject: [PATCH] Add mocking test for ExternalSloChecker

---
 theodolite/build.gradle                       |  3 +-
 .../kubernetes/slo/ExternalSloCheckerTest.kt  | 67 +++++++++++++++++++
 2 files changed, 69 insertions(+), 1 deletion(-)
 create mode 100644 theodolite/src/test/kotlin/rocks/theodolite/kubernetes/slo/ExternalSloCheckerTest.kt

diff --git a/theodolite/build.gradle b/theodolite/build.gradle
index 7e10245b8..2ca866416 100644
--- a/theodolite/build.gradle
+++ b/theodolite/build.gradle
@@ -31,7 +31,8 @@ dependencies {
 
     testImplementation 'io.quarkus:quarkus-junit5'
     testImplementation 'io.quarkus:quarkus-test-kubernetes-client'
-    testImplementation 'io.rest-assured:rest-assured'
+    //testImplementation 'io.rest-assured:rest-assured'
+    testImplementation 'com.github.tomakehurst:wiremock-jre8:2.33.2'
     testImplementation 'org.junit-pioneer:junit-pioneer:1.5.0'
     testImplementation "org.mockito.kotlin:mockito-kotlin:4.0.0"
 }
diff --git a/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/slo/ExternalSloCheckerTest.kt b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/slo/ExternalSloCheckerTest.kt
new file mode 100644
index 000000000..1ea422c93
--- /dev/null
+++ b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/slo/ExternalSloCheckerTest.kt
@@ -0,0 +1,67 @@
+package rocks.theodolite.kubernetes.slo
+
+import com.fasterxml.jackson.databind.node.BooleanNode
+import com.github.tomakehurst.wiremock.WireMockServer
+import com.github.tomakehurst.wiremock.client.WireMock.*
+import io.quarkus.test.junit.QuarkusTest
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+
+@QuarkusTest
+internal class ExternalSloCheckerTest {
+
+    private var wireMockServer: WireMockServer? = null
+
+    @BeforeEach
+    fun start() {
+        wireMockServer = WireMockServer().also {
+            it.start()
+        }
+    }
+
+    @AfterEach
+    fun stop() {
+        wireMockServer?.let {
+            it.stop()
+        }
+    }
+
+    @Test
+    fun testExternalTrueResult() {
+        stubFor(
+            post(urlEqualTo("/"))
+                .willReturn(
+                    aResponse()
+                        .withJsonBody(BooleanNode.getTrue())
+                )
+        )
+
+        val sloChecker = ExternalSloChecker(
+            wireMockServer!!.baseUrl(),
+            mapOf()
+        )
+        val result = sloChecker.evaluate(listOf())
+        assertTrue(result)
+    }
+
+    @Test
+    fun testExternalFalseResult() {
+        stubFor(
+            post(urlEqualTo("/"))
+                .willReturn(
+                    aResponse()
+                        .withJsonBody(BooleanNode.getFalse())
+                )
+        )
+
+        val sloChecker = ExternalSloChecker(
+            wireMockServer!!.baseUrl(),
+            mapOf()
+        )
+        val result = sloChecker.evaluate(listOf())
+        assertFalse(result)
+    }
+
+}
\ No newline at end of file
-- 
GitLab