Changes for Checkstyle 8.32
[policy/models.git] / models-tosca / src / test / java / org / onap / policy / models / tosca / utils / ToscaServiceTemplateUtilsTest.java
1 /*-
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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.models.tosca.utils;
22
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
25
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;
37
38 /**
39  * Import the {@link ToscaServiceTemplateUtilsTest} class.
40  *
41  * @author Liam Fallon (liam.fallon@est.tech)
42  */
43 public class ToscaServiceTemplateUtilsTest {
44     @Test
45     public void testAddFragmentNulls() {
46         assertThatThrownBy(() -> {
47             ToscaServiceTemplateUtils.addFragment(null, null);
48         }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
49
50         assertThatThrownBy(() -> {
51             ToscaServiceTemplateUtils.addFragment(null, new JpaToscaServiceTemplate());
52         }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null");
53
54         assertThatThrownBy(() -> {
55             ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), null);
56         }).hasMessageMatching("fragmentTemplate is marked .*on.*ull but is null");
57
58         assertEquals(new JpaToscaServiceTemplate(),
59                 ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), new JpaToscaServiceTemplate()));
60     }
61
62     @Test
63     public void testAddFragment() {
64         JpaToscaServiceTemplate originalTemplate = new JpaToscaServiceTemplate();
65         JpaToscaServiceTemplate fragmentTemplate00 = new JpaToscaServiceTemplate();
66
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));
75
76         fragmentTemplate00.setDataTypes(new JpaToscaDataTypes());
77         fragmentTemplate00.setPolicyTypes(new JpaToscaPolicyTypes());
78
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));
87
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);
94
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));
103
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));
112
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);
119
120         compositeTemplate00 = ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02);
121         assertEquals(compositeTemplate00,
122                 ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02));
123
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);
131
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");
136
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");
142
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());
149
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());
156
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");
163
164         JpaToscaDataType dt1 = new JpaToscaDataType();
165         dt1.setKey(new PfConceptKey("dt1", "0.0.1"));
166         dt1.setDescription("dt1 description");
167
168         JpaToscaPolicyType pt0 = new JpaToscaPolicyType();
169         pt0.setKey(new PfConceptKey("pt0", "0.0.1"));
170         pt0.setDescription("pt0 description");
171
172         JpaToscaPolicy p0 = new JpaToscaPolicy();
173         p0.setKey(new PfConceptKey("p0", "0.0.1"));
174         p0.setDescription("pt0 description");
175
176         JpaToscaServiceTemplate fragmentTemplate08 = new JpaToscaServiceTemplate();
177
178         fragmentTemplate08.setDataTypes(new JpaToscaDataTypes());
179         fragmentTemplate08.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
180
181         fragmentTemplate08.setPolicyTypes(new JpaToscaPolicyTypes());
182         fragmentTemplate08.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
183
184         fragmentTemplate08.setTopologyTemplate(new JpaToscaTopologyTemplate());
185         fragmentTemplate08.getTopologyTemplate().setDescription("topology template description");
186
187         fragmentTemplate08.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
188         fragmentTemplate08.getTopologyTemplate().getPolicies().getConceptMap().put(p0.getKey(), p0);
189
190         assertThatThrownBy(() -> {
191             ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08);
192         }).hasMessageContaining("JpaToscaPolicy:INVALID:type is null or a null key");
193
194         p0.setType(pt0.getKey());
195
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());
203
204         JpaToscaServiceTemplate fragmentTemplate09 = new JpaToscaServiceTemplate();
205
206         fragmentTemplate09.setDataTypes(new JpaToscaDataTypes());
207         fragmentTemplate09.getDataTypes().getConceptMap().put(dt1.getKey(), dt1);
208
209         fragmentTemplate09.setPolicyTypes(new JpaToscaPolicyTypes());
210         fragmentTemplate09.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
211
212         fragmentTemplate09.setTopologyTemplate(null);
213
214         JpaToscaServiceTemplate compositeTemplate06 =
215                 ToscaServiceTemplateUtils.addFragment(compositeTemplate05, fragmentTemplate09);
216         assertEquals(compositeTemplate05.getTopologyTemplate(), compositeTemplate06.getTopologyTemplate());
217     }
218 }