68031d2924c898231e64d152637feba0b446e8c9
[ccsdk/apps.git] /
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.apps.controllerblueprints.core.service\r
19 \r
20 import com.att.eelf.configuration.EELFLogger\r
21 import com.att.eelf.configuration.EELFManager\r
22 import com.fasterxml.jackson.databind.JsonNode\r
23 import org.junit.Test\r
24 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants\r
25 import org.onap.ccsdk.apps.controllerblueprints.core.asJsonPrimitive\r
26 import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintMetadataUtils\r
27 import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintRuntimeUtils\r
28 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils.jsonNodeFromFile\r
29 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils.jsonNodeFromObject\r
30 import kotlin.test.assertEquals\r
31 import kotlin.test.assertNotNull\r
32 \r
33 /**\r
34  *\r
35  *\r
36  * @author Brinda Santh\r
37  */\r
38 class BluePrintRuntimeServiceTest {\r
39     private val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())\r
40 \r
41     @Test\r
42     fun testResolveNodeTemplateProperties() {\r
43         log.info("************************ testResolveNodeTemplateProperties **********************")\r
44 \r
45         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
46 \r
47         val inputDataPath = "src/test/resources/data/default-context.json"\r
48 \r
49         val inputNode: JsonNode = jsonNodeFromFile(inputDataPath)\r
50         bluePrintRuntimeService.assignInputs(inputNode)\r
51 \r
52         val propContext: MutableMap<String, JsonNode> = bluePrintRuntimeService.resolveNodeTemplateProperties("resource-assignment-action")\r
53 \r
54         assertNotNull(propContext, "Failed to populate interface property values")\r
55         assertEquals(propContext.get("mode"), "sync".asJsonPrimitive(), "Failed to populate parameter process-name")\r
56         assertEquals(propContext.get("version"), "1.0.0".asJsonPrimitive(), "Failed to populate parameter version")\r
57     }\r
58 \r
59     @Test\r
60     fun testResolveNodeTemplateInterfaceOperationInputs() {\r
61         log.info("************************ testResolveNodeTemplateInterfaceOperationInputs **********************")\r
62 \r
63         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
64 \r
65         val executionContext = bluePrintRuntimeService.getExecutionContext()\r
66 \r
67         BluePrintRuntimeUtils.assignInputsFromClassPathFile(bluePrintRuntimeService.bluePrintContext(),\r
68                 "data/default-context.json", executionContext)\r
69 \r
70         val inContext: MutableMap<String, JsonNode> = bluePrintRuntimeService.resolveNodeTemplateInterfaceOperationInputs("resource-assignment-ra-component",\r
71                 "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode", "process")\r
72 \r
73         log.info("In Context {}", inContext)\r
74 \r
75         assertNotNull(inContext, "Failed to populate interface input property values")\r
76         assertEquals(inContext.get("action-name"), "sample-action".asJsonPrimitive(), "Failed to populate parameter action-name")\r
77         assertEquals(inContext.get("request-id"), "12345".asJsonPrimitive(), "Failed to populate parameter action-name")\r
78     }\r
79 \r
80     @Test\r
81     fun testResolveNodeTemplateInterfaceOperationOutputs() {\r
82         log.info("************************ testResolveNodeTemplateInterfaceOperationOutputs **********************")\r
83 \r
84         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
85 \r
86         val successValue: JsonNode = jsonNodeFromObject("Success")\r
87         val paramValue: JsonNode = jsonNodeFromObject("param-content")\r
88 \r
89         bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment-ra-component", "params", paramValue)\r
90 \r
91         bluePrintRuntimeService.resolveNodeTemplateInterfaceOperationOutputs("resource-assignment-ra-component",\r
92                 "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode", "process")\r
93 \r
94         val resourceAssignmentParamsNode = bluePrintRuntimeService.getNodeTemplateOperationOutputValue("resource-assignment-ra-component",\r
95                 "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode", "process", "resource-assignment-params")\r
96 \r
97         val statusNode = bluePrintRuntimeService.getNodeTemplateOperationOutputValue("resource-assignment-ra-component",\r
98                 "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode", "process", "status")\r
99 \r
100         assertEquals(paramValue, resourceAssignmentParamsNode, "Failed to get operation property resource-assignment-params")\r
101 \r
102         assertEquals(successValue, statusNode, "Failed to get operation property status")\r
103 \r
104 \r
105     }\r
106 \r
107     @Test\r
108     fun testNodeTemplateContextProperty() {\r
109         log.info("************************ testNodeTemplateContextProperty **********************")\r
110         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
111 \r
112         bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment-ra-component", "context1",\r
113                 jsonNodeFromObject("context1-value"))\r
114         bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment-ra-component", "context2",\r
115                 jsonNodeFromObject("context2-value"))\r
116 \r
117         val keys = listOf("context1", "context2")\r
118 \r
119         val jsonValueNode = bluePrintRuntimeService.getJsonForNodeTemplateAttributeProperties("resource-assignment-ra-component", keys)\r
120         assertNotNull(jsonValueNode, "Failed to get Json for Node Template Context Properties")\r
121         log.info("JSON Prepared Value Context {}", jsonValueNode)\r
122 \r
123     }\r
124 \r
125     private fun getBluePrintRuntimeService(): BluePrintRuntimeService<MutableMap<String, JsonNode>> {\r
126         val blueprintBasePath: String = ("load/blueprints/baseconfiguration")\r
127         val blueprintRuntime = BluePrintMetadataUtils.getBluePrintRuntime("1234", blueprintBasePath)\r
128         val checkBasePath = blueprintRuntime.get(BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH)\r
129 \r
130         assertEquals(blueprintBasePath.asJsonPrimitive(), checkBasePath, "Failed to get base path after runtime creation")\r
131 \r
132         return blueprintRuntime\r
133     }\r
134 \r
135 }