2 * Copyright © 2017-2018 AT&T Intellectual Property.
3 * Modifications Copyright © 2018 IBM.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 package org.onap.ccsdk.cds.controllerblueprints.core.service
20 import com.fasterxml.jackson.databind.ObjectMapper
22 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
23 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException
24 import org.onap.ccsdk.cds.controllerblueprints.core.TestConstants
25 import org.onap.ccsdk.cds.controllerblueprints.core.data.Activity
26 import org.onap.ccsdk.cds.controllerblueprints.core.data.ArtifactDefinition
27 import org.onap.ccsdk.cds.controllerblueprints.core.data.CapabilityAssignment
28 import org.onap.ccsdk.cds.controllerblueprints.core.data.DataType
29 import org.onap.ccsdk.cds.controllerblueprints.core.data.InterfaceAssignment
30 import org.onap.ccsdk.cds.controllerblueprints.core.data.InterfaceDefinition
31 import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeTemplate
32 import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeType
33 import org.onap.ccsdk.cds.controllerblueprints.core.data.OperationAssignment
34 import org.onap.ccsdk.cds.controllerblueprints.core.data.PolicyType
35 import org.onap.ccsdk.cds.controllerblueprints.core.data.RequirementAssignment
36 import org.onap.ccsdk.cds.controllerblueprints.core.data.ServiceTemplate
37 import org.onap.ccsdk.cds.controllerblueprints.core.data.Step
38 import org.onap.ccsdk.cds.controllerblueprints.core.data.TopologyTemplate
39 import org.onap.ccsdk.cds.controllerblueprints.core.data.Workflow
40 import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintMetadataUtils
41 import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
42 import org.slf4j.LoggerFactory
43 import kotlin.test.assertEquals
44 import kotlin.test.assertNotNull
45 import kotlin.test.assertNull
46 import kotlin.test.assertTrue
51 * @author Brinda Santh
53 class BluePrintContextTest {
55 private val log = LoggerFactory.getLogger(this::class.toString())
57 val blueprintBasePath = TestConstants.PATH_TEST_BLUEPRINTS_BASECONFIG
60 fun testBluePrintContextCreation() {
61 val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath)
62 assertNotNull(bluePrintContext, "Failed to populate Blueprint context")
66 fun testChainedProperty() {
67 val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath)
68 val nodeType = bluePrintContext.nodeTypeChained("component-resource-resolution")
69 assertNotNull(nodeType, "Failed to get chained node type")
70 log.trace("Properties {}", JacksonUtils.getJson(nodeType, true))
75 val serviceTemplate = ServiceTemplate()
76 serviceTemplate.imports = mutableListOf()
77 val bluePrintContext = BluePrintContext(serviceTemplate)
79 assertTrue(bluePrintContext.imports()!!.isEmpty())
81 serviceTemplate.imports = null
82 assertNull(bluePrintContext.imports())
87 val serviceTemplate = ServiceTemplate()
88 serviceTemplate.dataTypes = mutableMapOf()
89 val bluePrintContext = BluePrintContext(serviceTemplate)
91 assertTrue(bluePrintContext.dataTypes()!!.isEmpty())
93 serviceTemplate.dataTypes = null
94 assertNull(bluePrintContext.dataTypes())
99 val topologyTemplate = TopologyTemplate()
100 topologyTemplate.inputs = mutableMapOf()
101 val serviceTemplate = ServiceTemplate()
102 serviceTemplate.topologyTemplate = topologyTemplate
103 val bluePrintContext = BluePrintContext(serviceTemplate)
105 assertTrue(bluePrintContext.inputs()!!.isEmpty())
107 topologyTemplate.inputs = null
109 assertNull(bluePrintContext.inputs())
113 fun testBluePrintJson() {
114 val serviceTemplate = ServiceTemplate()
115 val bluePrintContext = BluePrintContext(serviceTemplate)
117 assertEquals("{\"tosca_definitions_version\":\"controller_blueprint_1_0_0\"}", bluePrintContext.blueprintJson())
120 @Test(expected = BluePrintException::class)
122 val serviceTemplate = ServiceTemplate()
123 serviceTemplate.metadata = mutableMapOf(BluePrintConstants.METADATA_TEMPLATE_NAME to "hello")
124 val bluePrintContext = BluePrintContext(serviceTemplate)
126 assertEquals("hello", bluePrintContext.name())
128 serviceTemplate.metadata = mutableMapOf()
129 val bluePrintContext2 = BluePrintContext(serviceTemplate)
130 bluePrintContext2.name()
133 @Test(expected = BluePrintException::class)
135 val serviceTemplate = ServiceTemplate()
136 serviceTemplate.metadata = mutableMapOf(BluePrintConstants.METADATA_TEMPLATE_VERSION to "hello")
137 val bluePrintContext = BluePrintContext(serviceTemplate)
139 assertEquals("hello", bluePrintContext.version())
141 serviceTemplate.metadata = mutableMapOf()
142 val bluePrintContext2 = BluePrintContext(serviceTemplate)
143 bluePrintContext2.version()
146 @Test(expected = BluePrintException::class)
148 val serviceTemplate = ServiceTemplate()
149 serviceTemplate.metadata = mutableMapOf(BluePrintConstants.METADATA_TEMPLATE_AUTHOR to "hello")
150 val bluePrintContext = BluePrintContext(serviceTemplate)
152 assertEquals("hello", bluePrintContext.author())
154 serviceTemplate.metadata = mutableMapOf()
155 val bluePrintContext2 = BluePrintContext(serviceTemplate)
156 bluePrintContext2.author()
160 fun testWorkflows() {
161 val topologyTemplate = TopologyTemplate()
162 topologyTemplate.workflows = mutableMapOf()
163 val serviceTemplate = ServiceTemplate()
164 serviceTemplate.topologyTemplate = topologyTemplate
165 val bluePrintContext = BluePrintContext(serviceTemplate)
167 assertTrue(bluePrintContext.workflows()!!.isEmpty())
169 topologyTemplate.workflows = null
170 assertNull(bluePrintContext.workflows())
173 @Test(expected = BluePrintException::class)
174 fun testWorkFlowsByName() {
175 val topologyTemplate = TopologyTemplate()
176 topologyTemplate.workflows = mutableMapOf("workflow" to Workflow())
177 val serviceTemplate = ServiceTemplate()
178 serviceTemplate.topologyTemplate = topologyTemplate
179 val bluePrintContext = BluePrintContext(serviceTemplate)
181 assertNotNull(bluePrintContext.workflowByName("workflow"))
183 bluePrintContext.workflowByName("")
187 fun testWorkflowInput() {
188 val topologyTemplate = TopologyTemplate()
189 val workflow = Workflow()
190 workflow.inputs = mutableMapOf()
191 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
192 val serviceTemplate = ServiceTemplate()
193 serviceTemplate.topologyTemplate = topologyTemplate
194 val bluePrintContext = BluePrintContext(serviceTemplate)
196 assertTrue(bluePrintContext.workflowInputs("workflow")!!.isEmpty())
198 workflow.inputs = null
200 assertNull(bluePrintContext.workflowInputs("workflow"))
203 @Test(expected = BluePrintException::class)
204 fun testWorkflowStepByName() {
205 val topologyTemplate = TopologyTemplate()
206 val workflow = Workflow()
207 workflow.steps = mutableMapOf("step" to Step())
208 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
209 val serviceTemplate = ServiceTemplate()
210 serviceTemplate.topologyTemplate = topologyTemplate
211 val bluePrintContext = BluePrintContext(serviceTemplate)
213 assertNotNull(bluePrintContext.workflowStepByName("workflow", "step"))
215 bluePrintContext.workflowStepByName("workflow", "")
218 @Test(expected = BluePrintException::class)
219 fun testWorkflowStepNodeTemplate() {
220 val topologyTemplate = TopologyTemplate()
221 val workflow = Workflow()
223 step.target = "hello"
224 workflow.steps = mutableMapOf("step" to step)
225 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
226 val serviceTemplate = ServiceTemplate()
227 serviceTemplate.topologyTemplate = topologyTemplate
228 val bluePrintContext = BluePrintContext(serviceTemplate)
230 assertEquals("hello", bluePrintContext.workflowStepNodeTemplate("workflow", "step"))
232 bluePrintContext.workflowStepNodeTemplate("workflow", "")
235 @Test(expected = BluePrintException::class)
236 fun testWorkflowFirstStepNodeTemplate() {
237 val topologyTemplate = TopologyTemplate()
238 val workflow = Workflow()
240 step.target = "hello"
241 workflow.steps = mutableMapOf("step" to step, "step2" to Step())
242 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
243 val serviceTemplate = ServiceTemplate()
244 serviceTemplate.topologyTemplate = topologyTemplate
245 val bluePrintContext = BluePrintContext(serviceTemplate)
247 assertEquals("hello", bluePrintContext.workflowFirstStepNodeTemplate("workflow"))
249 workflow.steps = null
250 bluePrintContext.workflowFirstStepNodeTemplate("workflow")
253 @Test(expected = BluePrintException::class)
254 fun testWorkflowStepFirstCallOperation() {
255 val topologyTemplate = TopologyTemplate()
256 val workflow = Workflow()
258 val activity = Activity()
259 activity.callOperation = "hello"
260 step.activities = arrayListOf(activity)
261 workflow.steps = mutableMapOf("step" to step)
262 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
263 val serviceTemplate = ServiceTemplate()
264 serviceTemplate.topologyTemplate = topologyTemplate
265 val bluePrintContext = BluePrintContext(serviceTemplate)
267 assertEquals("hello", bluePrintContext.workflowStepFirstCallOperation("workflow", "step"))
269 bluePrintContext.workflowStepFirstCallOperation("workflow", "")
273 fun testDatatypeByName() {
274 val serviceTemplate = ServiceTemplate()
275 serviceTemplate.dataTypes = mutableMapOf("data" to DataType())
276 val bluePrintContext = BluePrintContext(serviceTemplate)
278 assertNotNull(bluePrintContext.dataTypeByName("data"))
279 assertNull(bluePrintContext.dataTypeByName(""))
283 fun testArtifactTypes() {
284 val serviceTemplate = ServiceTemplate()
285 serviceTemplate.artifactTypes = mutableMapOf()
286 val bluePrintContext = BluePrintContext(serviceTemplate)
288 assertTrue(bluePrintContext.artifactTypes()!!.isEmpty())
290 serviceTemplate.artifactTypes = null
291 assertNull(bluePrintContext.artifactTypes())
295 fun testPolicyTypes() {
296 val serviceTemplate = ServiceTemplate()
297 serviceTemplate.policyTypes = mutableMapOf()
298 val bluePrintContext = BluePrintContext(serviceTemplate)
300 assertTrue(bluePrintContext.policyTypes()!!.isEmpty())
302 serviceTemplate.policyTypes = null
303 assertNull(bluePrintContext.policyTypes())
306 @Test(expected = BluePrintException::class)
307 fun testPolicyTypeByName() {
308 val serviceTemplate = ServiceTemplate()
309 serviceTemplate.policyTypes = mutableMapOf("policy" to PolicyType())
310 val bluePrintContext = BluePrintContext(serviceTemplate)
312 assertNotNull(bluePrintContext.policyTypeByName("policy"))
314 bluePrintContext.policyTypeByName("")
318 fun testPolicyTypesDerivedFrom() {
319 val serviceTemplate = ServiceTemplate()
320 val policyType = PolicyType()
321 policyType.derivedFrom = "hi"
322 val policyType2 = PolicyType()
323 policyType2.derivedFrom = "hello"
324 serviceTemplate.policyTypes = mutableMapOf("policy" to policyType, "policy2" to policyType2)
325 val bluePrintContext = BluePrintContext(serviceTemplate)
327 assertEquals(1, bluePrintContext.policyTypesDerivedFrom("hi")!!.size)
329 serviceTemplate.policyTypes = null
330 assertNull(bluePrintContext.policyTypesDerivedFrom("hi"))
334 fun testPolicyTypesTarget() {
335 val serviceTemplate = ServiceTemplate()
336 val policyType = PolicyType()
337 policyType.targets = mutableListOf("hi")
338 val policyType2 = PolicyType()
339 policyType2.targets = mutableListOf()
340 serviceTemplate.policyTypes = mutableMapOf("policy" to policyType, "policy2" to policyType2)
341 val bluePrintContext = BluePrintContext(serviceTemplate)
343 assertEquals(1, bluePrintContext.policyTypesTarget("hi")!!.size)
345 serviceTemplate.policyTypes = null
346 assertNull(bluePrintContext.policyTypesTarget("hi"))
350 fun testPolicyTypesTargetNDerivedFrom() {
351 val serviceTemplate = ServiceTemplate()
352 val policyType = PolicyType()
353 policyType.targets = mutableListOf("hi")
354 policyType.derivedFrom = "hi"
355 val policyType2 = PolicyType()
356 policyType2.targets = mutableListOf()
357 policyType2.derivedFrom = "hi"
358 serviceTemplate.policyTypes = mutableMapOf("policy" to policyType, "policy2" to policyType2)
359 val bluePrintContext = BluePrintContext(serviceTemplate)
361 assertEquals(1, bluePrintContext.policyTypesTargetNDerivedFrom("hi", "hi")!!.size)
363 serviceTemplate.policyTypes = null
364 assertNull(bluePrintContext.policyTypesTargetNDerivedFrom("hi", "hi"))
368 fun testNodeTypeDerivedFrom() {
369 val serviceTemplate = ServiceTemplate()
370 val nodeType = NodeType()
371 nodeType.derivedFrom = "hi"
372 val nodeType2 = NodeType()
373 nodeType2.derivedFrom = "hiii"
374 serviceTemplate.nodeTypes = mutableMapOf("node" to nodeType, "node2" to nodeType2)
375 val bluePrintContext = BluePrintContext(serviceTemplate)
377 assertEquals(1, bluePrintContext.nodeTypeDerivedFrom("hi")!!.size)
379 serviceTemplate.nodeTypes = null
380 assertNull(bluePrintContext.nodeTypeDerivedFrom("hi"))
383 @Test(expected = BluePrintException::class)
384 fun testInterfaceNameForNodeType() {
385 val serviceTemplate = ServiceTemplate()
386 val nodeType = NodeType()
387 nodeType.interfaces = mutableMapOf("hello" to InterfaceDefinition(), "hi" to InterfaceDefinition())
388 serviceTemplate.nodeTypes = mutableMapOf("node" to nodeType)
389 val bluePrintContext = BluePrintContext(serviceTemplate)
391 assertEquals("hello", bluePrintContext.interfaceNameForNodeType("node"))
393 bluePrintContext.interfaceNameForNodeType("")
397 fun testNodeTemplateForNodeType() {
398 val serviceTemplate = ServiceTemplate()
399 val nodeTemplate = NodeTemplate()
400 nodeTemplate.type = "hello"
401 val nodeTemplate2 = NodeTemplate()
402 nodeTemplate2.type = "hi"
403 serviceTemplate.topologyTemplate = TopologyTemplate()
404 serviceTemplate.topologyTemplate!!.nodeTemplates =
405 mutableMapOf("node" to nodeTemplate, "node2" to nodeTemplate2)
406 val bluePrintContext = BluePrintContext(serviceTemplate)
408 assertEquals(1, bluePrintContext.nodeTemplateForNodeType("hello")!!.size)
410 serviceTemplate.topologyTemplate!!.nodeTemplates = null
411 assertNull(bluePrintContext.nodeTemplateForNodeType("hello"))
415 fun testNodeTemplateProperty() {
416 val serviceTemplate = ServiceTemplate()
417 val nodeTemplate = NodeTemplate()
418 nodeTemplate.properties = mutableMapOf("prop" to ObjectMapper().createObjectNode())
419 serviceTemplate.topologyTemplate = TopologyTemplate()
420 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
421 val bluePrintContext = BluePrintContext(serviceTemplate)
423 assertNotNull(bluePrintContext.nodeTemplateProperty("node", "prop"))
425 assertNull(bluePrintContext.nodeTemplateProperty("node", ""))
427 nodeTemplate.properties = null
428 assertNull(bluePrintContext.nodeTemplateProperty("node", "prop"))
432 fun testNodeTemplateArtifacts() {
433 val serviceTemplate = ServiceTemplate()
434 val nodeTemplate = NodeTemplate()
435 nodeTemplate.artifacts = mutableMapOf()
436 serviceTemplate.topologyTemplate = TopologyTemplate()
437 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
438 val bluePrintContext = BluePrintContext(serviceTemplate)
440 assertTrue(bluePrintContext.nodeTemplateArtifacts("node")!!.isEmpty())
443 @Test(expected = BluePrintException::class)
444 fun testNodeTemplateArtifact() {
445 val serviceTemplate = ServiceTemplate()
446 val nodeTemplate = NodeTemplate()
447 nodeTemplate.artifacts = mutableMapOf("art" to ArtifactDefinition())
448 serviceTemplate.topologyTemplate = TopologyTemplate()
449 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
450 val bluePrintContext = BluePrintContext(serviceTemplate)
452 assertNotNull(bluePrintContext.nodeTemplateArtifact("node", "art"))
454 bluePrintContext.nodeTemplateArtifact("node", "")
457 @Test(expected = BluePrintException::class)
458 fun testNodeTemplateArtifactForArtifactType() {
459 val serviceTemplate = ServiceTemplate()
460 val nodeTemplate = NodeTemplate()
461 val artifactDefinition = ArtifactDefinition()
462 artifactDefinition.type = "type"
463 val artifactDefinition2 = ArtifactDefinition()
464 artifactDefinition2.type = "No type"
465 nodeTemplate.artifacts = mutableMapOf("art" to artifactDefinition, "art2" to artifactDefinition2)
466 serviceTemplate.topologyTemplate = TopologyTemplate()
467 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
468 val bluePrintContext = BluePrintContext(serviceTemplate)
470 assertNotNull(bluePrintContext.nodeTemplateArtifactForArtifactType("node", "type"))
472 bluePrintContext.nodeTemplateArtifactForArtifactType("", "")
475 @Test(expected = BluePrintException::class)
476 fun testNodeTemplateFirstInterface() {
477 val serviceTemplate = ServiceTemplate()
478 val nodeTemplate = NodeTemplate()
479 nodeTemplate.interfaces = mutableMapOf("interface" to InterfaceAssignment(), "interf" to InterfaceAssignment())
480 serviceTemplate.topologyTemplate = TopologyTemplate()
481 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
482 val bluePrintContext = BluePrintContext(serviceTemplate)
484 assertNotNull(bluePrintContext.nodeTemplateFirstInterface("node"))
486 nodeTemplate.interfaces = null
487 bluePrintContext.nodeTemplateFirstInterface("node")
490 @Test(expected = BluePrintException::class)
491 fun testNodeTemplateFirstInterfaceName() {
492 val serviceTemplate = ServiceTemplate()
493 val nodeTemplate = NodeTemplate()
494 nodeTemplate.interfaces = mutableMapOf("interface" to InterfaceAssignment(), "interf" to InterfaceAssignment())
495 serviceTemplate.topologyTemplate = TopologyTemplate()
496 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
497 val bluePrintContext = BluePrintContext(serviceTemplate)
499 assertEquals("interface", bluePrintContext.nodeTemplateFirstInterfaceName("node"))
501 nodeTemplate.interfaces = null
502 bluePrintContext.nodeTemplateFirstInterfaceName("node")
505 @Test(expected = BluePrintException::class)
506 fun testNodeTemplateFirstInterfaceFirstOperationName() {
507 val serviceTemplate = ServiceTemplate()
508 val nodeTemplate = NodeTemplate()
509 val interfaceAssignment = InterfaceAssignment()
510 interfaceAssignment.operations = mutableMapOf("op" to OperationAssignment(), "op2" to OperationAssignment())
511 nodeTemplate.interfaces = mutableMapOf("intf" to interfaceAssignment)
512 serviceTemplate.topologyTemplate = TopologyTemplate()
513 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
514 val bluePrintContext = BluePrintContext(serviceTemplate)
516 assertEquals("op", bluePrintContext.nodeTemplateFirstInterfaceFirstOperationName("node"))
518 interfaceAssignment.operations = null
519 bluePrintContext.nodeTemplateFirstInterfaceFirstOperationName("node")
522 @Test(expected = BluePrintException::class)
523 fun testNodeTemplateCapability() {
524 val serviceTemplate = ServiceTemplate()
525 val nodeTemplate = NodeTemplate()
526 nodeTemplate.capabilities = mutableMapOf("cap" to CapabilityAssignment())
527 serviceTemplate.topologyTemplate = TopologyTemplate()
528 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
529 val bluePrintContext = BluePrintContext(serviceTemplate)
531 assertNotNull(bluePrintContext.nodeTemplateCapability("node", "cap"))
533 bluePrintContext.nodeTemplateCapability("node", "")
536 @Test(expected = BluePrintException::class)
537 fun testNodeTemplateRequirement() {
538 val serviceTemplate = ServiceTemplate()
539 val nodeTemplate = NodeTemplate()
540 nodeTemplate.requirements = mutableMapOf("req" to RequirementAssignment())
541 serviceTemplate.topologyTemplate = TopologyTemplate()
542 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
543 val bluePrintContext = BluePrintContext(serviceTemplate)
545 assertNotNull(bluePrintContext.nodeTemplateRequirement("node", "req"))
547 bluePrintContext.nodeTemplateRequirement("node", "")
550 @Test(expected = BluePrintException::class)
551 fun testNodeTemplateRequirementNode() {
552 val serviceTemplate = ServiceTemplate()
553 val nodeTemplate = NodeTemplate()
554 val requirementAssignment = RequirementAssignment()
555 requirementAssignment.node = "node"
556 nodeTemplate.requirements = mutableMapOf("req" to requirementAssignment)
557 serviceTemplate.topologyTemplate = TopologyTemplate()
558 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
559 val bluePrintContext = BluePrintContext(serviceTemplate)
561 assertNotNull(bluePrintContext.nodeTemplateRequirementNode("node", "req"))
563 bluePrintContext.nodeTemplateRequirementNode("node", "")
567 fun testNodeTemplateCapabilityProperty() {
568 val serviceTemplate = ServiceTemplate()
569 val nodeTemplate = NodeTemplate()
570 val capabilityAssignment = CapabilityAssignment()
571 capabilityAssignment.properties = mutableMapOf("prop" to ObjectMapper().createObjectNode())
572 nodeTemplate.capabilities = mutableMapOf("cap" to capabilityAssignment)
573 serviceTemplate.topologyTemplate = TopologyTemplate()
574 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
575 val bluePrintContext = BluePrintContext(serviceTemplate)
577 assertNotNull(bluePrintContext.nodeTemplateCapabilityProperty("node", "cap", "prop"))
579 capabilityAssignment.properties = null
581 assertNull(bluePrintContext.nodeTemplateCapabilityProperty("node", "cap", "prop"))