Fix OSGi wiring issues
[ccsdk/features.git] / blueprints-processor / plugin / model-provider / src / test / java / org / onap / ccsdk / config / model / utils / ResourceAssignmentUtilsTest.java
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  * Modifications Copyright © 2018 IBM.\r
4  * \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
8  * \r
9  * http://www.apache.org/licenses/LICENSE-2.0\r
10  * \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
16  */\r
17 \r
18 package org.onap.ccsdk.config.model.utils;\r
19 \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.config.model.ConfigModelConstant;\r
28 import org.onap.ccsdk.config.model.ConfigModelException;\r
29 import org.onap.ccsdk.config.model.ValidTypes;\r
30 import org.onap.ccsdk.config.model.data.PropertyDefinition;\r
31 import org.onap.ccsdk.config.model.data.ResourceAssignment;\r
32 import org.onap.ccsdk.config.model.data.dict.ResourceDefinition;\r
33 import com.fasterxml.jackson.core.type.TypeReference;\r
34 import com.fasterxml.jackson.databind.JsonNode;\r
35 import com.fasterxml.jackson.databind.ObjectMapper;\r
36 \r
37 public class ResourceAssignmentUtilsTest {\r
38 \r
39     @Test\r
40     public void testGetArtifactNodeContent() {\r
41         String nodeTemplateName = "nodeTemplateNmae";\r
42         String templateContent = "content";\r
43         Map<String, Object> context = new HashMap<String, Object>();\r
44         context.put(ConfigModelConstant.PROPERTY_NODE_TEMPLATES_DOT + nodeTemplateName + ".content", templateContent);\r
45 \r
46         String retrievedContent = ResourceAssignmentUtils.getArtifactNodeContent(nodeTemplateName, context);\r
47 \r
48         assertTrue(templateContent.equals(retrievedContent));\r
49     }\r
50 \r
51     @Test\r
52     public void testGetArtifactNodeMapping() {\r
53         String nodeTemplateName = "nodeTemplateNmae";\r
54         String templateContent = "[]";\r
55         Map<String, Object> context = new HashMap<String, Object>();\r
56         context.put(ConfigModelConstant.PROPERTY_NODE_TEMPLATES_DOT + nodeTemplateName + ".mapping", templateContent);\r
57 \r
58         List<ResourceAssignment> map = ResourceAssignmentUtils.getArtifactNodeMapping(nodeTemplateName, context);\r
59         assertTrue(map.size() == 0);\r
60     }\r
61 \r
62     @Test\r
63     public void testCleanContextTemplateNDictionaryKeys() {\r
64         String recipeName = "recipe";\r
65         Map<String, Object> componentContext = new HashMap<String, Object>();\r
66         componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);\r
67         componentContext.put(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + recipeName + ".", "value1");\r
68         componentContext.put(ConfigModelConstant.PROPERTY_RECIPE_KEY_DOT + recipeName + ".", "value2");\r
69         ResourceAssignmentUtils.cleanContextTemplateNDictionaryKeys(componentContext);\r
70 \r
71         assertTrue(componentContext.size() == 1);\r
72     }\r
73 \r
74     @Test\r
75     public void testGetDictionaryKeyValue() {\r
76         String recipeName = "recipe";\r
77         String dictionaryName = "dictionaryKey";\r
78         Map<String, Object> componentContext = new HashMap<String, Object>();\r
79         componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);\r
80         componentContext.put(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + recipeName + "." + dictionaryName,\r
81                 "value1");\r
82         ResourceAssignment resourceAssignment = new ResourceAssignment();\r
83         resourceAssignment.setDictionaryName(dictionaryName);\r
84 \r
85         String value = (String) ResourceAssignmentUtils.getDictionaryKeyValue(componentContext, resourceAssignment);\r
86         assertTrue("value1".equals(value));\r
87     }\r
88 \r
89     @Test\r
90     public void testGetDictionaryKeyValueWithDictionaryDefinition() {\r
91         String recipeName = "recipe";\r
92         String dictionaryName = "dictionaryKey";\r
93         Map<String, Object> componentContext = new HashMap<String, Object>();\r
94         componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);\r
95         componentContext.put(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + recipeName + "." + dictionaryName,\r
96                 "value1");\r
97         ResourceDefinition resourceDefinition = new ResourceDefinition();\r
98         resourceDefinition.setName(dictionaryName);\r
99 \r
100         String value = (String) ResourceAssignmentUtils.getDictionaryKeyValue(componentContext, resourceDefinition);\r
101         assertTrue("value1".equals(value));\r
102     }\r
103 \r
104     @Test\r
105     public void testGetTemplateKeyValue() {\r
106         String recipeName = "recipe";\r
107         String templateKeyName = "templateKey";\r
108         Map<String, Object> componentContext = new HashMap<String, Object>();\r
109         componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);\r
110         componentContext.put(ConfigModelConstant.PROPERTY_RECIPE_KEY_DOT + recipeName + "." + templateKeyName,\r
111                 "value1");\r
112         ResourceAssignment resourceAssignment = new ResourceAssignment();\r
113         resourceAssignment.setName(templateKeyName);\r
114 \r
115         String value = (String) ResourceAssignmentUtils.getTemplateKeyValue(componentContext, resourceAssignment);\r
116         assertTrue("value1".equals(value));\r
117     }\r
118 \r
119     @Test\r
120     public void testSetResourceDataValue() throws Exception {\r
121         String recipeName = "recipe";\r
122         Map<String, Object> componentContext = new HashMap<String, Object>();\r
123         componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);\r
124 \r
125         ResourceAssignment resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_STRING, null);\r
126         Object value = "value";\r
127         ResourceAssignmentUtils.setResourceDataValue(componentContext, resourceAssignment, value);\r
128         assertTrue(value.equals(resourceAssignment.getProperty().getValue()));\r
129 \r
130         resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_INTEGER, null);\r
131         value = "1";\r
132         ResourceAssignmentUtils.setResourceDataValue(componentContext, resourceAssignment, value);\r
133         assertTrue((int) resourceAssignment.getProperty().getValue() == 1);\r
134 \r
135         resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_BOOLEAN, null);\r
136         value = "true";\r
137         ResourceAssignmentUtils.setResourceDataValue(componentContext, resourceAssignment, value);\r
138         assertTrue((boolean) resourceAssignment.getProperty().getValue());\r
139 \r
140         resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_FLOAT, null);\r
141         value = "1.1";\r
142         ResourceAssignmentUtils.setResourceDataValue(componentContext, resourceAssignment, value);\r
143         assertTrue((float) resourceAssignment.getProperty().getValue() == 1.1f);\r
144     }\r
145 \r
146     @Test\r
147     public void testSetFailedResourceDataValue() throws Exception {\r
148         ResourceAssignment resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_STRING, "value");\r
149         String message = "message";\r
150         ResourceAssignmentUtils.setFailedResourceDataValue(null, resourceAssignment, message);\r
151 \r
152         assertTrue(message.equals(resourceAssignment.getMessage()));\r
153         assertTrue(ConfigModelConstant.STATUS_FAILURE.equals(resourceAssignment.getStatus()));\r
154     }\r
155 \r
156     @Test(expected = ConfigModelException.class)\r
157     public void testAssertTemplateKeyValueNotNull() throws Exception {\r
158         Map<String, Object> componentContext = null;\r
159         ResourceAssignment resourceAssignment = createResourceAssignment("name1", ValidTypes.DATA_TYPE_STRING, "value");\r
160         ResourceAssignmentUtils.assertTemplateKeyValueNotNull(componentContext, resourceAssignment);\r
161     }\r
162 \r
163     @Test\r
164     public void testGenerateResourceDataForAssignments() throws Exception {\r
165         List<ResourceAssignment> assignments = new ArrayList<ResourceAssignment>();\r
166         assignments.add(createResourceAssignment("name1", ValidTypes.DATA_TYPE_STRING, "string"));\r
167         assignments.add(createResourceAssignment("name2", ValidTypes.DATA_TYPE_BOOLEAN, true));\r
168         assignments.add(createResourceAssignment("name3", ValidTypes.DATA_TYPE_INTEGER, 1));\r
169         assignments.add(createResourceAssignment("name4", ValidTypes.DATA_TYPE_FLOAT, 1.1f));\r
170         assignments.add(createResourceAssignment("name5", ValidTypes.DATA_TYPE_TIMESTAMP, "1523908097735"));\r
171         assignments.add(createResourceAssignment("name6", "", new HashMap<String, String>()));\r
172         ResourceAssignmentUtils.generateResourceDataForAssignments(assignments);\r
173     }\r
174 \r
175     public void testResourceAssignmentForNullEmptyValues() throws Exception {\r
176 \r
177         ObjectMapper mapper = new ObjectMapper();\r
178         JsonNode raContent =\r
179                 mapper.readTree(new File("src/test/resources/service_templates/ra-content-with-mising-value.json"));\r
180 \r
181         List<ResourceAssignment> assignments =\r
182                 mapper.readValue(raContent.toString(), new TypeReference<List<ResourceAssignment>>() {});\r
183 \r
184         ResourceAssignmentUtils.generateResourceDataForAssignments(assignments);\r
185     }\r
186 \r
187     private ResourceAssignment createResourceAssignment(String name, String dataType, Object value) {\r
188         PropertyDefinition property = new PropertyDefinition();\r
189         property.setType(dataType);\r
190         property.setValue(value);\r
191         property.setRequired(true);\r
192         ResourceAssignment ra = new ResourceAssignment();\r
193         ra.setName(name);\r
194         ra.setProperty(property);\r
195         return ra;\r
196     }\r
197 \r
198 }\r