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.data.Activity
25 import org.onap.ccsdk.cds.controllerblueprints.core.data.ArtifactDefinition
26 import org.onap.ccsdk.cds.controllerblueprints.core.data.CapabilityAssignment
27 import org.onap.ccsdk.cds.controllerblueprints.core.data.DataType
28 import org.onap.ccsdk.cds.controllerblueprints.core.data.InterfaceAssignment
29 import org.onap.ccsdk.cds.controllerblueprints.core.data.InterfaceDefinition
30 import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeTemplate
31 import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeType
32 import org.onap.ccsdk.cds.controllerblueprints.core.data.OperationAssignment
33 import org.onap.ccsdk.cds.controllerblueprints.core.data.PolicyType
34 import org.onap.ccsdk.cds.controllerblueprints.core.data.RequirementAssignment
35 import org.onap.ccsdk.cds.controllerblueprints.core.data.ServiceTemplate
36 import org.onap.ccsdk.cds.controllerblueprints.core.data.Step
37 import org.onap.ccsdk.cds.controllerblueprints.core.data.TopologyTemplate
38 import org.onap.ccsdk.cds.controllerblueprints.core.data.Workflow
39 import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintMetadataUtils
40 import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
41 import org.slf4j.LoggerFactory
42 import kotlin.test.assertEquals
43 import kotlin.test.assertNotNull
44 import kotlin.test.assertNull
45 import kotlin.test.assertTrue
50 * @author Brinda Santh
52 class BluePrintContextTest {
54 private val log = LoggerFactory.getLogger(this::class.toString())
56 val blueprintBasePath: String = ("./../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration")
59 fun testBluePrintContextCreation() {
60 val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath)
61 assertNotNull(bluePrintContext, "Failed to populate Blueprint context")
65 fun testChainedProperty() {
66 val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath)
67 val nodeType = bluePrintContext.nodeTypeChained("component-resource-resolution")
68 assertNotNull(nodeType, "Failed to get chained node type")
69 log.trace("Properties {}", JacksonUtils.getJson(nodeType, true))
74 val serviceTemplate = ServiceTemplate()
75 serviceTemplate.imports = mutableListOf()
76 val bluePrintContext = BluePrintContext(serviceTemplate)
78 assertTrue(bluePrintContext.imports()!!.isEmpty())
80 serviceTemplate.imports = null
81 assertNull(bluePrintContext.imports())
86 val serviceTemplate = ServiceTemplate()
87 serviceTemplate.dataTypes = mutableMapOf()
88 val bluePrintContext = BluePrintContext(serviceTemplate)
90 assertTrue(bluePrintContext.dataTypes()!!.isEmpty())
92 serviceTemplate.dataTypes = null
93 assertNull(bluePrintContext.dataTypes())
98 val topologyTemplate = TopologyTemplate()
99 topologyTemplate.inputs = mutableMapOf()
100 val serviceTemplate = ServiceTemplate()
101 serviceTemplate.topologyTemplate = topologyTemplate
102 val bluePrintContext = BluePrintContext(serviceTemplate)
104 assertTrue(bluePrintContext.inputs()!!.isEmpty())
106 topologyTemplate.inputs = null
108 assertNull(bluePrintContext.inputs())
112 fun testBluePrintJson() {
113 val serviceTemplate = ServiceTemplate()
114 val bluePrintContext = BluePrintContext(serviceTemplate)
116 assertEquals("{\"tosca_definitions_version\":\"controller_blueprint_1_0_0\"}", bluePrintContext.blueprintJson())
119 @Test(expected = BluePrintException::class)
121 val serviceTemplate = ServiceTemplate()
122 serviceTemplate.metadata = mutableMapOf(BluePrintConstants.METADATA_TEMPLATE_NAME to "hello")
123 val bluePrintContext = BluePrintContext(serviceTemplate)
125 assertEquals("hello", bluePrintContext.name())
127 serviceTemplate.metadata = mutableMapOf()
128 val bluePrintContext2 = BluePrintContext(serviceTemplate)
129 bluePrintContext2.name()
132 @Test(expected = BluePrintException::class)
134 val serviceTemplate = ServiceTemplate()
135 serviceTemplate.metadata = mutableMapOf(BluePrintConstants.METADATA_TEMPLATE_VERSION to "hello")
136 val bluePrintContext = BluePrintContext(serviceTemplate)
138 assertEquals("hello", bluePrintContext.version())
140 serviceTemplate.metadata = mutableMapOf()
141 val bluePrintContext2 = BluePrintContext(serviceTemplate)
142 bluePrintContext2.version()
145 @Test(expected = BluePrintException::class)
147 val serviceTemplate = ServiceTemplate()
148 serviceTemplate.metadata = mutableMapOf(BluePrintConstants.METADATA_TEMPLATE_AUTHOR to "hello")
149 val bluePrintContext = BluePrintContext(serviceTemplate)
151 assertEquals("hello", bluePrintContext.author())
153 serviceTemplate.metadata = mutableMapOf()
154 val bluePrintContext2 = BluePrintContext(serviceTemplate)
155 bluePrintContext2.author()
159 fun testWorkflows() {
160 val topologyTemplate = TopologyTemplate()
161 topologyTemplate.workflows = mutableMapOf()
162 val serviceTemplate = ServiceTemplate()
163 serviceTemplate.topologyTemplate = topologyTemplate
164 val bluePrintContext = BluePrintContext(serviceTemplate)
166 assertTrue(bluePrintContext.workflows()!!.isEmpty())
168 topologyTemplate.workflows = null
169 assertNull(bluePrintContext.workflows())
172 @Test(expected = BluePrintException::class)
173 fun testWorkFlowsByName() {
174 val topologyTemplate = TopologyTemplate()
175 topologyTemplate.workflows = mutableMapOf("workflow" to Workflow())
176 val serviceTemplate = ServiceTemplate()
177 serviceTemplate.topologyTemplate = topologyTemplate
178 val bluePrintContext = BluePrintContext(serviceTemplate)
180 assertNotNull(bluePrintContext.workflowByName("workflow"))
182 bluePrintContext.workflowByName("")
186 fun testWorkflowInput() {
187 val topologyTemplate = TopologyTemplate()
188 val workflow = Workflow()
189 workflow.inputs = mutableMapOf()
190 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
191 val serviceTemplate = ServiceTemplate()
192 serviceTemplate.topologyTemplate = topologyTemplate
193 val bluePrintContext = BluePrintContext(serviceTemplate)
195 assertTrue(bluePrintContext.workflowInputs("workflow")!!.isEmpty())
197 workflow.inputs = null
199 assertNull(bluePrintContext.workflowInputs("workflow"))
202 @Test(expected = BluePrintException::class)
203 fun testWorkflowStepByName() {
204 val topologyTemplate = TopologyTemplate()
205 val workflow = Workflow()
206 workflow.steps = mutableMapOf("step" to Step())
207 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
208 val serviceTemplate = ServiceTemplate()
209 serviceTemplate.topologyTemplate = topologyTemplate
210 val bluePrintContext = BluePrintContext(serviceTemplate)
212 assertNotNull(bluePrintContext.workflowStepByName("workflow", "step"))
214 bluePrintContext.workflowStepByName("workflow", "")
217 @Test(expected = BluePrintException::class)
218 fun testWorkflowStepNodeTemplate() {
219 val topologyTemplate = TopologyTemplate()
220 val workflow = Workflow()
222 step.target = "hello"
223 workflow.steps = mutableMapOf("step" to step)
224 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
225 val serviceTemplate = ServiceTemplate()
226 serviceTemplate.topologyTemplate = topologyTemplate
227 val bluePrintContext = BluePrintContext(serviceTemplate)
229 assertEquals("hello", bluePrintContext.workflowStepNodeTemplate("workflow", "step"))
231 bluePrintContext.workflowStepNodeTemplate("workflow", "")
234 @Test(expected = BluePrintException::class)
235 fun testWorkflowFirstStepNodeTemplate() {
236 val topologyTemplate = TopologyTemplate()
237 val workflow = Workflow()
239 step.target = "hello"
240 workflow.steps = mutableMapOf("step" to step, "step2" to Step())
241 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
242 val serviceTemplate = ServiceTemplate()
243 serviceTemplate.topologyTemplate = topologyTemplate
244 val bluePrintContext = BluePrintContext(serviceTemplate)
246 assertEquals("hello", bluePrintContext.workflowFirstStepNodeTemplate("workflow"))
248 workflow.steps = null
249 bluePrintContext.workflowFirstStepNodeTemplate("workflow")
252 @Test(expected = BluePrintException::class)
253 fun testWorkflowStepFirstCallOperation() {
254 val topologyTemplate = TopologyTemplate()
255 val workflow = Workflow()
257 val activity = Activity()
258 activity.callOperation = "hello"
259 step.activities = arrayListOf(activity)
260 workflow.steps = mutableMapOf("step" to step)
261 topologyTemplate.workflows = mutableMapOf("workflow" to workflow)
262 val serviceTemplate = ServiceTemplate()
263 serviceTemplate.topologyTemplate = topologyTemplate
264 val bluePrintContext = BluePrintContext(serviceTemplate)
266 assertEquals("hello", bluePrintContext.workflowStepFirstCallOperation("workflow", "step"))
268 bluePrintContext.workflowStepFirstCallOperation("workflow", "")
272 fun testDatatypeByName() {
273 val serviceTemplate = ServiceTemplate()
274 serviceTemplate.dataTypes = mutableMapOf("data" to DataType())
275 val bluePrintContext = BluePrintContext(serviceTemplate)
277 assertNotNull(bluePrintContext.dataTypeByName("data"))
278 assertNull(bluePrintContext.dataTypeByName(""))
282 fun testArtifactTypes() {
283 val serviceTemplate = ServiceTemplate()
284 serviceTemplate.artifactTypes = mutableMapOf()
285 val bluePrintContext = BluePrintContext(serviceTemplate)
287 assertTrue(bluePrintContext.artifactTypes()!!.isEmpty())
289 serviceTemplate.artifactTypes = null
290 assertNull(bluePrintContext.artifactTypes())
294 fun testPolicyTypes() {
295 val serviceTemplate = ServiceTemplate()
296 serviceTemplate.policyTypes = mutableMapOf()
297 val bluePrintContext = BluePrintContext(serviceTemplate)
299 assertTrue(bluePrintContext.policyTypes()!!.isEmpty())
301 serviceTemplate.policyTypes = null
302 assertNull(bluePrintContext.policyTypes())
305 @Test(expected = BluePrintException::class)
306 fun testPolicyTypeByName() {
307 val serviceTemplate = ServiceTemplate()
308 serviceTemplate.policyTypes = mutableMapOf("policy" to PolicyType())
309 val bluePrintContext = BluePrintContext(serviceTemplate)
311 assertNotNull(bluePrintContext.policyTypeByName("policy"))
313 bluePrintContext.policyTypeByName("")
317 fun testPolicyTypesDerivedFrom() {
318 val serviceTemplate = ServiceTemplate()
319 val policyType = PolicyType()
320 policyType.derivedFrom = "hi"
321 val policyType2 = PolicyType()
322 policyType2.derivedFrom = "hello"
323 serviceTemplate.policyTypes = mutableMapOf("policy" to policyType, "policy2" to policyType2)
324 val bluePrintContext = BluePrintContext(serviceTemplate)
326 assertEquals(1, bluePrintContext.policyTypesDerivedFrom("hi")!!.size)
328 serviceTemplate.policyTypes = null
329 assertNull(bluePrintContext.policyTypesDerivedFrom("hi"))
333 fun testPolicyTypesTarget() {
334 val serviceTemplate = ServiceTemplate()
335 val policyType = PolicyType()
336 policyType.targets = mutableListOf("hi")
337 val policyType2 = PolicyType()
338 policyType2.targets = mutableListOf()
339 serviceTemplate.policyTypes = mutableMapOf("policy" to policyType, "policy2" to policyType2)
340 val bluePrintContext = BluePrintContext(serviceTemplate)
342 assertEquals(1, bluePrintContext.policyTypesTarget("hi")!!.size)
344 serviceTemplate.policyTypes = null
345 assertNull(bluePrintContext.policyTypesTarget("hi"))
349 fun testPolicyTypesTargetNDerivedFrom() {
350 val serviceTemplate = ServiceTemplate()
351 val policyType = PolicyType()
352 policyType.targets = mutableListOf("hi")
353 policyType.derivedFrom = "hi"
354 val policyType2 = PolicyType()
355 policyType2.targets = mutableListOf()
356 policyType2.derivedFrom = "hi"
357 serviceTemplate.policyTypes = mutableMapOf("policy" to policyType, "policy2" to policyType2)
358 val bluePrintContext = BluePrintContext(serviceTemplate)
360 assertEquals(1, bluePrintContext.policyTypesTargetNDerivedFrom("hi", "hi")!!.size)
362 serviceTemplate.policyTypes = null
363 assertNull(bluePrintContext.policyTypesTargetNDerivedFrom("hi", "hi"))
367 fun testNodeTypeDerivedFrom() {
368 val serviceTemplate = ServiceTemplate()
369 val nodeType = NodeType()
370 nodeType.derivedFrom = "hi"
371 val nodeType2 = NodeType()
372 nodeType2.derivedFrom = "hiii"
373 serviceTemplate.nodeTypes = mutableMapOf("node" to nodeType, "node2" to nodeType2)
374 val bluePrintContext = BluePrintContext(serviceTemplate)
376 assertEquals(1, bluePrintContext.nodeTypeDerivedFrom("hi")!!.size)
378 serviceTemplate.nodeTypes = null
379 assertNull(bluePrintContext.nodeTypeDerivedFrom("hi"))
382 @Test(expected = BluePrintException::class)
383 fun testInterfaceNameForNodeType() {
384 val serviceTemplate = ServiceTemplate()
385 val nodeType = NodeType()
386 nodeType.interfaces = mutableMapOf("hello" to InterfaceDefinition(), "hi" to InterfaceDefinition())
387 serviceTemplate.nodeTypes = mutableMapOf("node" to nodeType)
388 val bluePrintContext = BluePrintContext(serviceTemplate)
390 assertEquals("hello", bluePrintContext.interfaceNameForNodeType("node"))
392 bluePrintContext.interfaceNameForNodeType("")
396 fun testNodeTemplateForNodeType() {
397 val serviceTemplate = ServiceTemplate()
398 val nodeTemplate = NodeTemplate()
399 nodeTemplate.type = "hello"
400 val nodeTemplate2 = NodeTemplate()
401 nodeTemplate2.type = "hi"
402 serviceTemplate.topologyTemplate = TopologyTemplate()
403 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate, "node2" to nodeTemplate2)
404 val bluePrintContext = BluePrintContext(serviceTemplate)
406 assertEquals(1, bluePrintContext.nodeTemplateForNodeType("hello")!!.size)
408 serviceTemplate.topologyTemplate!!.nodeTemplates = null
409 assertNull(bluePrintContext.nodeTemplateForNodeType("hello"))
413 fun testNodeTemplateProperty() {
414 val serviceTemplate = ServiceTemplate()
415 val nodeTemplate = NodeTemplate()
416 nodeTemplate.properties = mutableMapOf("prop" to ObjectMapper().createObjectNode())
417 serviceTemplate.topologyTemplate = TopologyTemplate()
418 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
419 val bluePrintContext = BluePrintContext(serviceTemplate)
421 assertNotNull(bluePrintContext.nodeTemplateProperty("node", "prop"))
423 assertNull(bluePrintContext.nodeTemplateProperty("node", ""))
425 nodeTemplate.properties = null
426 assertNull(bluePrintContext.nodeTemplateProperty("node", "prop"))
430 fun testNodeTemplateArtifacts() {
431 val serviceTemplate = ServiceTemplate()
432 val nodeTemplate = NodeTemplate()
433 nodeTemplate.artifacts = mutableMapOf()
434 serviceTemplate.topologyTemplate = TopologyTemplate()
435 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
436 val bluePrintContext = BluePrintContext(serviceTemplate)
438 assertTrue(bluePrintContext.nodeTemplateArtifacts("node")!!.isEmpty())
441 @Test(expected = BluePrintException::class)
442 fun testNodeTemplateArtifact() {
443 val serviceTemplate = ServiceTemplate()
444 val nodeTemplate = NodeTemplate()
445 nodeTemplate.artifacts = mutableMapOf("art" to ArtifactDefinition())
446 serviceTemplate.topologyTemplate = TopologyTemplate()
447 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
448 val bluePrintContext = BluePrintContext(serviceTemplate)
450 assertNotNull(bluePrintContext.nodeTemplateArtifact("node", "art"))
452 bluePrintContext.nodeTemplateArtifact("node", "")
455 @Test(expected = BluePrintException::class)
456 fun testNodeTemplateArtifactForArtifactType() {
457 val serviceTemplate = ServiceTemplate()
458 val nodeTemplate = NodeTemplate()
459 val artifactDefinition = ArtifactDefinition()
460 artifactDefinition.type = "type"
461 val artifactDefinition2 = ArtifactDefinition()
462 artifactDefinition2.type = "No type"
463 nodeTemplate.artifacts = mutableMapOf("art" to artifactDefinition, "art2" to artifactDefinition2)
464 serviceTemplate.topologyTemplate = TopologyTemplate()
465 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
466 val bluePrintContext = BluePrintContext(serviceTemplate)
468 assertNotNull(bluePrintContext.nodeTemplateArtifactForArtifactType("node", "type"))
470 bluePrintContext.nodeTemplateArtifactForArtifactType("", "")
473 @Test(expected = BluePrintException::class)
474 fun testNodeTemplateFirstInterface() {
475 val serviceTemplate = ServiceTemplate()
476 val nodeTemplate = NodeTemplate()
477 nodeTemplate.interfaces = mutableMapOf("interface" to InterfaceAssignment(), "interf" to InterfaceAssignment())
478 serviceTemplate.topologyTemplate = TopologyTemplate()
479 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
480 val bluePrintContext = BluePrintContext(serviceTemplate)
482 assertNotNull(bluePrintContext.nodeTemplateFirstInterface("node"))
484 nodeTemplate.interfaces = null
485 bluePrintContext.nodeTemplateFirstInterface("node")
488 @Test(expected = BluePrintException::class)
489 fun testNodeTemplateFirstInterfaceName() {
490 val serviceTemplate = ServiceTemplate()
491 val nodeTemplate = NodeTemplate()
492 nodeTemplate.interfaces = mutableMapOf("interface" to InterfaceAssignment(), "interf" to InterfaceAssignment())
493 serviceTemplate.topologyTemplate = TopologyTemplate()
494 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
495 val bluePrintContext = BluePrintContext(serviceTemplate)
497 assertEquals("interface", bluePrintContext.nodeTemplateFirstInterfaceName("node"))
499 nodeTemplate.interfaces = null
500 bluePrintContext.nodeTemplateFirstInterfaceName("node")
503 @Test(expected = BluePrintException::class)
504 fun testNodeTemplateFirstInterfaceFirstOperationName() {
505 val serviceTemplate = ServiceTemplate()
506 val nodeTemplate = NodeTemplate()
507 val interfaceAssignment = InterfaceAssignment()
508 interfaceAssignment.operations = mutableMapOf("op" to OperationAssignment(), "op2" to OperationAssignment())
509 nodeTemplate.interfaces = mutableMapOf("intf" to interfaceAssignment)
510 serviceTemplate.topologyTemplate = TopologyTemplate()
511 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
512 val bluePrintContext = BluePrintContext(serviceTemplate)
514 assertEquals("op", bluePrintContext.nodeTemplateFirstInterfaceFirstOperationName("node"))
516 interfaceAssignment.operations = null
517 bluePrintContext.nodeTemplateFirstInterfaceFirstOperationName("node")
520 @Test(expected = BluePrintException::class)
521 fun testNodeTemplateCapability() {
522 val serviceTemplate = ServiceTemplate()
523 val nodeTemplate = NodeTemplate()
524 nodeTemplate.capabilities = mutableMapOf("cap" to CapabilityAssignment())
525 serviceTemplate.topologyTemplate = TopologyTemplate()
526 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
527 val bluePrintContext = BluePrintContext(serviceTemplate)
529 assertNotNull(bluePrintContext.nodeTemplateCapability("node", "cap"))
531 bluePrintContext.nodeTemplateCapability("node", "")
534 @Test(expected = BluePrintException::class)
535 fun testNodeTemplateRequirement() {
536 val serviceTemplate = ServiceTemplate()
537 val nodeTemplate = NodeTemplate()
538 nodeTemplate.requirements = mutableMapOf("req" to RequirementAssignment())
539 serviceTemplate.topologyTemplate = TopologyTemplate()
540 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
541 val bluePrintContext = BluePrintContext(serviceTemplate)
543 assertNotNull(bluePrintContext.nodeTemplateRequirement("node", "req"))
545 bluePrintContext.nodeTemplateRequirement("node", "")
548 @Test(expected = BluePrintException::class)
549 fun testNodeTemplateRequirementNode() {
550 val serviceTemplate = ServiceTemplate()
551 val nodeTemplate = NodeTemplate()
552 val requirementAssignment = RequirementAssignment()
553 requirementAssignment.node = "node"
554 nodeTemplate.requirements = mutableMapOf("req" to requirementAssignment)
555 serviceTemplate.topologyTemplate = TopologyTemplate()
556 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
557 val bluePrintContext = BluePrintContext(serviceTemplate)
559 assertNotNull(bluePrintContext.nodeTemplateRequirementNode("node", "req"))
561 bluePrintContext.nodeTemplateRequirementNode("node", "")
565 fun testNodeTemplateCapabilityProperty() {
566 val serviceTemplate = ServiceTemplate()
567 val nodeTemplate = NodeTemplate()
568 val capabilityAssignment = CapabilityAssignment()
569 capabilityAssignment.properties = mutableMapOf("prop" to ObjectMapper().createObjectNode())
570 nodeTemplate.capabilities = mutableMapOf("cap" to capabilityAssignment)
571 serviceTemplate.topologyTemplate = TopologyTemplate()
572 serviceTemplate.topologyTemplate!!.nodeTemplates = mutableMapOf("node" to nodeTemplate)
573 val bluePrintContext = BluePrintContext(serviceTemplate)
575 assertNotNull(bluePrintContext.nodeTemplateCapabilityProperty("node", "cap", "prop"))
577 capabilityAssignment.properties = null
579 assertNull(bluePrintContext.nodeTemplateCapabilityProperty("node", "cap", "prop"))