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;
28 import org.junit.Test;
29 import org.onap.policy.models.base.PfConceptKey;
30 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
31 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
32 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
33 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
34 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
35 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
36 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
37 import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
40 * Import the {@link ToscaServiceTemplateUtilsTest} class.
42 * @author Liam Fallon (liam.fallon@est.tech)
44 public class ToscaServiceTemplateUtilsTest {
46 public void testAddFragmentNulls() {
47 assertThatThrownBy(() -> {
48 ToscaServiceTemplateUtils.addFragment(null, null);
49 }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
51 assertThatThrownBy(() -> {
52 ToscaServiceTemplateUtils.addFragment(null, new JpaToscaServiceTemplate());
53 }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
55 assertThatThrownBy(() -> {
56 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), null);
57 }).hasMessageMatching("fragmentTemplate is marked .*on.*ull but is null");
59 assertEquals(new JpaToscaServiceTemplate(),
60 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), new JpaToscaServiceTemplate()));
64 public void testAddFragment() {
65 JpaToscaServiceTemplate originalTemplate = new JpaToscaServiceTemplate();
66 JpaToscaServiceTemplate fragmentTemplate00 = new JpaToscaServiceTemplate();
68 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate));
69 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00));
70 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate));
71 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00));
72 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate));
73 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00));
74 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate));
75 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00));
77 fragmentTemplate00.setDataTypes(new JpaToscaDataTypes());
78 fragmentTemplate00.setPolicyTypes(new JpaToscaPolicyTypes());
80 JpaToscaServiceTemplate compositeTemplate00 =
81 ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00);
82 assertEquals(compositeTemplate00,
83 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate00));
84 assertEquals(compositeTemplate00,
85 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, new JpaToscaServiceTemplate()));
86 assertEquals(compositeTemplate00,
87 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate00));
89 JpaToscaDataType dt0 = new JpaToscaDataType();
90 dt0.setKey(new PfConceptKey("dt0", "0.0.1"));
91 dt0.setDescription("dt0 description");
92 JpaToscaServiceTemplate fragmentTemplate01 = new JpaToscaServiceTemplate();
93 fragmentTemplate01.setDataTypes(new JpaToscaDataTypes());
94 fragmentTemplate01.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
96 JpaToscaServiceTemplate compositeTemplate01 =
97 ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate01);
98 assertEquals(compositeTemplate01,
99 ToscaServiceTemplateUtils.addFragment(compositeTemplate01, fragmentTemplate01));
100 assertEquals(compositeTemplate01,
101 ToscaServiceTemplateUtils.addFragment(compositeTemplate01, new JpaToscaServiceTemplate()));
102 assertEquals(compositeTemplate01,
103 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate01));
105 JpaToscaServiceTemplate compositeTemplate02 =
106 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate01);
107 assertEquals(compositeTemplate02,
108 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, fragmentTemplate01));
109 assertEquals(compositeTemplate02,
110 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, new JpaToscaServiceTemplate()));
111 assertEquals(compositeTemplate02,
112 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate02));
114 JpaToscaDataType otherDt0 = new JpaToscaDataType();
115 otherDt0.setKey(new PfConceptKey("dt0", "0.0.1"));
116 otherDt0.setDescription("dt0 description");
117 JpaToscaServiceTemplate fragmentTemplate02 = new JpaToscaServiceTemplate();
118 fragmentTemplate02.setDataTypes(new JpaToscaDataTypes());
119 fragmentTemplate02.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0);
121 compositeTemplate00 = ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02);
122 assertEquals(compositeTemplate00,
123 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02));
125 JpaToscaDataType badOtherDt0 = new JpaToscaDataType();
126 badOtherDt0.setKey(new PfConceptKey("dt0", "0.0.1"));
127 badOtherDt0.setDescription("dt0 bad description");
128 JpaToscaServiceTemplate fragmentTemplate03 = new JpaToscaServiceTemplate();
129 fragmentTemplate03.setDataTypes(new JpaToscaDataTypes());
130 fragmentTemplate03.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0);
131 fragmentTemplate03.getDataTypes().getConceptMap().put(badOtherDt0.getKey(), badOtherDt0);
133 final JpaToscaServiceTemplate compositeTestTemplate = new JpaToscaServiceTemplate(compositeTemplate00);
134 assertThatThrownBy(() -> {
135 ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate03);
136 }).hasMessageContaining("entity in incoming fragment does not equal existing entity");
138 JpaToscaServiceTemplate fragmentTemplate04 = new JpaToscaServiceTemplate();
139 fragmentTemplate04.setDescription("Another service template");
140 assertThatThrownBy(() -> {
141 ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate04);
142 }).hasMessageContaining("service template in incoming fragment does not equal existing service template");
144 JpaToscaServiceTemplate fragmentTemplate05 = new JpaToscaServiceTemplate();
145 fragmentTemplate05.setTopologyTemplate(new JpaToscaTopologyTemplate());
146 fragmentTemplate05.getTopologyTemplate().setDescription("topology template description");
147 JpaToscaServiceTemplate compositeTemplate03 =
148 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, fragmentTemplate05);
149 assertEquals(fragmentTemplate05.getTopologyTemplate(), compositeTemplate03.getTopologyTemplate());
151 JpaToscaServiceTemplate fragmentTemplate06 = new JpaToscaServiceTemplate();
152 fragmentTemplate06.setTopologyTemplate(new JpaToscaTopologyTemplate());
153 fragmentTemplate06.getTopologyTemplate().setDescription("topology template description");
154 JpaToscaServiceTemplate compositeTemplate04 =
155 ToscaServiceTemplateUtils.addFragment(compositeTemplate03, fragmentTemplate06);
156 assertEquals(fragmentTemplate06.getTopologyTemplate(), compositeTemplate04.getTopologyTemplate());
158 JpaToscaServiceTemplate fragmentTemplate07 = new JpaToscaServiceTemplate();
159 fragmentTemplate07.setTopologyTemplate(new JpaToscaTopologyTemplate());
160 fragmentTemplate07.getTopologyTemplate().setDescription("topology template other description");
161 assertThatThrownBy(() -> {
162 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate07);
163 }).hasMessageContaining("topology template in incoming fragment does not equal existing topology template");
165 JpaToscaDataType dt1 = new JpaToscaDataType();
166 dt1.setKey(new PfConceptKey("dt1", "0.0.1"));
167 dt1.setDescription("dt1 description");
169 JpaToscaPolicyType pt0 = new JpaToscaPolicyType();
170 pt0.setKey(new PfConceptKey("pt0", "0.0.1"));
171 pt0.setDescription("pt0 description");
173 JpaToscaPolicy p0 = new JpaToscaPolicy();
174 p0.setKey(new PfConceptKey("p0", "0.0.1"));
175 p0.setDescription("pt0 description");
177 JpaToscaServiceTemplate fragmentTemplate08 = new JpaToscaServiceTemplate();
179 fragmentTemplate08.setDataTypes(new JpaToscaDataTypes());
180 fragmentTemplate08.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
182 fragmentTemplate08.setPolicyTypes(new JpaToscaPolicyTypes());
183 fragmentTemplate08.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
185 fragmentTemplate08.setTopologyTemplate(new JpaToscaTopologyTemplate());
186 fragmentTemplate08.getTopologyTemplate().setDescription("topology template description");
188 fragmentTemplate08.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
189 fragmentTemplate08.getTopologyTemplate().getPolicies().getConceptMap().put(p0.getKey(), p0);
191 assertThatThrownBy(() -> {
192 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08);
193 }).hasMessageContaining("JpaToscaPolicy:INVALID:type is null or a null key");
195 p0.setType(pt0.getKey());
197 JpaToscaServiceTemplate compositeTemplate05 =
198 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08);
199 Iterator<JpaToscaDataType> dtIterator = compositeTemplate05.getDataTypes().getAll(null).iterator();
200 assertEquals(dt0, dtIterator.next());
201 assertEquals(dt1, dtIterator.next());
202 assertEquals(pt0, compositeTemplate05.getPolicyTypes().getAll(null).iterator().next());
203 assertEquals(p0, compositeTemplate05.getTopologyTemplate().getPolicies().getAll(null).iterator().next());
205 JpaToscaServiceTemplate fragmentTemplate09 = new JpaToscaServiceTemplate();
207 fragmentTemplate09.setDataTypes(new JpaToscaDataTypes());
208 fragmentTemplate09.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
210 fragmentTemplate09.setPolicyTypes(new JpaToscaPolicyTypes());
211 fragmentTemplate09.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
213 fragmentTemplate09.setTopologyTemplate(null);
215 JpaToscaServiceTemplate compositeTemplate06 =
216 ToscaServiceTemplateUtils.addFragment(compositeTemplate05, fragmentTemplate09);
217 assertEquals(compositeTemplate05.getTopologyTemplate(), compositeTemplate06.getTopologyTemplate());