Remote Script Executor Component
[ccsdk/cds.git] / ms / controllerblueprints / modules / blueprint-core / src / test / kotlin / org / onap / ccsdk / cds / controllerblueprints / core / service / BluePrintContextTest.kt
1 /*
2  * Copyright © 2017-2018 AT&T Intellectual Property.
3  * Modifications Copyright © 2018 IBM.
4  *
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
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  */
17
18 package org.onap.ccsdk.cds.controllerblueprints.core.service
19
20 import com.fasterxml.jackson.databind.ObjectMapper
21 import org.junit.Test
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
46
47 /**
48  *
49  *
50  * @author Brinda Santh
51  */
52 class BluePrintContextTest {
53
54     private val log = LoggerFactory.getLogger(this::class.toString())
55
56     val blueprintBasePath: String = ("./../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration")
57
58     @Test
59     fun testBluePrintContextCreation() {
60         val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath)
61         assertNotNull(bluePrintContext, "Failed to populate Blueprint context")
62     }
63
64     @Test
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))
70     }
71
72     @Test
73     fun testImports() {
74         val serviceTemplate = ServiceTemplate()
75         serviceTemplate.imports = mutableListOf()
76         val bluePrintContext = BluePrintContext(serviceTemplate)
77
78         assertTrue(bluePrintContext.imports()!!.isEmpty())
79
80         serviceTemplate.imports = null
81         assertNull(bluePrintContext.imports())
82     }
83
84     @Test
85     fun testDataTypes() {
86         val serviceTemplate = ServiceTemplate()
87         serviceTemplate.dataTypes = mutableMapOf()
88         val bluePrintContext = BluePrintContext(serviceTemplate)
89
90         assertTrue(bluePrintContext.dataTypes()!!.isEmpty())
91
92         serviceTemplate.dataTypes = null
93         assertNull(bluePrintContext.dataTypes())
94     }
95
96     @Test
97     fun testInputs() {
98         val topologyTemplate = TopologyTemplate()
99         topologyTemplate.inputs = mutableMapOf()
100         val serviceTemplate = ServiceTemplate()
101         serviceTemplate.topologyTemplate = topologyTemplate
102         val bluePrintContext = BluePrintContext(serviceTemplate)
103
104         assertTrue(bluePrintContext.inputs()!!.isEmpty())
105
106         topologyTemplate.inputs = null
107
108         assertNull(bluePrintContext.inputs())
109     }
110
111     @Test
112     fun testBluePrintJson() {
113         val serviceTemplate = ServiceTemplate()
114         val bluePrintContext = BluePrintContext(serviceTemplate)
115
116         assertEquals("{\"tosca_definitions_version\":\"controller_blueprint_1_0_0\"}", bluePrintContext.blueprintJson())
117     }
118
119     @Test(expected = BluePrintException::class)
120     fun testName() {
121         val serviceTemplate = ServiceTemplate()
122         serviceTemplate.metadata = mutableMapOf(BluePrintConstants.METADATA_TEMPLATE_NAME to "hello")
123         val bluePrintContext = BluePrintContext(serviceTemplate)
124
125         assertEquals("hello", bluePrintContext.name())
126
127         serviceTemplate.metadata = mutableMapOf()
128         val bluePrintContext2 = BluePrintContext(serviceTemplate)
129         bluePrintContext2.name()
130     }
131
132     @Test(expected = BluePrintException::class)
133     fun testVersion() {
134         val serviceTemplate = ServiceTemplate()
135         serviceTemplate.metadata = mutableMapOf(BluePrintConstants.METADATA_TEMPLATE_VERSION to "hello")
136         val bluePrintContext = BluePrintContext(serviceTemplate)
137
138         assertEquals("hello", bluePrintContext.version())
139
140         serviceTemplate.metadata = mutableMapOf()
141         val bluePrintContext2 = BluePrintContext(serviceTemplate)
142         bluePrintContext2.version()
143     }
144
145     @Test(expected = BluePrintException::class)
146     fun testAuthor() {
147         val serviceTemplate = ServiceTemplate()
148         serviceTemplate.metadata = mutableMapOf(BluePrintConstants.METADATA_TEMPLATE_AUTHOR to "hello")
149         val bluePrintContext = BluePrintContext(serviceTemplate)
150
151         assertEquals("hello", bluePrintContext.author())
152
153         serviceTemplate.metadata = mutableMapOf()
154         val bluePrintContext2 = BluePrintContext(serviceTemplate)
155         bluePrintContext2.author()
156     }
157
158     @Test
159     fun testWorkflows() {
160         val topologyTemplate = TopologyTemplate()
161         topologyTemplate.workflows = mutableMapOf()
162         val serviceTemplate = ServiceTemplate()
163         serviceTemplate.topologyTemplate = topologyTemplate
164         val bluePrintContext = BluePrintContext(serviceTemplate)
165
166         assertTrue(bluePrintContext.workflows()!!.isEmpty())
167
168         topologyTemplate.workflows = null
169         assertNull(bluePrintContext.workflows())
170     }
171
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)
179
180         assertNotNull(bluePrintContext.workflowByName("workflow"))
181
182         bluePrintContext.workflowByName("")
183     }
184
185     @Test
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)
194
195         assertTrue(bluePrintContext.workflowInputs("workflow")!!.isEmpty())
196
197         workflow.inputs = null
198
199         assertNull(bluePrintContext.workflowInputs("workflow"))
200     }
201
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)
211
212         assertNotNull(bluePrintContext.workflowStepByName("workflow", "step"))
213
214         bluePrintContext.workflowStepByName("workflow", "")
215     }
216
217     @Test(expected = BluePrintException::class)
218     fun testWorkflowStepNodeTemplate() {
219         val topologyTemplate = TopologyTemplate()
220         val workflow = Workflow()
221         val step = Step()
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)
228
229         assertEquals("hello", bluePrintContext.workflowStepNodeTemplate("workflow", "step"))
230
231         bluePrintContext.workflowStepNodeTemplate("workflow", "")
232     }
233
234     @Test(expected = BluePrintException::class)
235     fun testWorkflowFirstStepNodeTemplate() {
236         val topologyTemplate = TopologyTemplate()
237         val workflow = Workflow()
238         val step = Step()
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)
245
246         assertEquals("hello", bluePrintContext.workflowFirstStepNodeTemplate("workflow"))
247
248         workflow.steps = null
249         bluePrintContext.workflowFirstStepNodeTemplate("workflow")
250     }
251
252     @Test(expected = BluePrintException::class)
253     fun testWorkflowStepFirstCallOperation() {
254         val topologyTemplate = TopologyTemplate()
255         val workflow = Workflow()
256         val step = Step()
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)
265
266         assertEquals("hello", bluePrintContext.workflowStepFirstCallOperation("workflow", "step"))
267
268         bluePrintContext.workflowStepFirstCallOperation("workflow", "")
269     }
270
271     @Test
272     fun testDatatypeByName() {
273         val serviceTemplate = ServiceTemplate()
274         serviceTemplate.dataTypes = mutableMapOf("data" to DataType())
275         val bluePrintContext = BluePrintContext(serviceTemplate)
276
277         assertNotNull(bluePrintContext.dataTypeByName("data"))
278         assertNull(bluePrintContext.dataTypeByName(""))
279     }
280
281     @Test
282     fun testArtifactTypes() {
283         val serviceTemplate = ServiceTemplate()
284         serviceTemplate.artifactTypes = mutableMapOf()
285         val bluePrintContext = BluePrintContext(serviceTemplate)
286
287         assertTrue(bluePrintContext.artifactTypes()!!.isEmpty())
288
289         serviceTemplate.artifactTypes = null
290         assertNull(bluePrintContext.artifactTypes())
291     }
292
293     @Test
294     fun testPolicyTypes() {
295         val serviceTemplate = ServiceTemplate()
296         serviceTemplate.policyTypes = mutableMapOf()
297         val bluePrintContext = BluePrintContext(serviceTemplate)
298
299         assertTrue(bluePrintContext.policyTypes()!!.isEmpty())
300
301         serviceTemplate.policyTypes = null
302         assertNull(bluePrintContext.policyTypes())
303     }
304
305     @Test(expected = BluePrintException::class)
306     fun testPolicyTypeByName() {
307         val serviceTemplate = ServiceTemplate()
308         serviceTemplate.policyTypes = mutableMapOf("policy" to PolicyType())
309         val bluePrintContext = BluePrintContext(serviceTemplate)
310
311         assertNotNull(bluePrintContext.policyTypeByName("policy"))
312
313         bluePrintContext.policyTypeByName("")
314     }
315
316     @Test
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)
325
326         assertEquals(1, bluePrintContext.policyTypesDerivedFrom("hi")!!.size)
327
328         serviceTemplate.policyTypes = null
329         assertNull(bluePrintContext.policyTypesDerivedFrom("hi"))
330     }
331
332     @Test
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)
341
342         assertEquals(1, bluePrintContext.policyTypesTarget("hi")!!.size)
343
344         serviceTemplate.policyTypes = null
345         assertNull(bluePrintContext.policyTypesTarget("hi"))
346     }
347
348     @Test
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)
359
360         assertEquals(1, bluePrintContext.policyTypesTargetNDerivedFrom("hi", "hi")!!.size)
361
362         serviceTemplate.policyTypes = null
363         assertNull(bluePrintContext.policyTypesTargetNDerivedFrom("hi", "hi"))
364     }
365
366     @Test
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)
375
376         assertEquals(1, bluePrintContext.nodeTypeDerivedFrom("hi")!!.size)
377
378         serviceTemplate.nodeTypes = null
379         assertNull(bluePrintContext.nodeTypeDerivedFrom("hi"))
380     }
381
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)
389
390         assertEquals("hello", bluePrintContext.interfaceNameForNodeType("node"))
391
392         bluePrintContext.interfaceNameForNodeType("")
393     }
394
395     @Test
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)
405
406         assertEquals(1, bluePrintContext.nodeTemplateForNodeType("hello")!!.size)
407
408         serviceTemplate.topologyTemplate!!.nodeTemplates = null
409         assertNull(bluePrintContext.nodeTemplateForNodeType("hello"))
410     }
411
412     @Test
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)
420
421         assertNotNull(bluePrintContext.nodeTemplateProperty("node", "prop"))
422
423         assertNull(bluePrintContext.nodeTemplateProperty("node", ""))
424
425         nodeTemplate.properties = null
426         assertNull(bluePrintContext.nodeTemplateProperty("node", "prop"))
427     }
428
429     @Test
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)
437
438         assertTrue(bluePrintContext.nodeTemplateArtifacts("node")!!.isEmpty())
439     }
440
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)
449
450         assertNotNull(bluePrintContext.nodeTemplateArtifact("node", "art"))
451
452         bluePrintContext.nodeTemplateArtifact("node", "")
453     }
454
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)
467
468         assertNotNull(bluePrintContext.nodeTemplateArtifactForArtifactType("node", "type"))
469
470         bluePrintContext.nodeTemplateArtifactForArtifactType("", "")
471     }
472
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)
481
482         assertNotNull(bluePrintContext.nodeTemplateFirstInterface("node"))
483
484         nodeTemplate.interfaces = null
485         bluePrintContext.nodeTemplateFirstInterface("node")
486     }
487
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)
496
497         assertEquals("interface", bluePrintContext.nodeTemplateFirstInterfaceName("node"))
498
499         nodeTemplate.interfaces = null
500         bluePrintContext.nodeTemplateFirstInterfaceName("node")
501     }
502
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)
513
514         assertEquals("op", bluePrintContext.nodeTemplateFirstInterfaceFirstOperationName("node"))
515
516         interfaceAssignment.operations = null
517         bluePrintContext.nodeTemplateFirstInterfaceFirstOperationName("node")
518     }
519
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)
528
529         assertNotNull(bluePrintContext.nodeTemplateCapability("node", "cap"))
530
531         bluePrintContext.nodeTemplateCapability("node", "")
532     }
533
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)
542
543         assertNotNull(bluePrintContext.nodeTemplateRequirement("node", "req"))
544
545         bluePrintContext.nodeTemplateRequirement("node", "")
546     }
547
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)
558
559         assertNotNull(bluePrintContext.nodeTemplateRequirementNode("node", "req"))
560
561         bluePrintContext.nodeTemplateRequirementNode("node", "")
562     }
563
564     @Test
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)
574
575         assertNotNull(bluePrintContext.nodeTemplateCapabilityProperty("node", "cap", "prop"))
576
577         capabilityAssignment.properties = null
578
579         assertNull(bluePrintContext.nodeTemplateCapabilityProperty("node", "cap", "prop"))
580     }
581 }