Add unit test for resolution repository 02/90702/5
authorAlexis de Talhouët <adetalhouet89@gmail.com>
Sat, 29 Jun 2019 22:27:23 +0000 (18:27 -0400)
committerAlexis de Talhouët <adetalhouet89@gmail.com>
Thu, 4 Jul 2019 19:53:42 +0000 (15:53 -0400)
Change-Id: If66670cc5397b0bcce340092ec6ff9ec008677bc
Issue-ID: CCSDK-1423
Signed-off-by: Alexis de Talhouët <adetalhouet89@gmail.com>
ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/ResourceResolutionDBServiceTest.kt [new file with mode: 0644]
ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/TemplateResolutionServiceTest.kt [new file with mode: 0644]
ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/mock/MockRestResourceResolutionProcessor.kt
ms/blueprintsprocessor/modules/inbounds/resource-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/resource/api/ResourceControllerTest.kt [moved from ms/blueprintsprocessor/modules/inbounds/resource-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/resolutionresults/api/ResourceControllerTest.kt with 97% similarity]

diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/ResourceResolutionDBServiceTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/ResourceResolutionDBServiceTest.kt
new file mode 100644 (file)
index 0000000..cfd00ac
--- /dev/null
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2019 Bell Canada.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.db
+
+import io.mockk.every
+import io.mockk.mockk
+import kotlinx.coroutines.runBlocking
+import org.junit.Before
+import org.junit.Test
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.ResourceResolutionConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
+import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext
+import org.onap.ccsdk.cds.controllerblueprints.core.service.DefaultBluePrintRuntimeService
+import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment
+import org.springframework.dao.EmptyResultDataAccessException
+import kotlin.test.assertEquals
+
+open class ResourceResolutionDBServiceTest {
+
+    private val resourceResolutionRepository = mockk<ResourceResolutionRepository>()
+
+    private val resourceResolutionDBService = ResourceResolutionDBService(resourceResolutionRepository)
+
+    private val resolutionKey = "resolutionKey"
+    private val resourceId = "1"
+    private val resourceType = "ServiceInstance"
+    private val occurrence = 0
+    private val artifactPrefix = "template"
+    private val blueprintName = "blueprintName"
+    private val blueprintVersion = "1.0.0"
+    private val metadata = hashMapOf<String, String>()
+    private val props = hashMapOf<String, Any>()
+    private val bluePrintContext = mockk<BluePrintContext>()
+    private val bluePrintRuntimeService = mockk<DefaultBluePrintRuntimeService>()
+
+    @Before
+    fun setup() {
+        metadata[BluePrintConstants.METADATA_TEMPLATE_VERSION] = blueprintVersion
+        metadata[BluePrintConstants.METADATA_TEMPLATE_NAME] = blueprintName
+
+        props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_KEY] = resolutionKey
+        props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_RESOURCE_ID] = resourceId
+        props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_RESOURCE_TYPE] = resourceType
+        props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE] = occurrence
+
+        every { bluePrintContext.metadata } returns metadata
+
+        every { bluePrintRuntimeService.bluePrintContext() } returns bluePrintContext
+    }
+
+    @Test
+    fun findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResolutionKeyAndOccurrenceTest() {
+
+        val rr1 = ResourceResolution()
+        val rr2 = ResourceResolution()
+
+        val list = listOf(rr1, rr2)
+        every {
+            resourceResolutionRepository.findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResolutionKeyAndOccurrence(
+                any(), any(), any(), any(), any())
+        } returns list
+        runBlocking {
+
+            val res =
+                resourceResolutionDBService.findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResolutionKeyAndOccurrence(
+                    bluePrintRuntimeService, resolutionKey, occurrence, artifactPrefix)
+
+            assertEquals(2, res.size)
+        }
+    }
+
+    @Test
+    fun findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResolutionKeyAndOccurrenceTestException() {
+        every {
+            resourceResolutionRepository.findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResolutionKeyAndOccurrence(
+                any(), any(), any(), any(), any())
+        } throws EmptyResultDataAccessException(1)
+        runBlocking {
+            val res =
+                resourceResolutionDBService.findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResolutionKeyAndOccurrence(
+                    bluePrintRuntimeService, resolutionKey, occurrence, artifactPrefix)
+
+            assert(res.isEmpty())
+        }
+    }
+
+    @Test
+    fun findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResourceIdAndResourceTypeAndOccurrenceTest() {
+
+        val rr1 = ResourceResolution()
+        val rr2 = ResourceResolution()
+        val list = listOf(rr1, rr2)
+        every {
+            resourceResolutionRepository.findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResourceIdAndResourceTypeAndOccurrence(
+                any(), any(), any(), any(), any(), any())
+        } returns list
+        runBlocking {
+
+            val res =
+                resourceResolutionDBService.findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResourceIdAndResourceTypeAndOccurrence(
+                    bluePrintRuntimeService, resourceId, resourceType, occurrence, artifactPrefix)
+
+            assertEquals(2, res.size)
+        }
+    }
+
+    @Test
+    fun findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResourceIdAndResourceTypeAndOccurrenceTestException() {
+        every {
+            resourceResolutionRepository.findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResourceIdAndResourceTypeAndOccurrence(
+                any(), any(), any(), any(), any(), any())
+        } throws EmptyResultDataAccessException(1)
+        runBlocking {
+            val res =
+                resourceResolutionDBService.findByBlueprintNameAndBlueprintVersionAndArtifactNameAndResourceIdAndResourceTypeAndOccurrence(
+                    bluePrintRuntimeService, resourceId, resourceType, occurrence, artifactPrefix)
+
+            assert(res.isEmpty())
+        }
+    }
+
+    @Test
+    fun readValueTest() {
+        val rr = ResourceResolution()
+        rr.name = "bob"
+        rr.value = "testValue"
+        every {
+            resourceResolutionRepository.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameAndName(
+                any(), any(), any(), any(), any())
+        } returns rr
+        runBlocking {
+            val res =
+                resourceResolutionDBService.readValue(
+                    blueprintName, blueprintVersion, artifactPrefix, resolutionKey, "bob")
+
+            assertEquals(rr.name, res.name)
+            assertEquals(rr.value, res.value)
+        }
+    }
+
+    @Test
+    fun readWithResolutionKeyTest() {
+        val rr1 = ResourceResolution()
+        val rr2 = ResourceResolution()
+        val list = listOf(rr1, rr2)
+        every {
+            resourceResolutionRepository.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactName(
+                any(), any(), any(), any())
+        } returns list
+        runBlocking {
+            val res =
+                resourceResolutionDBService.readWithResolutionKey(
+                    blueprintName, blueprintVersion, artifactPrefix, resolutionKey)
+            assertEquals(2, res.size)
+        }
+    }
+
+    @Test
+    fun readWithResourceIdAndResourceTypeTest() {
+        val rr1 = ResourceResolution()
+        val rr2 = ResourceResolution()
+        val list = listOf(rr1, rr2)
+        every {
+            resourceResolutionRepository.findByBlueprintNameAndBlueprintVersionAndResourceIdAndResourceType(
+                any(), any(), any(), any())
+        } returns list
+        runBlocking {
+            val res =
+                resourceResolutionDBService.readWithResourceIdAndResourceType(
+                    blueprintName, blueprintVersion, resourceId, resourceType)
+            assertEquals(2, res.size)
+        }
+    }
+
+    @Test
+    fun writeTest() {
+        val resourceResolution = ResourceResolution()
+        val resourceAssignment = ResourceAssignment()
+        resourceAssignment.property?.status = BluePrintConstants.STATUS_SUCCESS
+        resourceAssignment.property?.value = "result".asJsonPrimitive()
+        resourceAssignment.dictionarySource = "ddSource"
+        resourceAssignment.dictionaryName = "ddName"
+        resourceAssignment.version = 1
+        resourceAssignment.name = "test"
+        every {
+            resourceResolutionRepository.saveAndFlush(any<ResourceResolution>())
+        } returns resourceResolution
+        runBlocking {
+            val res =
+                resourceResolutionDBService.write(
+                    props, bluePrintRuntimeService, artifactPrefix, resourceAssignment)
+
+            assertEquals(resourceResolution, res)
+        }
+    }
+}
\ No newline at end of file
diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/TemplateResolutionServiceTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/db/TemplateResolutionServiceTest.kt
new file mode 100644 (file)
index 0000000..da19571
--- /dev/null
@@ -0,0 +1,140 @@
+package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.db
+
+import io.mockk.confirmVerified
+import io.mockk.every
+import io.mockk.mockk
+import io.mockk.verify
+import kotlinx.coroutines.runBlocking
+import org.junit.Before
+import org.junit.Test
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.ResourceResolutionConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
+import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext
+import org.onap.ccsdk.cds.controllerblueprints.core.service.DefaultBluePrintRuntimeService
+import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment
+import org.springframework.dao.EmptyResultDataAccessException
+import kotlin.test.assertEquals
+
+class TemplateResolutionServiceTest {
+
+    private val templateResolutionRepository = mockk<TemplateResolutionRepository>()
+
+    private val templateResolutionService = TemplateResolutionService(templateResolutionRepository)
+
+    private val resolutionKey = "resolutionKey"
+    private val resourceId = "1"
+    private val resourceType = "ServiceInstance"
+    private val occurrence = 0
+    private val artifactPrefix = "template"
+    private val blueprintName = "blueprintName"
+    private val blueprintVersion = "1.0.0"
+    private val result = "result"
+    private val metadata = hashMapOf<String, String>()
+    private val props = hashMapOf<String, Any>()
+    private val bluePrintContext = mockk<BluePrintContext>()
+    private val bluePrintRuntimeService = mockk<DefaultBluePrintRuntimeService>()
+
+    @Before
+    fun setup() {
+        metadata[BluePrintConstants.METADATA_TEMPLATE_VERSION] = blueprintVersion
+        metadata[BluePrintConstants.METADATA_TEMPLATE_NAME] = blueprintName
+
+        props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_KEY] = resolutionKey
+        props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_RESOURCE_ID] = resourceId
+        props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_RESOURCE_TYPE] = resourceType
+        props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE] = occurrence
+
+        every { bluePrintContext.metadata } returns metadata
+
+        every { bluePrintRuntimeService.bluePrintContext() } returns bluePrintContext
+    }
+
+    @Test
+    fun findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameTest() {
+        val tr = TemplateResolution()
+        tr.result = "res"
+        runBlocking {
+            every {
+                templateResolutionRepository.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
+                    any(), any(), any(), any(), any())
+            } returns tr
+            val res =
+                templateResolutionService.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactName(
+                    bluePrintRuntimeService, artifactPrefix, resolutionKey)
+            assertEquals(tr.result, res)
+        }
+    }
+
+    @Test(expected = EmptyResultDataAccessException::class)
+    fun findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameTestException() {
+        val tr = TemplateResolution()
+        runBlocking {
+            every {
+                templateResolutionRepository.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
+                    any(), any(), any(), any(), any())
+            } returns tr
+            templateResolutionService.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactName(
+                bluePrintRuntimeService, artifactPrefix, resolutionKey)
+        }
+    }
+
+    @Test
+    fun writeWithResolutionKeyTest() {
+        val tr = TemplateResolution()
+        runBlocking {
+            every { templateResolutionRepository.saveAndFlush(any<TemplateResolution>()) } returns tr
+            every {
+                templateResolutionRepository.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
+                    any(), any(), any(), any(), any())
+            } returns null
+            val res = templateResolutionService.write(props, result, bluePrintRuntimeService, artifactPrefix)
+            assertEquals(tr, res)
+        }
+    }
+
+    @Test
+    fun writeWithResolutionKeyExistingTest() {
+        val tr = TemplateResolution()
+        runBlocking {
+            every { templateResolutionRepository.saveAndFlush(any<TemplateResolution>()) } returns tr
+            every {
+                templateResolutionRepository.findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
+                    any(), any(), any(), any(), any())
+            } returns tr
+            every {
+                templateResolutionRepository.deleteByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
+                    any(), any(), any(), any(), any())
+            } returns Unit
+            val res = templateResolutionService.write(props, result, bluePrintRuntimeService, artifactPrefix)
+            verify {
+                templateResolutionRepository.deleteByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
+                    eq(resolutionKey), eq(blueprintName), eq(blueprintVersion), eq(artifactPrefix), eq(occurrence))
+            }
+            assertEquals(tr, res)
+        }
+    }
+
+    @Test
+    fun writeWithResourceIdResourceTypeExistingTest() {
+        props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_KEY] = ""
+        val tr = TemplateResolution()
+        runBlocking {
+            every { templateResolutionRepository.saveAndFlush(any<TemplateResolution>()) } returns tr
+            every {
+                templateResolutionRepository.findByResourceIdAndResourceTypeAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
+                    any(), any(), any(), any(), any(), any())
+            } returns tr
+            every {
+                templateResolutionRepository.deleteByResourceIdAndResourceTypeAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
+                    any(), any(), any(), any(), any(), any())
+            } returns Unit
+            val res = templateResolutionService.write(props, result, bluePrintRuntimeService, artifactPrefix)
+            verify {
+                templateResolutionRepository.deleteByResourceIdAndResourceTypeAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
+                    eq(resourceId), eq(resourceType), eq(blueprintName), eq(blueprintVersion), eq(artifactPrefix), eq(occurrence))
+            }
+            assertEquals(tr, res)
+        }
+    }
+}
\ No newline at end of file
index be02330..e806630 100644 (file)
@@ -98,7 +98,7 @@ class MockRestResourceResolutionProcessor(private val blueprintRestLibPropertySe
             }
         } catch (e: Exception) {
             ResourceAssignmentUtils.setFailedResourceDataValue(executionRequest, e.message)
-            throw BluePrintProcessorException("Failed in template key ($executionRequest) assignments with: ${e.message}",
+            throw BluePrintProcessorException("Failed in template resolutionKey ($executionRequest) assignments with: ${e.message}",
                     e)
         }
     }
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onap.ccsdk.cds.blueprintsprocessor.resolutionresults.api
+package org.onap.ccsdk.cds.blueprintsprocessor.resource.api
 
 import kotlinx.coroutines.runBlocking
 import org.junit.Assert
@@ -35,8 +35,6 @@ 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.onap.ccsdk.cds.blueprintsprocessor.resource.api.ErrorMessage
-import org.onap.ccsdk.cds.blueprintsprocessor.resource.api.ResourceController
 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants