Improve blueprint save
[ccsdk/cds.git] / ms / blueprintsprocessor / modules / inbounds / selfservice-api / src / test / kotlin / org / onap / ccsdk / cds / blueprintsprocessor / selfservice / api / ExecutionServiceHandlerTest.kt
index b131fb7..d14761c 100644 (file)
 
 package org.onap.ccsdk.cds.blueprintsprocessor.selfservice.api
 
+import kotlinx.coroutines.reactive.awaitSingle
+import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintCoreConfiguration
 import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput
+import org.onap.ccsdk.cds.controllerblueprints.core.deleteDir
 import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintCatalogService
 import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
 import org.springframework.beans.factory.annotation.Autowired
@@ -33,9 +36,13 @@ import org.springframework.test.context.ContextConfiguration
 import org.springframework.test.context.TestPropertySource
 import org.springframework.test.context.junit4.SpringRunner
 import org.springframework.test.web.reactive.server.WebTestClient
+import org.springframework.test.web.reactive.server.returnResult
 import org.springframework.web.reactive.function.BodyInserters
 import java.nio.file.Files
 import java.nio.file.Paths
+import java.util.*
+import kotlin.test.AfterTest
+import kotlin.test.BeforeTest
 import kotlin.test.assertTrue
 
 @RunWith(SpringRunner::class)
@@ -50,40 +57,61 @@ class ExecutionServiceHandlerTest {
     @Autowired
     lateinit var webTestClient: WebTestClient
 
+    @BeforeTest
+    fun init() {
+        deleteDir("target", "blueprints")
+    }
+
+    @AfterTest
+    fun cleanDir() {
+        deleteDir("target", "blueprints")
+    }
+
 
     @Test
     fun `test rest upload blueprint`() {
-        val file = Paths.get("./src/test/resources/test-cba.zip").toFile()
-        assertTrue(file.exists(), "couldnt get file ${file.absolutePath}")
+        runBlocking {
+            val file = Paths.get("./src/test/resources/test-cba.zip").toFile()
+            assertTrue(file.exists(), "couldn't get file ${file.absolutePath}")
+
+            val body = MultipartBodyBuilder().apply {
+                part("file", object : ByteArrayResource(Files.readAllBytes(Paths.get("./src/test/resources/test-cba.zip"))) {
+                    override fun getFilename(): String {
+                        return "test-cba.zip"
+                    }
+                })
+            }.build()
 
-        val body = MultipartBodyBuilder().apply {
-            part("file", object : ByteArrayResource(Files.readAllBytes(Paths.get("./src/test/resources/test-cba.zip"))) {
-                override fun getFilename(): String {
-                    return "test-cba.zip"
-                }
-            })
-        }.build()
+            webTestClient
+                    .post()
+                    .uri("/api/v1/execution-service/upload")
+                    .body(BodyInserters.fromMultipartData(body))
+                    .exchange()
+                    .expectStatus().isOk
+                    .returnResult<String>()
+                    .responseBody
+                    .awaitSingle()
+        }
 
-        webTestClient
-                .post()
-                .uri("/api/v1/execution-service/upload")
-                .body(BodyInserters.fromMultipartData(body))
-                .exchange()
-                .expectStatus().isOk
     }
 
     @Test
     fun `test rest process`() {
-        val file = Paths.get("./src/test/resources/test-cba.zip").toFile()
-        assertTrue(file.exists(), "couldnt get file ${file.absolutePath}")
-        blueprintCatalog.saveToDatabase(file)
+        runBlocking {
+            val file = Paths.get("./src/test/resources/test-cba.zip").toFile()
+            assertTrue(file.exists(), "couldnt get file ${file.absolutePath}")
+            blueprintCatalog.saveToDatabase(UUID.randomUUID().toString(), file)
+
+            val executionServiceInput = JacksonUtils
+                    .readValueFromClassPathFile("execution-input/default-input.json",
+                            ExecutionServiceInput::class.java)!!
 
-        val executionServiceInput = JacksonUtils.readValueFromClassPathFile("execution-input/default-input.json", ExecutionServiceInput::class.java)!!
-        webTestClient
-                .post()
-                .uri("/api/v1/execution-service/process")
-                .body(BodyInserters.fromObject(executionServiceInput))
-                .exchange()
-                .expectStatus().isOk
+            webTestClient
+                    .post()
+                    .uri("/api/v1/execution-service/process")
+                    .body(BodyInserters.fromObject(executionServiceInput))
+                    .exchange()
+                    .expectStatus().isOk
+        }
     }
 }
\ No newline at end of file