2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2020-2021 Nordix Foundation.
4 * Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
5 * Modifications Copyright (C) 2024 Nordix Foundation
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 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.models.tosca.utils;
25 import static org.assertj.core.api.Assertions.assertThatThrownBy;
26 import static org.junit.jupiter.api.Assertions.assertEquals;
28 import java.util.Iterator;
29 import org.junit.jupiter.api.Test;
30 import org.onap.policy.models.base.PfConceptKey;
31 import org.onap.policy.models.base.Validated;
32 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
33 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
34 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
35 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
36 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
37 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
38 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
39 import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
42 * Import the {@link ToscaServiceTemplateUtilsTest} class.
44 * @author Liam Fallon (liam.fallon@est.tech)
46 class ToscaServiceTemplateUtilsTest {
48 void testAddFragmentNulls() {
49 assertThatThrownBy(() -> {
50 ToscaServiceTemplateUtils.addFragment(null, null);
51 }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
53 assertThatThrownBy(() -> {
54 ToscaServiceTemplateUtils.addFragment(null, new JpaToscaServiceTemplate());
55 }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
57 assertThatThrownBy(() -> {
58 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), null);
59 }).hasMessageMatching("fragmentTemplate is marked .*on.*ull but is null");
61 assertEquals(new JpaToscaServiceTemplate(),
62 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), new JpaToscaServiceTemplate()));
66 void testAddFragment() {
67 JpaToscaServiceTemplate originalTemplate = new JpaToscaServiceTemplate();
68 JpaToscaServiceTemplate fragmentTemplate00 = new JpaToscaServiceTemplate();
70 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate));
71 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00));
72 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate));
73 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00));
74 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate));
75 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00));
76 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate));
77 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00));
79 fragmentTemplate00.setDataTypes(new JpaToscaDataTypes());
80 fragmentTemplate00.setPolicyTypes(new JpaToscaPolicyTypes());
82 JpaToscaServiceTemplate compositeTemplate00 =
83 ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00);
84 checkFragments(compositeTemplate00, fragmentTemplate00);
86 JpaToscaDataType dt0 = new JpaToscaDataType();
87 dt0.setKey(new PfConceptKey("dt0", "0.0.1"));
88 dt0.setDescription("dt0 description");
89 JpaToscaServiceTemplate fragmentTemplate01 = new JpaToscaServiceTemplate();
90 fragmentTemplate01.setDataTypes(new JpaToscaDataTypes());
91 fragmentTemplate01.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
93 JpaToscaServiceTemplate compositeTemplate01 =
94 ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate01);
95 checkFragments(compositeTemplate01, fragmentTemplate01);
97 JpaToscaServiceTemplate compositeTemplate02 =
98 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate01);
99 checkFragments(compositeTemplate02, fragmentTemplate01);
101 JpaToscaDataType otherDt0 = new JpaToscaDataType();
102 otherDt0.setKey(new PfConceptKey("dt0", "0.0.1"));
103 otherDt0.setDescription("dt0 description");
104 JpaToscaServiceTemplate fragmentTemplate02 = new JpaToscaServiceTemplate();
105 fragmentTemplate02.setDataTypes(new JpaToscaDataTypes());
106 fragmentTemplate02.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0);
108 compositeTemplate00 = ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02);
109 assertEquals(compositeTemplate00,
110 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02));
112 JpaToscaDataType badOtherDt0 = new JpaToscaDataType();
113 badOtherDt0.setKey(new PfConceptKey("dt0", "0.0.1"));
114 badOtherDt0.setDescription("dt0 bad description");
115 JpaToscaServiceTemplate fragmentTemplate03 = new JpaToscaServiceTemplate();
116 fragmentTemplate03.setDataTypes(new JpaToscaDataTypes());
117 fragmentTemplate03.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0);
118 fragmentTemplate03.getDataTypes().getConceptMap().put(badOtherDt0.getKey(), badOtherDt0);
120 final JpaToscaServiceTemplate compositeTestTemplate = new JpaToscaServiceTemplate(compositeTemplate00);
121 assertThatThrownBy(() -> {
122 ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate03);
123 }).hasMessageContaining("incoming fragment").hasMessageContaining("entity").hasMessageContaining("dt0:0.0.1")
124 .hasMessageContaining("does not equal existing entity");
126 JpaToscaServiceTemplate fragmentTemplate04 = new JpaToscaServiceTemplate();
127 fragmentTemplate04.setDescription("Another service template");
128 assertThatThrownBy(() -> {
129 ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate04);
130 }).hasMessageContaining("service template").hasMessageContaining("does not equal existing service template");
132 JpaToscaServiceTemplate fragmentTemplate05 = new JpaToscaServiceTemplate();
133 fragmentTemplate05.setTopologyTemplate(new JpaToscaTopologyTemplate());
134 fragmentTemplate05.getTopologyTemplate().setDescription("topology template description");
135 JpaToscaServiceTemplate compositeTemplate03 =
136 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, fragmentTemplate05);
137 assertEquals(fragmentTemplate05.getTopologyTemplate(), compositeTemplate03.getTopologyTemplate());
139 JpaToscaServiceTemplate fragmentTemplate06 = new JpaToscaServiceTemplate();
140 fragmentTemplate06.setTopologyTemplate(new JpaToscaTopologyTemplate());
141 fragmentTemplate06.getTopologyTemplate().setDescription("topology template description");
142 JpaToscaServiceTemplate compositeTemplate04 =
143 ToscaServiceTemplateUtils.addFragment(compositeTemplate03, fragmentTemplate06);
144 assertEquals(fragmentTemplate06.getTopologyTemplate(), compositeTemplate04.getTopologyTemplate());
146 JpaToscaServiceTemplate fragmentTemplate07 = new JpaToscaServiceTemplate();
147 fragmentTemplate07.setTopologyTemplate(new JpaToscaTopologyTemplate());
148 fragmentTemplate07.getTopologyTemplate().setDescription("topology template other description");
149 assertThatThrownBy(() -> {
150 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate07);
151 }).hasMessageContaining("incoming fragment").hasMessageContaining("topology template")
152 .hasMessageContaining("does not equal existing topology template");
154 JpaToscaDataType dt1 = new JpaToscaDataType();
155 dt1.setKey(new PfConceptKey("dt1", "0.0.1"));
156 dt1.setDescription("dt1 description");
158 JpaToscaPolicyType pt0 = new JpaToscaPolicyType();
159 pt0.setKey(new PfConceptKey("pt0", "0.0.1"));
160 pt0.setDescription("pt0 description");
162 JpaToscaPolicy p0 = new JpaToscaPolicy();
163 p0.setKey(new PfConceptKey("p0", "0.0.1"));
164 p0.setDescription("pt0 description");
166 JpaToscaServiceTemplate fragmentTemplate08 = new JpaToscaServiceTemplate();
168 fragmentTemplate08.setDataTypes(new JpaToscaDataTypes());
169 fragmentTemplate08.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
171 fragmentTemplate08.setPolicyTypes(new JpaToscaPolicyTypes());
172 fragmentTemplate08.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
174 fragmentTemplate08.setTopologyTemplate(new JpaToscaTopologyTemplate());
175 fragmentTemplate08.getTopologyTemplate().setDescription("topology template description");
177 fragmentTemplate08.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
178 fragmentTemplate08.getTopologyTemplate().getPolicies().getConceptMap().put(p0.getKey(), p0);
180 assertThatThrownBy(() -> {
181 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08);
182 }).hasMessageContaining("type").hasMessageContaining(Validated.IS_A_NULL_KEY);
184 p0.setType(pt0.getKey());
186 JpaToscaServiceTemplate compositeTemplate05 =
187 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08);
188 Iterator<JpaToscaDataType> dtIterator = compositeTemplate05.getDataTypes().getAll(null).iterator();
189 assertEquals(dt0, dtIterator.next());
190 assertEquals(dt1, dtIterator.next());
191 assertEquals(pt0, compositeTemplate05.getPolicyTypes().getAll(null).iterator().next());
192 assertEquals(p0, compositeTemplate05.getTopologyTemplate().getPolicies().getAll(null).iterator().next());
194 JpaToscaServiceTemplate fragmentTemplate09 = new JpaToscaServiceTemplate();
196 fragmentTemplate09.setDataTypes(new JpaToscaDataTypes());
197 fragmentTemplate09.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
199 fragmentTemplate09.setPolicyTypes(new JpaToscaPolicyTypes());
200 fragmentTemplate09.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
202 fragmentTemplate09.setTopologyTemplate(null);
204 JpaToscaServiceTemplate compositeTemplate06 =
205 ToscaServiceTemplateUtils.addFragment(compositeTemplate05, fragmentTemplate09);
206 assertEquals(compositeTemplate05.getTopologyTemplate(), compositeTemplate06.getTopologyTemplate());
209 private void checkFragments(JpaToscaServiceTemplate compositeTemplate, JpaToscaServiceTemplate fragmentTemplate) {
210 assertEquals(compositeTemplate,
211 ToscaServiceTemplateUtils.addFragment(compositeTemplate, fragmentTemplate));
212 assertEquals(compositeTemplate,
213 ToscaServiceTemplateUtils.addFragment(compositeTemplate, new JpaToscaServiceTemplate()));
214 assertEquals(compositeTemplate,
215 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate));