2  *  Copyright © 2019 IBM.
 
   4  *  Licensed under the Apache License, Version 2.0 (the "License");
 
   5  *  you may not use this file except in compliance with the License.
 
   6  *  You may obtain a copy of the License at
 
   8  *      http://www.apache.org/licenses/LICENSE-2.0
 
  10  *  Unless required by applicable law or agreed to in writing, software
 
  11  *  distributed under the License is distributed on an "AS IS" BASIS,
 
  12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13  *  See the License for the specific language governing permissions and
 
  14  *  limitations under the License.
 
  17 package org.onap.ccsdk.cds.blueprintsprocessor.designer.api
 
  19 import kotlinx.coroutines.runBlocking
 
  20 import org.junit.Assert
 
  21 import org.junit.FixMethodOrder
 
  23 import org.junit.runner.RunWith
 
  24 import org.junit.runners.MethodSorters
 
  25 import org.onap.ccsdk.cds.blueprintsprocessor.designer.api.domain.ModelType
 
  26 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
 
  27 import org.onap.ccsdk.cds.controllerblueprints.core.logger
 
  28 import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
 
  29 import org.springframework.beans.factory.annotation.Autowired
 
  30 import org.springframework.test.annotation.Commit
 
  31 import org.springframework.test.context.ContextConfiguration
 
  32 import org.springframework.test.context.TestPropertySource
 
  33 import org.springframework.test.context.junit4.SpringRunner
 
  35 @RunWith(SpringRunner::class)
 
  36 @ContextConfiguration(
 
  37     classes = [DesignerApiTestConfiguration::class]
 
  39 @TestPropertySource(locations = ["classpath:application-test.properties"])
 
  40 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 
  41 class ModelTypeControllerTest {
 
  43     private val log = logger(ModelTypeControllerTest::class.java)!!
 
  46     lateinit var modelTypeController: ModelTypeController
 
  48     private var modelName = "test-datatype"
 
  52     @Throws(Exception::class)
 
  53     fun test01SaveModelType() {
 
  55             log.info("**************** test01SaveModelType  ********************")
 
  57             val content = JacksonUtils.getClassPathFileContent("model_type/data_type/datatype-property.json")
 
  58             var modelType = ModelType()
 
  59             modelType.definitionType = BluePrintConstants.MODEL_DEFINITION_TYPE_DATA_TYPE
 
  60             modelType.derivedFrom = BluePrintConstants.MODEL_TYPE_DATATYPES_ROOT
 
  61             modelType.description = "Definition for Sample Datatype "
 
  62             modelType.definition = JacksonUtils.jsonNode(content)
 
  63             modelType.modelName = modelName
 
  64             modelType.version = "1.0.0"
 
  65             modelType.tags = ("test-datatype ," + BluePrintConstants.MODEL_TYPE_DATATYPES_ROOT + "," +
 
  66                 BluePrintConstants.MODEL_DEFINITION_TYPE_DATA_TYPE)
 
  67             modelType.updatedBy = "xxxxxx@xxx.com"
 
  68             modelType = modelTypeController.saveModelType(modelType)
 
  69             log.info("Saved Mode {}", modelType.toString())
 
  70             Assert.assertNotNull("Failed to get Saved ModelType", modelType)
 
  71             Assert.assertNotNull("Failed to get Saved ModelType, Id", modelType.modelName)
 
  73             val dbModelType = modelTypeController.getModelTypeByName(modelType.modelName)
 
  75                 "Failed to query ResourceMapping for ID (" + dbModelType!!.modelName + ")",
 
  80             modelType.updatedBy = "bs2796@xxx.com"
 
  81             modelType = modelTypeController.saveModelType(modelType)
 
  82             Assert.assertNotNull("Failed to get Saved ModelType", modelType)
 
  83             Assert.assertEquals("Failed to get Saved getUpdatedBy ", "bs2796@xxx.com", modelType.updatedBy)
 
  88     @Throws(Exception::class)
 
  89     fun test02SearchModelTypes() {
 
  91             log.info("*********************** test02SearchModelTypes  ***************************")
 
  92             val tags = "test-datatype"
 
  93             val dbModelTypes = modelTypeController.searchModelTypes(tags)
 
  94             Assert.assertNotNull("Failed to search ResourceMapping by tags", dbModelTypes)
 
  95             Assert.assertTrue("Failed to search ResourceMapping by tags count", dbModelTypes.isNotEmpty())
 
 100     @Throws(Exception::class)
 
 101     fun test03GetModelType() {
 
 103             log.info("************************* test03GetModelType  *********************************")
 
 104             val dbModelType = modelTypeController.getModelTypeByName(modelName)
 
 105             Assert.assertNotNull("Failed to get response for api call getModelByName $modelName", dbModelType)
 
 106             Assert.assertNotNull("Failed to get Id for api call  getModelByName ", dbModelType!!.modelName)
 
 108             val dbDatatypeModelTypes =
 
 109                 modelTypeController.getModelTypeByDefinitionType(BluePrintConstants.MODEL_DEFINITION_TYPE_DATA_TYPE)
 
 110             Assert.assertNotNull("Failed to find getModelTypeByDefinitionType by tags", dbDatatypeModelTypes)
 
 111             Assert.assertTrue("Failed to find getModelTypeByDefinitionType by count", dbDatatypeModelTypes.isNotEmpty())
 
 117     @Throws(Exception::class)
 
 118     fun test04DeleteModelType() {
 
 120             log.info("************************ test03DeleteModelType  ***********************")
 
 121             val dbResourceMapping = modelTypeController.getModelTypeByName(modelName)
 
 122             Assert.assertNotNull("Failed to get response for api call getModelByName ", dbResourceMapping)
 
 123             Assert.assertNotNull(
 
 124                 "Failed to get Id for api call  getModelByName ",
 
 125                 dbResourceMapping!!.modelName
 
 127             modelTypeController.deleteModelTypeByName(dbResourceMapping.modelName)