2  * Copyright © 2017-2018 AT&T Intellectual Property.
\r 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
\r 
   5  * you may not use this file except in compliance with the License.
\r 
   6  * You may obtain a copy of the License at
\r 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
\r 
  10  * Unless required by applicable law or agreed to in writing, software
\r 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
\r 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r 
  13  * See the License for the specific language governing permissions and
\r 
  14  * limitations under the License.
\r 
  17 package org.onap.ccsdk.apps.controllerblueprints.service.rs;
\r 
  19 import org.apache.commons.collections.CollectionUtils;
\r 
  20 import org.apache.commons.io.FileUtils;
\r 
  21 import org.junit.Assert;
\r 
  22 import org.junit.FixMethodOrder;
\r 
  23 import org.junit.Test;
\r 
  24 import org.junit.runner.RunWith;
\r 
  25 import org.junit.runners.MethodSorters;
\r 
  26 import org.onap.ccsdk.apps.controllerblueprints.TestApplication;
\r 
  27 import org.onap.ccsdk.apps.controllerblueprints.TestConfiguration;
\r 
  28 import org.onap.ccsdk.apps.controllerblueprints.core.ConfigModelConstant;
\r 
  29 import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate;
\r 
  30 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils;
\r 
  31 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment;
\r 
  32 import org.onap.ccsdk.apps.controllerblueprints.service.domain.ConfigModelContent;
\r 
  33 import org.onap.ccsdk.apps.controllerblueprints.service.model.AutoMapResponse;
\r 
  34 import org.slf4j.Logger;
\r 
  35 import org.slf4j.LoggerFactory;
\r 
  36 import org.springframework.beans.factory.annotation.Autowired;
\r 
  37 import org.springframework.boot.test.context.SpringBootTest;
\r 
  38 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
\r 
  39 import org.springframework.test.context.ContextConfiguration;
\r 
  40 import org.springframework.test.context.junit4.SpringRunner;
\r 
  42 import java.io.File;
\r 
  43 import java.nio.charset.Charset;
\r 
  44 import java.util.List;
\r 
  47 @RunWith(SpringRunner.class)
\r 
  48 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
\r 
  49 @ContextConfiguration(classes = {TestApplication.class, TestConfiguration.class})
\r 
  50 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
\r 
  51 public class ServiceTemplateRestTest {
\r 
  53     private static Logger log = LoggerFactory.getLogger(ServiceTemplateRestTest.class);
\r 
  55     ModelTypeRest modelTypeRest;
\r 
  58     private ServiceTemplateRest serviceTemplateRest;
\r 
  61     public void test02EnrichServiceTemplate() throws Exception {
\r 
  62         log.info("*********** test02EnrichServiceTemplate  ***********************");
\r 
  63         String file = "src/test/resources/enhance/enhance-template.json";
\r 
  65         String serviceTemplateContent = FileUtils.readFileToString(new File(file), Charset.defaultCharset());
\r 
  67         ServiceTemplate serviceTemplate = JacksonUtils.readValue(serviceTemplateContent, ServiceTemplate.class);
\r 
  69         serviceTemplate = serviceTemplateRest.enrichServiceTemplate(serviceTemplate);
\r 
  71         String enhancedFile = "src/test/resources/enhance/enhanced-template.json";
\r 
  73         FileUtils.write(new File(enhancedFile),
\r 
  74                 JacksonUtils.getJson(serviceTemplate, true), Charset.defaultCharset());
\r 
  76         Assert.assertNotNull("Failed to get Enriched Blueprints, Return object is Null", serviceTemplate);
\r 
  77         Assert.assertNotNull("Failed to get Enriched Blueprints Data Type, Return object is Null",
\r 
  78                 serviceTemplate.getDataTypes());
\r 
  79         Assert.assertNotNull("Failed to get Enriched Blueprints Node Type, Return object is Null",
\r 
  80                 serviceTemplate.getNodeTypes());
\r 
  81         log.trace("Enriched Service Template :\n" + JacksonUtils.getJson(serviceTemplate, true));
\r 
  85     public void test03ValidateServiceTemplate() throws Exception {
\r 
  86         log.info("*********** test03ValidateServiceTemplate  *******************************************");
\r 
  87         String enhancedFile = "src/test/resources/enhance/enhanced-template.json";
\r 
  88         String serviceTemplateContent = FileUtils.readFileToString(new File(enhancedFile), Charset.defaultCharset());
\r 
  90         ServiceTemplate serviceTemplate =
\r 
  91                 JacksonUtils.readValue(serviceTemplateContent, ServiceTemplate.class);
\r 
  93         serviceTemplate = serviceTemplateRest.validateServiceTemplate(serviceTemplate);
\r 
  95         Assert.assertNotNull("Failed to validate Service Template, Return object is Null", serviceTemplate);
\r 
  96         Assert.assertNotNull("Failed to get Service Template Data Type, Return object is Null",
\r 
  97                 serviceTemplate.getDataTypes());
\r 
  98         Assert.assertNotNull("Failed to get Service Template Node Type, Return object is Null",
\r 
  99                 serviceTemplate.getNodeTypes());
\r 
 101         log.trace("Validated Service Template :\n" + JacksonUtils.getJson(serviceTemplate, true));
\r 
 107     public void test04GenerateResourceAssignments() throws Exception {
\r 
 108         log.info("*********** test04GenerateResourceAssignments  *******************************************");
\r 
 109         ConfigModelContent baseConfigConfigModelContent = new ConfigModelContent();
\r 
 110         String baseConfigContent = FileUtils.readFileToString(new File("load/blueprints/vrr-test/Templates/base-config-template.vtl")
\r 
 111                 , Charset.defaultCharset());
\r 
 112         baseConfigConfigModelContent.setName("base-config-template");
\r 
 113         baseConfigConfigModelContent.setContentType(ConfigModelConstant.MODEL_CONTENT_TYPE_TEMPLATE);
\r 
 114         baseConfigConfigModelContent.setContent(baseConfigContent);
\r 
 116         List<ResourceAssignment> resourceAssignments =
\r 
 117                 serviceTemplateRest.generateResourceAssignments(baseConfigConfigModelContent);
\r 
 119         Assert.assertNotNull("Failed to get ResourceAssignments, Return object is Null", resourceAssignments);
\r 
 120         Assert.assertTrue("Failed to get ResourceAssignments count", resourceAssignments.size() > 0);
\r 
 122         log.trace("Validated Service Template :\n" + JacksonUtils.getJson(resourceAssignments, true));
\r 
 128     public void test05AutoMap() throws Exception {
\r 
 129         log.info("*********** test05AutoMap  *******************************************");
\r 
 131         String resourceassignmentContent = FileUtils.readFileToString(
\r 
 132                 new File("src/test/resources/resourcedictionary/automap.json"), Charset.defaultCharset());
\r 
 133         List<ResourceAssignment> batchResourceAssignment =
\r 
 134                 JacksonUtils.getListFromJson(resourceassignmentContent, ResourceAssignment.class);
\r 
 135         AutoMapResponse autoMapResponse = serviceTemplateRest.autoMap(batchResourceAssignment);
\r 
 137         Assert.assertNotNull("Failed to get ResourceAssignments, Return object is Null",
\r 
 138                 autoMapResponse.getResourceAssignments());
\r 
 139         Assert.assertNotNull("Failed to get Data Dictionary from ResourceAssignments",
\r 
 140                 autoMapResponse.getDataDictionaries());
\r 
 141         Assert.assertTrue("Failed to get ResourceAssignments count",
\r 
 142                 CollectionUtils.isNotEmpty(autoMapResponse.getDataDictionaries()));
\r 
 144         List<ResourceAssignment> autoMappedResourceAssignment = autoMapResponse.getResourceAssignments();
\r 
 145         autoMappedResourceAssignment.forEach(resourceAssignment -> {
\r 
 146             if ("bundle-id".equals(resourceAssignment.getName())) {
\r 
 147                 Assert.assertEquals("Failed to assign default first source", "db",
\r 
 148                         resourceAssignment.getDictionarySource());
\r