2 * Copyright © 2017-2018 AT&T Intellectual Property.
\r
3 * Modifications Copyright © 2018 IBM.
\r
5 * Licensed under the Apache License, Version 2.0 (the "License");
\r
6 * you may not use this file except in compliance with the License.
\r
7 * You may obtain a copy of the License at
\r
9 * http://www.apache.org/licenses/LICENSE-2.0
\r
11 * Unless required by applicable law or agreed to in writing, software
\r
12 * distributed under the License is distributed on an "AS IS" BASIS,
\r
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
14 * See the License for the specific language governing permissions and
\r
15 * limitations under the License.
\r
18 package org.onap.ccsdk.features.model.utils;
\r
20 import static org.junit.Assert.assertTrue;
\r
21 import java.io.File;
\r
22 import java.util.ArrayList;
\r
23 import java.util.HashMap;
\r
24 import java.util.List;
\r
25 import java.util.Map;
\r
26 import org.junit.Test;
\r
27 import org.onap.ccsdk.features.model.ConfigModelConstant;
\r
28 import org.onap.ccsdk.features.model.ConfigModelException;
\r
29 import org.onap.ccsdk.features.model.ValidTypes;
\r
30 import org.onap.ccsdk.features.model.data.PropertyDefinition;
\r
31 import org.onap.ccsdk.features.model.data.ResourceAssignment;
\r
32 import org.onap.ccsdk.features.model.data.dict.ResourceDefinition;
\r
33 import org.onap.ccsdk.features.model.utils.ResourceAssignmentUtils;
\r
35 import com.fasterxml.jackson.core.type.TypeReference;
\r
36 import com.fasterxml.jackson.databind.JsonNode;
\r
37 import com.fasterxml.jackson.databind.ObjectMapper;
\r
39 public class ResourceAssignmentUtilsTest {
\r
42 public void testGetArtifactNodeContent() {
\r
43 String nodeTemplateName = "nodeTemplateNmae";
\r
44 String templateContent = "content";
\r
45 Map<String, Object> context = new HashMap<String, Object>();
\r
46 context.put(ConfigModelConstant.PROPERTY_NODE_TEMPLATES_DOT + nodeTemplateName + ".content", templateContent);
\r
48 String retrievedContent = ResourceAssignmentUtils.getArtifactNodeContent(nodeTemplateName, context);
\r
50 assertTrue(templateContent.equals(retrievedContent));
\r
54 public void testGetArtifactNodeMapping() {
\r
55 String nodeTemplateName = "nodeTemplateNmae";
\r
56 String templateContent = "[]";
\r
57 Map<String, Object> context = new HashMap<String, Object>();
\r
58 context.put(ConfigModelConstant.PROPERTY_NODE_TEMPLATES_DOT + nodeTemplateName + ".mapping", templateContent);
\r
60 List<ResourceAssignment> map = ResourceAssignmentUtils.getArtifactNodeMapping(nodeTemplateName, context);
\r
61 assertTrue(map.size() == 0);
\r
65 public void testCleanContextTemplateNDictionaryKeys() {
\r
66 String recipeName = "recipe";
\r
67 Map<String, Object> componentContext = new HashMap<String, Object>();
\r
68 componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);
\r
69 componentContext.put(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + recipeName + ".", "value1");
\r
70 componentContext.put(ConfigModelConstant.PROPERTY_RECIPE_KEY_DOT + recipeName + ".", "value2");
\r
71 ResourceAssignmentUtils.cleanContextTemplateNDictionaryKeys(componentContext);
\r
73 assertTrue(componentContext.size() == 1);
\r
77 public void testGetDictionaryKeyValue() {
\r
78 String recipeName = "recipe";
\r
79 String dictionaryName = "dictionaryKey";
\r
80 Map<String, Object> componentContext = new HashMap<String, Object>();
\r
81 componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);
\r
82 componentContext.put(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + recipeName + "." + dictionaryName,
\r
84 ResourceAssignment resourceAssignment = new ResourceAssignment();
\r
85 resourceAssignment.setDictionaryName(dictionaryName);
\r
87 String value = (String) ResourceAssignmentUtils.getDictionaryKeyValue(componentContext, resourceAssignment);
\r
88 assertTrue("value1".equals(value));
\r
92 public void testGetDictionaryKeyValueWithDictionaryDefinition() {
\r
93 String recipeName = "recipe";
\r
94 String dictionaryName = "dictionaryKey";
\r
95 Map<String, Object> componentContext = new HashMap<String, Object>();
\r
96 componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);
\r
97 componentContext.put(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + recipeName + "." + dictionaryName,
\r
99 ResourceDefinition resourceDefinition = new ResourceDefinition();
\r
100 resourceDefinition.setName(dictionaryName);
\r
102 String value = (String) ResourceAssignmentUtils.getDictionaryKeyValue(componentContext, resourceDefinition);
\r
103 assertTrue("value1".equals(value));
\r
107 public void testGetTemplateKeyValue() {
\r
108 String recipeName = "recipe";
\r
109 String templateKeyName = "templateKey";
\r
110 Map<String, Object> componentContext = new HashMap<String, Object>();
\r
111 componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);
\r
112 componentContext.put(ConfigModelConstant.PROPERTY_RECIPE_KEY_DOT + recipeName + "." + templateKeyName,
\r
114 ResourceAssignment resourceAssignment = new ResourceAssignment();
\r
115 resourceAssignment.setName(templateKeyName);
\r
117 String value = (String) ResourceAssignmentUtils.getTemplateKeyValue(componentContext, resourceAssignment);
\r
118 assertTrue("value1".equals(value));
\r
122 public void testSetResourceDataValue() throws Exception {
\r
123 String recipeName = "recipe";
\r
124 Map<String, Object> componentContext = new HashMap<String, Object>();
\r
125 componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);
\r
127 ResourceAssignment resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_STRING, null);
\r
128 Object value = "value";
\r
129 ResourceAssignmentUtils.setResourceDataValue(componentContext, resourceAssignment, value);
\r
130 assertTrue(value.equals(resourceAssignment.getProperty().getValue()));
\r
132 resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_INTEGER, null);
\r
134 ResourceAssignmentUtils.setResourceDataValue(componentContext, resourceAssignment, value);
\r
135 assertTrue((int) resourceAssignment.getProperty().getValue() == 1);
\r
137 resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_BOOLEAN, null);
\r
139 ResourceAssignmentUtils.setResourceDataValue(componentContext, resourceAssignment, value);
\r
140 assertTrue((boolean) resourceAssignment.getProperty().getValue());
\r
142 resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_FLOAT, null);
\r
144 ResourceAssignmentUtils.setResourceDataValue(componentContext, resourceAssignment, value);
\r
145 assertTrue((float) resourceAssignment.getProperty().getValue() == 1.1f);
\r
149 public void testSetFailedResourceDataValue() throws Exception {
\r
150 ResourceAssignment resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_STRING, "value");
\r
151 String message = "message";
\r
152 ResourceAssignmentUtils.setFailedResourceDataValue(null, resourceAssignment, message);
\r
154 assertTrue(message.equals(resourceAssignment.getMessage()));
\r
155 assertTrue(ConfigModelConstant.STATUS_FAILURE.equals(resourceAssignment.getStatus()));
\r
158 @Test(expected = ConfigModelException.class)
\r
159 public void testAssertTemplateKeyValueNotNull() throws Exception {
\r
160 Map<String, Object> componentContext = null;
\r
161 ResourceAssignment resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_STRING, "value");
\r
162 ResourceAssignmentUtils.assertTemplateKeyValueNotNull(componentContext, resourceAssignment);
\r
166 public void testGenerateResourceDataForAssignments() throws Exception {
\r
167 List<ResourceAssignment> assignments = new ArrayList<ResourceAssignment>();
\r
168 assignments.add(createResourceAssignment("name1", ValidTypes.DATA_TYPE_STRING, "string"));
\r
169 assignments.add(createResourceAssignment("name2", ValidTypes.DATA_TYPE_BOOLEAN, true));
\r
170 assignments.add(createResourceAssignment("name3", ValidTypes.DATA_TYPE_INTEGER, 1));
\r
171 assignments.add(createResourceAssignment("name4", ValidTypes.DATA_TYPE_FLOAT, 1.1f));
\r
172 assignments.add(createResourceAssignment("name5", ValidTypes.DATA_TYPE_TIMESTAMP, "1523908097735"));
\r
173 assignments.add(createResourceAssignment("name6", "", new HashMap<String, String>()));
\r
174 ResourceAssignmentUtils.generateResourceDataForAssignments(assignments);
\r
177 public void testResourceAssignmentForNullEmptyValues() throws Exception {
\r
179 ObjectMapper mapper = new ObjectMapper();
\r
180 JsonNode raContent =
\r
181 mapper.readTree(new File("src/test/resources/service_templates/ra-content-with-mising-value.json"));
\r
183 List<ResourceAssignment> assignments =
\r
184 mapper.readValue(raContent.toString(), new TypeReference<List<ResourceAssignment>>() {});
\r
186 ResourceAssignmentUtils.generateResourceDataForAssignments(assignments);
\r
189 private ResourceAssignment createResourceAssignment(String name, String dataType, Object value) {
\r
190 PropertyDefinition property = new PropertyDefinition();
\r
191 property.setType(dataType);
\r
192 property.setValue(value);
\r
193 property.setRequired(true);
\r
194 ResourceAssignment ra = new ResourceAssignment();
\r
196 ra.setProperty(property);
\r