2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 Ericsson
6 * =============================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.appc.dg.dependencymanager.helper;
24 import java.io.IOException;
25 import org.junit.Assert;
26 import org.junit.Before;
27 import org.junit.Rule;
28 import org.junit.Test;
29 import org.junit.rules.ExpectedException;
30 import org.mockito.Mockito;
31 import org.onap.appc.dg.flowbuilder.exception.InvalidDependencyModelException;
32 import org.onap.appc.dg.objects.VnfcDependencyModel;
33 import org.onap.appc.dg.objects.Node;
34 import org.onap.appc.domainmodel.Vnfc;
35 import com.fasterxml.jackson.core.JsonProcessingException;
36 import com.fasterxml.jackson.databind.ObjectMapper;
37 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
38 import com.fasterxml.jackson.databind.node.ObjectNode;
40 public class DependencyModelParserTest {
43 public ExpectedException expectedEx = ExpectedException.none();
45 DependencyModelParser parser = Mockito.spy(new DependencyModelParser());
46 ObjectMapper mockMapper;
49 public void setup() throws JsonProcessingException, IOException {
50 mockMapper = Mockito.mock(ObjectMapper.class);
51 ObjectNode mockNode = Mockito.mock(ObjectNode.class);
52 Mockito.doReturn(mockMapper).when(parser).getMapper();
53 Mockito.doReturn(mockNode).when(mockMapper).readTree("VNF_MODEL");
57 public void testGenerateDependencyModel() throws InvalidDependencyModelException, JsonProcessingException, IOException {
58 ObjectNode topologyTemplate = new ObjectNode(JsonNodeFactory.instance);
59 topologyTemplate = (ObjectNode) new ObjectMapper().readTree(jsonString);
60 Mockito.doReturn(topologyTemplate).when(mockMapper).readTree("VNF_MODEL");
61 VnfcDependencyModel model = parser.generateDependencyModel("VNF_MODEL", "VNF_TYPE");
62 Assert.assertEquals(2, model.getDependencies().size());
66 public void testGenerateDependencyModelWithNode() throws InvalidDependencyModelException, JsonProcessingException, IOException {
67 ObjectNode topologyTemplate = new ObjectNode(JsonNodeFactory.instance);
68 topologyTemplate = (ObjectNode) new ObjectMapper().readTree(jsonString);
69 Node<Vnfc> vnfc = new Node(new Vnfc());
70 Mockito.doReturn(vnfc).when(parser).getNode(Mockito.anySet(), Mockito.anyString());
71 Mockito.doReturn(topologyTemplate).when(mockMapper).readTree("VNF_MODEL");
72 VnfcDependencyModel model = parser.generateDependencyModel("VNF_MODEL", "VNF_TYPE");
73 Assert.assertEquals(0, model.getDependencies().size());
77 public void testGenerateDependencyModelExceptionFlow() throws InvalidDependencyModelException {
78 expectedEx.expect(InvalidDependencyModelException.class);
79 expectedEx.expectMessage("Dependency model is missing 'topology_template' or 'node_templates' elements");
80 VnfcDependencyModel model = parser.generateDependencyModel("VNF_MODEL", "VNF_TYPE");
83 private String jsonString = "{\"topology_template\": {" +
84 " \"node_templates\": {" +
85 " \"Property Definition_Template\": {" +
86 " \"type\": \"org.onap.resource.vfc.vnf_type.abstract.nodes.property definition\"," +
87 " \"properties\": {" +
88 " \"mandatory\": \"true\"," +
89 " \"high_availablity\": \"Active-Passive\"" +
90 " },\"requirements\": [" +
92 " \"dependency\": {" +
93 " \"capability\": \"tosca.capabilities.Node\"," +
94 " \"node\": \"tosca.nodes.Root\"," +
95 " \"relationship\": \"tosca.relationships.DependsOn\"," +
96 " \"occurrences\": [" +
103 " },\"tosca.nodes.Root\": {\"type\": \"VNFC_NAME\"}" +