2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019-2020 Nordix Foundation.
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
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.models.tosca.utils;
23 import static org.assertj.core.api.Assertions.assertThatCode;
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertFalse;
27 import static org.junit.Assert.assertTrue;
29 import org.junit.Test;
30 import org.onap.policy.models.base.PfConceptKey;
31 import org.onap.policy.models.base.PfKey;
32 import org.onap.policy.models.base.PfValidationResult;
33 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
34 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
35 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
36 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
37 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
38 import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
41 * Import the {@link ToscaUtils} class.
43 * @author Liam Fallon (liam.fallon@est.tech)
45 public class ToscaUtilsTest {
48 public void testAssertDataTypes() {
49 JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate();
51 assertFalse(ToscaUtils.doDataTypesExist(jpaToscaServiceTemplate));
52 assertEquals("no data types specified on service template",
53 ToscaUtils.checkDataTypesExist(jpaToscaServiceTemplate));
54 assertThatThrownBy(() -> {
55 ToscaUtils.assertDataTypesExist(jpaToscaServiceTemplate);
56 }).hasMessage("no data types specified on service template");
58 jpaToscaServiceTemplate.setDataTypes(new JpaToscaDataTypes());
60 assertFalse(ToscaUtils.doDataTypesExist(jpaToscaServiceTemplate));
61 assertEquals("list of data types specified on service template is empty",
62 ToscaUtils.checkDataTypesExist(jpaToscaServiceTemplate));
63 assertThatThrownBy(() -> {
64 ToscaUtils.assertDataTypesExist(jpaToscaServiceTemplate);
65 }).hasMessage("list of data types specified on service template is empty");
67 jpaToscaServiceTemplate.getDataTypes().getConceptMap().put(new PfConceptKey(), null);
69 assertTrue(ToscaUtils.doDataTypesExist(jpaToscaServiceTemplate));
70 assertEquals(null, ToscaUtils.checkDataTypesExist(jpaToscaServiceTemplate));
71 assertThatCode(() -> {
72 ToscaUtils.assertDataTypesExist(jpaToscaServiceTemplate);
73 }).doesNotThrowAnyException();
78 public void testAssertPolicyTypes() {
79 JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate();
81 assertFalse(ToscaUtils.doPolicyTypesExist(jpaToscaServiceTemplate));
82 assertEquals("no policy types specified on service template",
83 ToscaUtils.checkPolicyTypesExist(jpaToscaServiceTemplate));
84 assertThatThrownBy(() -> {
85 ToscaUtils.assertPolicyTypesExist(jpaToscaServiceTemplate);
86 }).hasMessage("no policy types specified on service template");
88 jpaToscaServiceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
90 assertFalse(ToscaUtils.doPolicyTypesExist(jpaToscaServiceTemplate));
91 assertEquals("list of policy types specified on service template is empty",
92 ToscaUtils.checkPolicyTypesExist(jpaToscaServiceTemplate));
93 assertThatThrownBy(() -> {
94 ToscaUtils.assertPolicyTypesExist(jpaToscaServiceTemplate);
95 }).hasMessage("list of policy types specified on service template is empty");
97 jpaToscaServiceTemplate.getPolicyTypes().getConceptMap().put(new PfConceptKey(), null);
99 assertTrue(ToscaUtils.doPolicyTypesExist(jpaToscaServiceTemplate));
100 assertEquals(null, ToscaUtils.checkPolicyTypesExist(jpaToscaServiceTemplate));
101 assertThatCode(() -> {
102 ToscaUtils.assertPolicyTypesExist(jpaToscaServiceTemplate);
103 }).doesNotThrowAnyException();
107 public void testAssertPolicies() {
108 JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate();
110 assertFalse(ToscaUtils.doPoliciesExist(jpaToscaServiceTemplate));
111 assertEquals("topology template not specified on service template",
112 ToscaUtils.checkPoliciesExist(jpaToscaServiceTemplate));
113 assertThatThrownBy(() -> {
114 ToscaUtils.assertPoliciesExist(jpaToscaServiceTemplate);
115 }).hasMessage("topology template not specified on service template");
117 jpaToscaServiceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
119 assertFalse(ToscaUtils.doPoliciesExist(jpaToscaServiceTemplate));
120 assertEquals("no policies specified on topology template of service template",
121 ToscaUtils.checkPoliciesExist(jpaToscaServiceTemplate));
122 assertThatThrownBy(() -> {
123 ToscaUtils.assertPoliciesExist(jpaToscaServiceTemplate);
124 }).hasMessage("no policies specified on topology template of service template");
126 jpaToscaServiceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
128 assertFalse(ToscaUtils.doPoliciesExist(jpaToscaServiceTemplate));
129 assertEquals("list of policies specified on topology template of service template is empty",
130 ToscaUtils.checkPoliciesExist(jpaToscaServiceTemplate));
131 assertThatThrownBy(() -> {
132 ToscaUtils.assertPoliciesExist(jpaToscaServiceTemplate);
133 }).hasMessage("list of policies specified on topology template of service template is empty");
135 jpaToscaServiceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(new PfConceptKey(), null);
137 assertTrue(ToscaUtils.doPoliciesExist(jpaToscaServiceTemplate));
138 assertEquals(null, ToscaUtils.checkPoliciesExist(jpaToscaServiceTemplate));
139 assertThatCode(() -> {
140 ToscaUtils.assertPoliciesExist(jpaToscaServiceTemplate);
141 }).doesNotThrowAnyException();
145 public void testGetentityTypeAncestors() {
146 assertThatThrownBy(() -> {
147 ToscaUtils.getEntityTypeAncestors(null, null, null);
148 }).hasMessageMatching("entityTypes is marked .*on.*ull but is null");
150 assertThatThrownBy(() -> {
151 ToscaUtils.getEntityTypeAncestors(null, null, new PfValidationResult());
152 }).hasMessageMatching("entityTypes is marked .*on.*ull but is null");
154 assertThatThrownBy(() -> {
155 ToscaUtils.getEntityTypeAncestors(null, new JpaToscaDataType(), null);
156 }).hasMessageMatching("entityTypes is marked .*on.*ull but is null");
158 assertThatThrownBy(() -> {
159 ToscaUtils.getEntityTypeAncestors(null, new JpaToscaDataType(), new PfValidationResult());
160 }).hasMessageMatching("entityTypes is marked .*on.*ull but is null");
162 assertThatThrownBy(() -> {
163 ToscaUtils.getEntityTypeAncestors(new JpaToscaDataTypes(), null, null);
164 }).hasMessageMatching("entityType is marked .*on.*ull but is null");
166 assertThatThrownBy(() -> {
167 ToscaUtils.getEntityTypeAncestors(new JpaToscaDataTypes(), null, new PfValidationResult());
168 }).hasMessageMatching("entityType is marked .*on.*ull but is null");
170 assertThatThrownBy(() -> {
171 ToscaUtils.getEntityTypeAncestors(new JpaToscaDataTypes(), new JpaToscaDataType(), null);
172 }).hasMessageMatching("result is marked .*on.*ull but is null");
174 JpaToscaDataTypes dataTypes = new JpaToscaDataTypes();
175 JpaToscaDataType dt0 = new JpaToscaDataType();
176 dt0.setKey(new PfConceptKey("dt0", "0.0.1"));
177 dt0.setDescription("dt0 description");
178 PfValidationResult result = new PfValidationResult();
180 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
182 dataTypes.getConceptMap().put(dt0.getKey(), dt0);
183 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
184 assertTrue(result.isValid());
186 dt0.setDerivedFrom(null);
187 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
188 assertTrue(result.isValid());
190 dt0.setDerivedFrom(new PfConceptKey("tosca.datatyps.Root", PfKey.NULL_KEY_VERSION));
191 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
192 assertTrue(result.isValid());
194 dt0.setDerivedFrom(new PfConceptKey("some.thing.Else", PfKey.NULL_KEY_VERSION));
195 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
196 assertFalse(result.isValid());
197 assertTrue(result.toString().contains("parent some.thing.Else:0.0.0 of entity not found"));
199 result = new PfValidationResult();
200 dt0.setDerivedFrom(new PfConceptKey("tosca.datatyps.Root", PfKey.NULL_KEY_VERSION));
202 JpaToscaDataType dt1 = new JpaToscaDataType();
203 dt1.setKey(new PfConceptKey("dt1", "0.0.1"));
204 dt1.setDescription("dt1 description");
205 dataTypes.getConceptMap().put(dt1.getKey(), dt1);
206 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
207 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt1, result).isEmpty());
208 assertTrue(result.isValid());
210 dt1.setDerivedFrom(dt0.getKey());
211 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
212 assertFalse(ToscaUtils.getEntityTypeAncestors(dataTypes, dt1, result).isEmpty());
213 assertEquals(1, ToscaUtils.getEntityTypeAncestors(dataTypes, dt1, result).size());
214 assertTrue(result.isValid());
216 JpaToscaDataType dt2 = new JpaToscaDataType();
217 dt2.setKey(new PfConceptKey("dt2", "0.0.1"));
218 dt2.setDescription("dt2 description");
219 dataTypes.getConceptMap().put(dt2.getKey(), dt2);
220 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
221 assertFalse(ToscaUtils.getEntityTypeAncestors(dataTypes, dt1, result).isEmpty());
222 assertEquals(1, ToscaUtils.getEntityTypeAncestors(dataTypes, dt1, result).size());
223 assertTrue(result.isValid());
225 dt2.setDerivedFrom(dt1.getKey());
226 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
227 assertFalse(ToscaUtils.getEntityTypeAncestors(dataTypes, dt1, result).isEmpty());
228 assertFalse(ToscaUtils.getEntityTypeAncestors(dataTypes, dt2, result).isEmpty());
229 assertEquals(1, ToscaUtils.getEntityTypeAncestors(dataTypes, dt1, result).size());
230 assertEquals(2, ToscaUtils.getEntityTypeAncestors(dataTypes, dt2, result).size());
231 assertTrue(result.isValid());
233 dt1.setDerivedFrom(new PfConceptKey("tosca.datatyps.Root", PfKey.NULL_KEY_VERSION));
234 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt0, result).isEmpty());
235 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt1, result).isEmpty());
236 assertFalse(ToscaUtils.getEntityTypeAncestors(dataTypes, dt2, result).isEmpty());
237 assertEquals(0, ToscaUtils.getEntityTypeAncestors(dataTypes, dt1, result).size());
238 assertEquals(1, ToscaUtils.getEntityTypeAncestors(dataTypes, dt2, result).size());
239 assertTrue(result.isValid());
241 dataTypes.getConceptMap().remove(dt1.getKey());
242 assertTrue(ToscaUtils.getEntityTypeAncestors(dataTypes, dt2, result).isEmpty());
243 assertFalse(result.isValid());
244 assertTrue(result.toString().contains("parent dt1:0.0.1 of entity not found"));