2 * ============LICENSE_START=======================================================
3 * Copyright (C) 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.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
26 import java.util.Iterator;
27 import org.junit.Test;
28 import org.onap.policy.models.base.PfConceptKey;
29 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
30 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
31 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
32 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
33 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
34 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
35 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
36 import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
39 * Import the {@link ToscaServiceTemplateUtilsTest} class.
41 * @author Liam Fallon (liam.fallon@est.tech)
43 public class ToscaServiceTemplateUtilsTest {
45 public void testAddFragmentNulls() {
46 assertThatThrownBy(() -> {
47 ToscaServiceTemplateUtils.addFragment(null, null);
48 }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
50 assertThatThrownBy(() -> {
51 ToscaServiceTemplateUtils.addFragment(null, new JpaToscaServiceTemplate());
52 }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
54 assertThatThrownBy(() -> {
55 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), null);
56 }).hasMessageMatching("fragmentTemplate is marked .*on.*ull but is null");
58 assertEquals(new JpaToscaServiceTemplate(),
59 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), new JpaToscaServiceTemplate()));
63 public void testAddFragment() {
64 JpaToscaServiceTemplate originalTemplate = new JpaToscaServiceTemplate();
65 JpaToscaServiceTemplate fragmentTemplate00 = new JpaToscaServiceTemplate();
67 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate));
68 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00));
69 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate));
70 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00));
71 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate));
72 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00));
73 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate));
74 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00));
76 fragmentTemplate00.setDataTypes(new JpaToscaDataTypes());
77 fragmentTemplate00.setPolicyTypes(new JpaToscaPolicyTypes());
79 JpaToscaServiceTemplate compositeTemplate00 =
80 ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00);
81 assertEquals(compositeTemplate00,
82 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate00));
83 assertEquals(compositeTemplate00,
84 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, new JpaToscaServiceTemplate()));
85 assertEquals(compositeTemplate00,
86 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate00));
88 JpaToscaDataType dt0 = new JpaToscaDataType();
89 dt0.setKey(new PfConceptKey("dt0", "0.0.1"));
90 dt0.setDescription("dt0 description");
91 JpaToscaServiceTemplate fragmentTemplate01 = new JpaToscaServiceTemplate();
92 fragmentTemplate01.setDataTypes(new JpaToscaDataTypes());
93 fragmentTemplate01.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
95 JpaToscaServiceTemplate compositeTemplate01 =
96 ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate01);
97 assertEquals(compositeTemplate01,
98 ToscaServiceTemplateUtils.addFragment(compositeTemplate01, fragmentTemplate01));
99 assertEquals(compositeTemplate01,
100 ToscaServiceTemplateUtils.addFragment(compositeTemplate01, new JpaToscaServiceTemplate()));
101 assertEquals(compositeTemplate01,
102 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate01));
104 JpaToscaServiceTemplate compositeTemplate02 =
105 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate01);
106 assertEquals(compositeTemplate02,
107 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, fragmentTemplate01));
108 assertEquals(compositeTemplate02,
109 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, new JpaToscaServiceTemplate()));
110 assertEquals(compositeTemplate02,
111 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate02));
113 JpaToscaDataType otherDt0 = new JpaToscaDataType();
114 otherDt0.setKey(new PfConceptKey("dt0", "0.0.1"));
115 otherDt0.setDescription("dt0 description");
116 JpaToscaServiceTemplate fragmentTemplate02 = new JpaToscaServiceTemplate();
117 fragmentTemplate02.setDataTypes(new JpaToscaDataTypes());
118 fragmentTemplate02.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0);
120 compositeTemplate00 = ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02);
121 assertEquals(compositeTemplate00,
122 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02));
124 JpaToscaDataType badOtherDt0 = new JpaToscaDataType();
125 badOtherDt0.setKey(new PfConceptKey("dt0", "0.0.1"));
126 badOtherDt0.setDescription("dt0 bad description");
127 JpaToscaServiceTemplate fragmentTemplate03 = new JpaToscaServiceTemplate();
128 fragmentTemplate03.setDataTypes(new JpaToscaDataTypes());
129 fragmentTemplate03.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0);
130 fragmentTemplate03.getDataTypes().getConceptMap().put(badOtherDt0.getKey(), badOtherDt0);
132 final JpaToscaServiceTemplate compositeTestTemplate = new JpaToscaServiceTemplate(compositeTemplate00);
133 assertThatThrownBy(() -> {
134 ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate03);
135 }).hasMessageContaining("entity in incoming fragment does not equal existing entity");
137 JpaToscaServiceTemplate fragmentTemplate04 = new JpaToscaServiceTemplate();
138 fragmentTemplate04.setDescription("Another service template");
139 assertThatThrownBy(() -> {
140 ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate04);
141 }).hasMessageContaining("service template in incoming fragment does not equal existing service template");
143 JpaToscaServiceTemplate fragmentTemplate05 = new JpaToscaServiceTemplate();
144 fragmentTemplate05.setTopologyTemplate(new JpaToscaTopologyTemplate());
145 fragmentTemplate05.getTopologyTemplate().setDescription("topology template description");
146 JpaToscaServiceTemplate compositeTemplate03 =
147 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, fragmentTemplate05);
148 assertEquals(fragmentTemplate05.getTopologyTemplate(), compositeTemplate03.getTopologyTemplate());
150 JpaToscaServiceTemplate fragmentTemplate06 = new JpaToscaServiceTemplate();
151 fragmentTemplate06.setTopologyTemplate(new JpaToscaTopologyTemplate());
152 fragmentTemplate06.getTopologyTemplate().setDescription("topology template description");
153 JpaToscaServiceTemplate compositeTemplate04 =
154 ToscaServiceTemplateUtils.addFragment(compositeTemplate03, fragmentTemplate06);
155 assertEquals(fragmentTemplate06.getTopologyTemplate(), compositeTemplate04.getTopologyTemplate());
157 JpaToscaServiceTemplate fragmentTemplate07 = new JpaToscaServiceTemplate();
158 fragmentTemplate07.setTopologyTemplate(new JpaToscaTopologyTemplate());
159 fragmentTemplate07.getTopologyTemplate().setDescription("topology template other description");
160 assertThatThrownBy(() -> {
161 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate07);
162 }).hasMessageContaining("topology template in incoming fragment does not equal existing topology template");
164 JpaToscaDataType dt1 = new JpaToscaDataType();
165 dt1.setKey(new PfConceptKey("dt1", "0.0.1"));
166 dt1.setDescription("dt1 description");
168 JpaToscaPolicyType pt0 = new JpaToscaPolicyType();
169 pt0.setKey(new PfConceptKey("pt0", "0.0.1"));
170 pt0.setDescription("pt0 description");
172 JpaToscaPolicy p0 = new JpaToscaPolicy();
173 p0.setKey(new PfConceptKey("p0", "0.0.1"));
174 p0.setDescription("pt0 description");
176 JpaToscaServiceTemplate fragmentTemplate08 = new JpaToscaServiceTemplate();
178 fragmentTemplate08.setDataTypes(new JpaToscaDataTypes());
179 fragmentTemplate08.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
181 fragmentTemplate08.setPolicyTypes(new JpaToscaPolicyTypes());
182 fragmentTemplate08.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
184 fragmentTemplate08.setTopologyTemplate(new JpaToscaTopologyTemplate());
185 fragmentTemplate08.getTopologyTemplate().setDescription("topology template description");
187 fragmentTemplate08.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
188 fragmentTemplate08.getTopologyTemplate().getPolicies().getConceptMap().put(p0.getKey(), p0);
190 assertThatThrownBy(() -> {
191 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08);
192 }).hasMessageContaining("JpaToscaPolicy:INVALID:type is null or a null key");
194 p0.setType(pt0.getKey());
196 JpaToscaServiceTemplate compositeTemplate05 =
197 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08);
198 Iterator<JpaToscaDataType> dtIterator = compositeTemplate05.getDataTypes().getAll(null).iterator();
199 assertEquals(dt0, dtIterator.next());
200 assertEquals(dt1, dtIterator.next());
201 assertEquals(pt0, compositeTemplate05.getPolicyTypes().getAll(null).iterator().next());
202 assertEquals(p0, compositeTemplate05.getTopologyTemplate().getPolicies().getAll(null).iterator().next());
204 JpaToscaServiceTemplate fragmentTemplate09 = new JpaToscaServiceTemplate();
206 fragmentTemplate09.setDataTypes(new JpaToscaDataTypes());
207 fragmentTemplate09.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
209 fragmentTemplate09.setPolicyTypes(new JpaToscaPolicyTypes());
210 fragmentTemplate09.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
212 fragmentTemplate09.setTopologyTemplate(null);
214 JpaToscaServiceTemplate compositeTemplate06 =
215 ToscaServiceTemplateUtils.addFragment(compositeTemplate05, fragmentTemplate09);
216 assertEquals(compositeTemplate05.getTopologyTemplate(), compositeTemplate06.getTopologyTemplate());