2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2020 Nordix Foundation.
4 * Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.models.tosca.utils;
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
27 import java.util.Iterator;
28 import org.junit.Test;
29 import org.onap.policy.models.base.PfConceptKey;
30 import org.onap.policy.models.base.Validated;
31 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
32 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
33 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
34 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
35 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
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 ToscaServiceTemplateUtilsTest} class.
43 * @author Liam Fallon (liam.fallon@est.tech)
45 public class ToscaServiceTemplateUtilsTest {
47 public void testAddFragmentNulls() {
48 assertThatThrownBy(() -> {
49 ToscaServiceTemplateUtils.addFragment(null, null);
50 }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
52 assertThatThrownBy(() -> {
53 ToscaServiceTemplateUtils.addFragment(null, new JpaToscaServiceTemplate());
54 }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
56 assertThatThrownBy(() -> {
57 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), null);
58 }).hasMessageMatching("fragmentTemplate is marked .*on.*ull but is null");
60 assertEquals(new JpaToscaServiceTemplate(),
61 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), new JpaToscaServiceTemplate()));
65 public void testAddFragment() {
66 JpaToscaServiceTemplate originalTemplate = new JpaToscaServiceTemplate();
67 JpaToscaServiceTemplate fragmentTemplate00 = new JpaToscaServiceTemplate();
69 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate));
70 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00));
71 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate));
72 assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00));
73 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate));
74 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00));
75 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate));
76 assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00));
78 fragmentTemplate00.setDataTypes(new JpaToscaDataTypes());
79 fragmentTemplate00.setPolicyTypes(new JpaToscaPolicyTypes());
81 JpaToscaServiceTemplate compositeTemplate00 =
82 ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00);
83 assertEquals(compositeTemplate00,
84 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate00));
85 assertEquals(compositeTemplate00,
86 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, new JpaToscaServiceTemplate()));
87 assertEquals(compositeTemplate00,
88 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate00));
90 JpaToscaDataType dt0 = new JpaToscaDataType();
91 dt0.setKey(new PfConceptKey("dt0", "0.0.1"));
92 dt0.setDescription("dt0 description");
93 JpaToscaServiceTemplate fragmentTemplate01 = new JpaToscaServiceTemplate();
94 fragmentTemplate01.setDataTypes(new JpaToscaDataTypes());
95 fragmentTemplate01.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
97 JpaToscaServiceTemplate compositeTemplate01 =
98 ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate01);
99 assertEquals(compositeTemplate01,
100 ToscaServiceTemplateUtils.addFragment(compositeTemplate01, fragmentTemplate01));
101 assertEquals(compositeTemplate01,
102 ToscaServiceTemplateUtils.addFragment(compositeTemplate01, new JpaToscaServiceTemplate()));
103 assertEquals(compositeTemplate01,
104 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate01));
106 JpaToscaServiceTemplate compositeTemplate02 =
107 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate01);
108 assertEquals(compositeTemplate02,
109 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, fragmentTemplate01));
110 assertEquals(compositeTemplate02,
111 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, new JpaToscaServiceTemplate()));
112 assertEquals(compositeTemplate02,
113 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate02));
115 JpaToscaDataType otherDt0 = new JpaToscaDataType();
116 otherDt0.setKey(new PfConceptKey("dt0", "0.0.1"));
117 otherDt0.setDescription("dt0 description");
118 JpaToscaServiceTemplate fragmentTemplate02 = new JpaToscaServiceTemplate();
119 fragmentTemplate02.setDataTypes(new JpaToscaDataTypes());
120 fragmentTemplate02.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0);
122 compositeTemplate00 = ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02);
123 assertEquals(compositeTemplate00,
124 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02));
126 JpaToscaDataType badOtherDt0 = new JpaToscaDataType();
127 badOtherDt0.setKey(new PfConceptKey("dt0", "0.0.1"));
128 badOtherDt0.setDescription("dt0 bad description");
129 JpaToscaServiceTemplate fragmentTemplate03 = new JpaToscaServiceTemplate();
130 fragmentTemplate03.setDataTypes(new JpaToscaDataTypes());
131 fragmentTemplate03.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0);
132 fragmentTemplate03.getDataTypes().getConceptMap().put(badOtherDt0.getKey(), badOtherDt0);
134 final JpaToscaServiceTemplate compositeTestTemplate = new JpaToscaServiceTemplate(compositeTemplate00);
135 assertThatThrownBy(() -> {
136 ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate03);
137 }).hasMessageContaining("incoming fragment").hasMessageContaining("entity").hasMessageContaining("dt0:0.0.1")
138 .hasMessageContaining("does not equal existing entity");
140 JpaToscaServiceTemplate fragmentTemplate04 = new JpaToscaServiceTemplate();
141 fragmentTemplate04.setDescription("Another service template");
142 assertThatThrownBy(() -> {
143 ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate04);
144 }).hasMessageContaining("service template").hasMessageContaining("does not equal existing service template");
146 JpaToscaServiceTemplate fragmentTemplate05 = new JpaToscaServiceTemplate();
147 fragmentTemplate05.setTopologyTemplate(new JpaToscaTopologyTemplate());
148 fragmentTemplate05.getTopologyTemplate().setDescription("topology template description");
149 JpaToscaServiceTemplate compositeTemplate03 =
150 ToscaServiceTemplateUtils.addFragment(compositeTemplate02, fragmentTemplate05);
151 assertEquals(fragmentTemplate05.getTopologyTemplate(), compositeTemplate03.getTopologyTemplate());
153 JpaToscaServiceTemplate fragmentTemplate06 = new JpaToscaServiceTemplate();
154 fragmentTemplate06.setTopologyTemplate(new JpaToscaTopologyTemplate());
155 fragmentTemplate06.getTopologyTemplate().setDescription("topology template description");
156 JpaToscaServiceTemplate compositeTemplate04 =
157 ToscaServiceTemplateUtils.addFragment(compositeTemplate03, fragmentTemplate06);
158 assertEquals(fragmentTemplate06.getTopologyTemplate(), compositeTemplate04.getTopologyTemplate());
160 JpaToscaServiceTemplate fragmentTemplate07 = new JpaToscaServiceTemplate();
161 fragmentTemplate07.setTopologyTemplate(new JpaToscaTopologyTemplate());
162 fragmentTemplate07.getTopologyTemplate().setDescription("topology template other description");
163 assertThatThrownBy(() -> {
164 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate07);
165 }).hasMessageContaining("incoming fragment").hasMessageContaining("topology template")
166 .hasMessageContaining("does not equal existing topology template");
168 JpaToscaDataType dt1 = new JpaToscaDataType();
169 dt1.setKey(new PfConceptKey("dt1", "0.0.1"));
170 dt1.setDescription("dt1 description");
172 JpaToscaPolicyType pt0 = new JpaToscaPolicyType();
173 pt0.setKey(new PfConceptKey("pt0", "0.0.1"));
174 pt0.setDescription("pt0 description");
176 JpaToscaPolicy p0 = new JpaToscaPolicy();
177 p0.setKey(new PfConceptKey("p0", "0.0.1"));
178 p0.setDescription("pt0 description");
180 JpaToscaServiceTemplate fragmentTemplate08 = new JpaToscaServiceTemplate();
182 fragmentTemplate08.setDataTypes(new JpaToscaDataTypes());
183 fragmentTemplate08.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
185 fragmentTemplate08.setPolicyTypes(new JpaToscaPolicyTypes());
186 fragmentTemplate08.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
188 fragmentTemplate08.setTopologyTemplate(new JpaToscaTopologyTemplate());
189 fragmentTemplate08.getTopologyTemplate().setDescription("topology template description");
191 fragmentTemplate08.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
192 fragmentTemplate08.getTopologyTemplate().getPolicies().getConceptMap().put(p0.getKey(), p0);
194 assertThatThrownBy(() -> {
195 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08);
196 }).hasMessageContaining("type").hasMessageContaining(Validated.IS_A_NULL_KEY);
198 p0.setType(pt0.getKey());
200 JpaToscaServiceTemplate compositeTemplate05 =
201 ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08);
202 Iterator<JpaToscaDataType> dtIterator = compositeTemplate05.getDataTypes().getAll(null).iterator();
203 assertEquals(dt0, dtIterator.next());
204 assertEquals(dt1, dtIterator.next());
205 assertEquals(pt0, compositeTemplate05.getPolicyTypes().getAll(null).iterator().next());
206 assertEquals(p0, compositeTemplate05.getTopologyTemplate().getPolicies().getAll(null).iterator().next());
208 JpaToscaServiceTemplate fragmentTemplate09 = new JpaToscaServiceTemplate();
210 fragmentTemplate09.setDataTypes(new JpaToscaDataTypes());
211 fragmentTemplate09.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
213 fragmentTemplate09.setPolicyTypes(new JpaToscaPolicyTypes());
214 fragmentTemplate09.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
216 fragmentTemplate09.setTopologyTemplate(null);
218 JpaToscaServiceTemplate compositeTemplate06 =
219 ToscaServiceTemplateUtils.addFragment(compositeTemplate05, fragmentTemplate09);
220 assertEquals(compositeTemplate05.getTopologyTemplate(), compositeTemplate06.getTopologyTemplate());