a926ca14964b494b2e65308ebb426907086f40b6
[policy/models.git] / models-tosca / src / test / java / org / onap / policy / models / tosca / simple / provider / SimpleToscaProviderTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019-2020 Nordix Foundation.
4  *  Modifications Copyright (C) 2019-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
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.models.tosca.simple.provider;
23
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
27 import static org.junit.Assert.assertNull;
28
29 import java.util.LinkedHashMap;
30 import java.util.Properties;
31 import org.eclipse.persistence.config.PersistenceUnitProperties;
32 import org.junit.After;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.onap.policy.common.utils.coder.CoderException;
36 import org.onap.policy.common.utils.coder.StandardCoder;
37 import org.onap.policy.common.utils.resources.ResourceUtils;
38 import org.onap.policy.models.base.PfConceptKey;
39 import org.onap.policy.models.base.PfModelException;
40 import org.onap.policy.models.base.PfReferenceKey;
41 import org.onap.policy.models.base.Validated;
42 import org.onap.policy.models.dao.DaoParameters;
43 import org.onap.policy.models.dao.PfDao;
44 import org.onap.policy.models.dao.PfDaoFactory;
45 import org.onap.policy.models.dao.impl.DefaultPfDao;
46 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
47 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
48 import org.onap.policy.models.tosca.authorative.provider.AuthorativeToscaProvider;
49 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
50 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
51 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
52 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
53 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
54 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
55 import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
56 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
57 import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
58 import org.yaml.snakeyaml.Yaml;
59
60 /**
61  * Test the {@link SimpleToscaProvider} class.
62  *
63  * @author Liam Fallon (liam.fallon@est.tech)
64  */
65 public class SimpleToscaProviderTest {
66     private static final String TEMPLATE_IS_NULL = "^serviceTemplate is marked .*on.*ull but is null$";
67     private static final String INCOMING_TEMPLATE_IS_NULL = "^incomingServiceTemplate is marked .*on.*ull but is null$";
68     private static final String VCPE_INPUT_JSON = "policies/vCPE.policy.monitoring.input.tosca.json";
69     private static final String DAO_IS_NULL = "^dao is marked .*on.*ull but is null$";
70
71     private PfDao pfDao;
72     private StandardCoder standardCoder;
73
74     /**
75      * Set up the DAO towards the database.
76      *
77      * @throws Exception on database errors
78      */
79     @Before
80     public void setupDao() throws Exception {
81         final DaoParameters daoParameters = new DaoParameters();
82         daoParameters.setPluginClass(DefaultPfDao.class.getName());
83
84         daoParameters.setPersistenceUnit("ToscaConceptTest");
85
86         Properties jdbcProperties = new Properties();
87         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy");
88         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY");
89
90         // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB
91         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver");
92         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:testdb");
93
94         daoParameters.setJdbcProperties(jdbcProperties);
95
96         pfDao = new PfDaoFactory().createPfDao(daoParameters);
97         pfDao.init(daoParameters);
98     }
99
100     /**
101      * Set up GSON.
102      */
103     @Before
104     public void setupGson() {
105         standardCoder = new StandardCoder();
106     }
107
108     @After
109     public void teardown() {
110         pfDao.close();
111     }
112
113     @Test
114     public void testCreateUpdateGetDeleteDataType() throws PfModelException {
115         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
116
117         PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
118         JpaToscaDataType dataType0 = new JpaToscaDataType();
119         dataType0.setKey(dataType0Key);
120         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
121         serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
122
123         JpaToscaServiceTemplate createdServiceTemplate =
124                 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
125
126         assertEquals(1, createdServiceTemplate.getDataTypes().getConceptMap().size());
127         assertEquals(dataType0, createdServiceTemplate.getDataTypes().get(dataType0Key));
128         assertEquals(null, createdServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
129
130         dataType0.setDescription("Updated Description");
131
132         JpaToscaServiceTemplate updatedServiceTemplate =
133                 new SimpleToscaProvider().updateDataTypes(pfDao, serviceTemplate);
134
135         assertEquals(dataType0, updatedServiceTemplate.getDataTypes().get(dataType0Key));
136         assertEquals("Updated Description", updatedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
137
138         JpaToscaServiceTemplate gotServiceTemplate =
139                 new SimpleToscaProvider().getDataTypes(pfDao, dataType0Key.getName(), dataType0Key.getVersion());
140
141         assertEquals(dataType0, gotServiceTemplate.getDataTypes().get(dataType0Key));
142         assertEquals("Updated Description", gotServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
143
144         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, new PfConceptKey("IDontExist:0.0.1")))
145                 .hasMessage("data type IDontExist:0.0.1 not found");
146
147         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key);
148
149         assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
150         assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
151
152         // Create the data type again
153         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
154
155         updatedServiceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
156         JpaToscaPolicyType pt0 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.1"));
157         updatedServiceTemplate.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
158         new SimpleToscaProvider().createPolicyTypes(pfDao, updatedServiceTemplate);
159
160         deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key);
161
162         assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
163         assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
164
165         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
166                 .hasMessage("no data types found");
167
168         // Create the data type again
169         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
170
171         JpaToscaPolicyType pt0v2 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.2"));
172         JpaToscaProperty prop0 = new JpaToscaProperty(new PfReferenceKey(pt0v2.getKey(), "prop0"));
173         prop0.setType(dataType0Key);
174         pt0v2.setProperties(new LinkedHashMap<>());
175         pt0v2.getProperties().put(prop0.getKey().getLocalName(), prop0);
176         updatedServiceTemplate.getPolicyTypes().getConceptMap().put(pt0v2.getKey(), pt0v2);
177         new SimpleToscaProvider().createPolicyTypes(pfDao, updatedServiceTemplate);
178
179         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
180                 .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
181
182         JpaToscaDataType dataType0v2 = new JpaToscaDataType(new PfConceptKey("DataType0:0.0.2"));
183         updatedServiceTemplate.getDataTypes().getConceptMap().put(dataType0v2.getKey(), dataType0v2);
184         new SimpleToscaProvider().createDataTypes(pfDao, updatedServiceTemplate);
185
186         deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0v2.getKey());
187
188         assertEquals(dataType0v2, deletedServiceTemplate.getDataTypes().get(dataType0v2.getKey()));
189         assertNull(deletedServiceTemplate.getDataTypes().get(dataType0v2.getKey()).getDescription());
190
191         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
192                 .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
193
194         JpaToscaDataType dataType1 = new JpaToscaDataType(new PfConceptKey("DataType1:0.0.3"));
195         JpaToscaProperty prop1 = new JpaToscaProperty(new PfReferenceKey(dataType1.getKey(), "prop1"));
196         prop1.setType(dataType0v2.getKey());
197         dataType1.setProperties(new LinkedHashMap<>());
198         dataType1.getProperties().put(prop1.getKey().getLocalName(), prop1);
199         updatedServiceTemplate.getDataTypes().getConceptMap().put(dataType1.getKey(), dataType1);
200         new SimpleToscaProvider().createDataTypes(pfDao, updatedServiceTemplate);
201
202         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0v2.getKey()))
203                 .hasMessage("data type DataType0:0.0.2 is in use, it is referenced in data type DataType1:0.0.3");
204     }
205
206     @Test
207     public void testCreateUpdateGetDeletePolicyType() throws PfModelException {
208         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
209
210         PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
211         JpaToscaDataType dataType0 = new JpaToscaDataType();
212         dataType0.setKey(dataType0Key);
213         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
214         serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
215
216         PfConceptKey policyType0Key = new PfConceptKey("PolicyType0", "0.0.1");
217         JpaToscaPolicyType policyType0 = new JpaToscaPolicyType();
218         policyType0.setKey(policyType0Key);
219         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
220         serviceTemplate.getPolicyTypes().getConceptMap().put(policyType0Key, policyType0);
221
222         JpaToscaServiceTemplate createdServiceTemplate =
223                 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
224
225         assertEquals(1, createdServiceTemplate.getPolicyTypes().getConceptMap().size());
226         assertEquals(policyType0, createdServiceTemplate.getPolicyTypes().get(policyType0Key));
227         assertEquals(null, createdServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
228
229         policyType0.setDescription("Updated Description");
230
231         JpaToscaServiceTemplate updatedServiceTemplate =
232                 new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
233
234         assertEquals(policyType0, updatedServiceTemplate.getPolicyTypes().get(policyType0Key));
235         assertEquals("Updated Description",
236                 updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
237
238         JpaToscaServiceTemplate gotServiceTemplate =
239                 new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
240
241         assertEquals(policyType0, gotServiceTemplate.getPolicyTypes().get(policyType0Key));
242         assertEquals("Updated Description", gotServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
243
244         assertThatThrownBy(() -> {
245             new SimpleToscaProvider().deletePolicyType(pfDao, new PfConceptKey("IDontExist:0.0.1"));
246         }).hasMessage("policy type IDontExist:0.0.1 not found");
247
248         JpaToscaPolicyType pt1 = new JpaToscaPolicyType(new PfConceptKey("pt1:0.0.2"));
249         pt1.setDerivedFrom(policyType0Key);
250         serviceTemplate.getPolicyTypes().getConceptMap().put(pt1.getKey(), pt1);
251         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
252
253         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
254                 .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
255
256         serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
257         serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
258
259         JpaToscaPolicy p0 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.1"));
260         p0.setType(policyType0Key);
261         serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p0.getKey(), p0);
262
263         JpaToscaPolicy p1 = new JpaToscaPolicy(new PfConceptKey("p1:0.0.1"));
264         p1.setType(pt1.getKey());
265         serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p1.getKey(), p1);
266         new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
267
268         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
269                 .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
270
271         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, pt1.getKey()))
272                 .hasMessage("policy type pt1:0.0.2 is in use, it is referenced in policy p1:0.0.1");
273
274         new SimpleToscaProvider().deletePolicy(pfDao, p1.getKey());
275
276         new SimpleToscaProvider().deletePolicyType(pfDao, pt1.getKey());
277
278         new SimpleToscaProvider().deletePolicy(pfDao, p0.getKey());
279
280         JpaToscaServiceTemplate deletedServiceTemplate =
281                 new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
282
283         assertEquals(policyType0, deletedServiceTemplate.getPolicyTypes().get(policyType0Key));
284         assertEquals("Updated Description",
285                 deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
286
287         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
288                 .hasMessage("no policy types found");
289
290         JpaToscaServiceTemplate newServiceTemplate =
291                 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
292         assertEquals(serviceTemplate, newServiceTemplate);
293     }
294
295     @Test
296     public void testCreateUpdateGetDeletePolicyTypeWithDataType() throws PfModelException {
297         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
298
299         PfConceptKey policyType0Key = new PfConceptKey("PolicyType0", "0.0.1");
300         JpaToscaPolicyType policyType0 = new JpaToscaPolicyType();
301         policyType0.setKey(policyType0Key);
302         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
303         serviceTemplate.getPolicyTypes().getConceptMap().put(policyType0Key, policyType0);
304
305         JpaToscaServiceTemplate createdServiceTemplate =
306                 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
307
308         assertEquals(policyType0, createdServiceTemplate.getPolicyTypes().get(policyType0Key));
309         assertEquals(null, createdServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
310
311         policyType0.setDescription("Updated Description");
312
313         JpaToscaServiceTemplate updatedServiceTemplate =
314                 new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
315
316         assertEquals(policyType0, updatedServiceTemplate.getPolicyTypes().get(policyType0Key));
317         assertEquals("Updated Description",
318                 updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
319
320         JpaToscaServiceTemplate gotServiceTemplate =
321                 new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
322
323         assertEquals(policyType0, gotServiceTemplate.getPolicyTypes().get(policyType0Key));
324         assertEquals("Updated Description", gotServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
325
326         JpaToscaServiceTemplate deletedServiceTemplate =
327                 new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
328
329         assertEquals(policyType0, deletedServiceTemplate.getPolicyTypes().get(policyType0Key));
330         assertEquals("Updated Description",
331                 deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
332
333         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
334                 .hasMessage("no policy types found");
335     }
336
337     @Test
338     public void testPoliciesGet() throws Exception {
339         ToscaServiceTemplate toscaServiceTemplate =
340                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
341
342         createPolicyTypes();
343
344         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
345         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
346
347         assertNotNull(originalServiceTemplate);
348         JpaToscaServiceTemplate createdServiceTemplate =
349                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
350
351         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
352                 createdServiceTemplate.getTopologyTemplate().getPolicies());
353
354         PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
355
356         JpaToscaServiceTemplate gotServiceTemplate =
357                 new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
358
359         assertEquals(0, originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey)
360                 .compareTo(gotServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey)));
361
362         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicy(pfDao, policyKey);
363         assertEquals(1, deletedServiceTemplate.getTopologyTemplate().getPolicies().getConceptMap().size());
364     }
365
366     @Test
367     public void testPolicyCreate() throws Exception {
368         ToscaServiceTemplate toscaServiceTemplate =
369                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
370
371         createPolicyTypes();
372
373         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
374         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
375
376         assertNotNull(originalServiceTemplate);
377         JpaToscaServiceTemplate createdServiceTemplate =
378                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
379
380         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
381                 createdServiceTemplate.getTopologyTemplate().getPolicies());
382     }
383
384     @Test
385     public void testPolicyCreateTypeAndVersion() throws Exception {
386         ToscaServiceTemplate toscaServiceTemplate =
387                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
388
389         createPolicyTypes();
390
391         ToscaPolicy toscaPolicy =
392                 toscaServiceTemplate.getToscaTopologyTemplate().getPoliciesAsMap().values().iterator().next();
393
394         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
395
396         final String originalPolicyType = toscaPolicy.getType();
397         final String originalPolicyTypeVersion = toscaPolicy.getTypeVersion();
398         toscaPolicy.setType(null);
399         toscaPolicy.setTypeVersion(null);
400
401         assertThatThrownBy(() -> {
402             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
403         }).hasMessage("PolicyType type not specified, the type of the PolicyType for this policy must be "
404                 + "specified in the type field");
405
406         toscaPolicy.setType("IDontExist");
407         assertThatThrownBy(() -> {
408             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
409         }).hasMessage("PolicyType version not specified, the version of the PolicyType for this policy must be "
410                 + "specified in the type_version field");
411
412         toscaPolicy.setTypeVersion("hello");
413         assertThatThrownBy(() -> {
414             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
415         }).hasMessageContaining("value \"hello\", does not match regular expression");
416
417         toscaPolicy.setTypeVersion("99.100.101");
418         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
419
420         assertThatThrownBy(() -> {
421             new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
422         }).hasMessageContaining("policy type").hasMessageContaining("IDontExist:99.100.101")
423                         .hasMessageContaining(Validated.NOT_FOUND);
424
425         toscaPolicy.setType("IDontExist");
426         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
427
428         toscaPolicy.setType(null);
429
430         assertThatThrownBy(() -> {
431             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
432         }).hasMessage("PolicyType type not specified, the type of the PolicyType for this policy must be "
433                 + "specified in the type field");
434
435         toscaPolicy.setType(originalPolicyType);
436         toscaPolicy.setTypeVersion(originalPolicyTypeVersion);
437
438         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
439         JpaToscaServiceTemplate createdServiceTemplate =
440                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
441         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
442                 createdServiceTemplate.getTopologyTemplate().getPolicies());
443     }
444
445     @Test
446     public void testPolicyUpdate() throws Exception {
447         ToscaServiceTemplate toscaServiceTemplate =
448                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
449
450         createPolicyTypes();
451
452         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
453         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
454
455         assertNotNull(originalServiceTemplate);
456         JpaToscaServiceTemplate updatedServiceTemplate =
457                 new SimpleToscaProvider().updatePolicies(pfDao, originalServiceTemplate);
458
459         assertEquals(originalServiceTemplate, updatedServiceTemplate);
460     }
461
462     @Test
463     public void testPoliciesDelete() throws Exception {
464         ToscaServiceTemplate toscaServiceTemplate =
465                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
466
467         createPolicyTypes();
468
469         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
470         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
471
472         assertNotNull(originalServiceTemplate);
473         JpaToscaServiceTemplate createdServiceTemplate =
474                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
475
476         assertEquals(originalServiceTemplate.getTopologyTemplate(), createdServiceTemplate.getTopologyTemplate());
477
478         PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
479
480         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicy(pfDao, new PfConceptKey("IDontExist:0.0.1")))
481                 .hasMessage("policy IDontExist:0.0.1 not found");
482
483         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicy(pfDao, policyKey);
484
485         assertEquals(0, originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey)
486                 .compareTo(deletedServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey)));
487
488         assertThatThrownBy(() -> {
489             new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
490         }).hasMessage("policies for onap.restart.tca:1.0.0 do not exist");
491
492         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicy(pfDao, policyKey))
493                 .hasMessage("no policies found");
494
495         new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
496     }
497
498     @Test
499     public void testAssertPoliciesExist() {
500         JpaToscaServiceTemplate testServiceTemplate = new JpaToscaServiceTemplate();
501
502         assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
503                 .hasMessage("topology template not specified on service template");
504
505         testServiceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
506         assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
507                 .hasMessage("no policies specified on topology template of service template");
508
509         testServiceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
510         assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
511                 .hasMessage("list of policies specified on topology template of service template is empty");
512     }
513
514     @Test
515     public void testGetServiceTemplate() throws PfModelException {
516         assertThatThrownBy(() -> new SimpleToscaProvider().getServiceTemplate(pfDao))
517                 .hasMessage("service template not found in database");
518     }
519
520     @Test
521     public void testAppendToServiceTemplate() throws PfModelException {
522         JpaToscaServiceTemplate serviceTemplateFragment = new JpaToscaServiceTemplate();
523         serviceTemplateFragment.setPolicyTypes(new JpaToscaPolicyTypes());
524         JpaToscaPolicyType badPt = new JpaToscaPolicyType();
525         serviceTemplateFragment.getPolicyTypes().getConceptMap().put(badPt.getKey(), badPt);
526
527         assertThatThrownBy(() -> new SimpleToscaProvider().appendToServiceTemplate(pfDao, serviceTemplateFragment))
528                         .hasMessageContaining("key on concept entry").hasMessageContaining("NULL:0.0.0")
529                         .hasMessageContaining(Validated.IS_A_NULL_KEY);
530     }
531
532     @Test
533     public void testGetDataTypesCornerCases() throws PfModelException {
534         assertThatThrownBy(() -> {
535             new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
536         }).hasMessageMatching("service template not found in database");
537
538         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
539         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
540         JpaToscaPolicyType p0 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.1"));
541         serviceTemplate.getPolicyTypes().getConceptMap().put(p0.getKey(), p0);
542
543         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
544
545         assertThatThrownBy(() -> {
546             new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
547         }).hasMessageMatching("data types for hello:0.0.1 do not exist");
548
549         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
550
551         JpaToscaDataType p01 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
552         serviceTemplate.getDataTypes().getConceptMap().put(p01.getKey(), p01);
553
554         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
555
556         assertThatThrownBy(() -> {
557             new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
558         }).hasMessageMatching("data types for hello:0.0.1 do not exist");
559
560         JpaToscaServiceTemplate gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), p01.getVersion());
561
562         assertEquals(p01, gotSt.getDataTypes().get(p01.getKey()));
563         assertEquals(p01, gotSt.getDataTypes().get(p01.getName()));
564         assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), null));
565         assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), p01.getVersion()));
566         assertEquals(1, gotSt.getDataTypes().getAll(null).size());
567         assertEquals(1, gotSt.getDataTypes().getAll(null, null).size());
568         assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), null).size());
569         assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), p01.getVersion()).size());
570
571         JpaToscaDataType p02 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.2"));
572         serviceTemplate.getDataTypes().getConceptMap().put(p02.getKey(), p02);
573
574         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
575         gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), null);
576
577         assertEquals(p01, gotSt.getDataTypes().get(p01.getKey()));
578         assertEquals(p02, gotSt.getDataTypes().get(p01.getName()));
579         assertEquals(p02, gotSt.getDataTypes().get(p01.getName(), null));
580         assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), p01.getVersion()));
581         assertEquals(p02, gotSt.getDataTypes().get(p01.getName(), p02.getVersion()));
582         assertEquals(2, gotSt.getDataTypes().getAll(null).size());
583         assertEquals(2, gotSt.getDataTypes().getAll(null, null).size());
584         assertEquals(2, gotSt.getDataTypes().getAll(p01.getName(), null).size());
585         assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), p02.getVersion()).size());
586     }
587
588     @Test
589     public void testGetPolicyTypesCornerCases() throws PfModelException {
590         assertThatThrownBy(() -> {
591             new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
592         }).hasMessageMatching("service template not found in database");
593
594         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
595         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
596         JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
597         serviceTemplate.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
598
599         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
600
601         assertThatThrownBy(() -> {
602             new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
603         }).hasMessageMatching("policy types for hello:0.0.1 do not exist");
604
605         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
606
607         JpaToscaPolicyType pt01 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.1"));
608         serviceTemplate.getPolicyTypes().getConceptMap().put(pt01.getKey(), pt01);
609
610         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
611
612         assertThatThrownBy(() -> {
613             new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
614         }).hasMessageMatching("policy types for hello:0.0.1 do not exist");
615
616         JpaToscaServiceTemplate gotSt =
617                 new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), pt01.getVersion());
618
619         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
620         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName()));
621         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), null));
622         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), pt01.getVersion()));
623         assertEquals(1, gotSt.getPolicyTypes().getAll(null).size());
624         assertEquals(1, gotSt.getPolicyTypes().getAll(null, null).size());
625         assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), null).size());
626         assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), pt01.getVersion()).size());
627
628         JpaToscaPolicyType pt02 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.2"));
629         serviceTemplate.getPolicyTypes().getConceptMap().put(pt02.getKey(), pt02);
630
631         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
632         gotSt = new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), null);
633
634         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
635         assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName()));
636         assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName(), null));
637         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), pt01.getVersion()));
638         assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName(), pt02.getVersion()));
639         assertEquals(2, gotSt.getPolicyTypes().getAll(null).size());
640         assertEquals(2, gotSt.getPolicyTypes().getAll(null, null).size());
641         assertEquals(2, gotSt.getPolicyTypes().getAll(pt01.getName(), null).size());
642         assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), pt02.getVersion()).size());
643     }
644
645     @Test
646     public void testGetPoliciesCornerCases() throws PfModelException {
647         assertThatThrownBy(() -> {
648             new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
649         }).hasMessageMatching("service template not found in database");
650
651         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
652         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
653         JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
654         serviceTemplate.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
655
656         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
657
658         assertThatThrownBy(() -> {
659             new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
660         }).hasMessageMatching("policies for hello:0.0.1 do not exist");
661
662         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
663
664         JpaToscaPolicyType pt01 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.1"));
665         serviceTemplate.getPolicyTypes().getConceptMap().put(pt01.getKey(), pt01);
666
667         serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
668         serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
669
670         JpaToscaPolicy p01 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.1"));
671         p01.setType(pt01.getKey());
672         serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p01.getKey(), p01);
673
674         new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
675
676         assertThatThrownBy(() -> {
677             new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
678         }).hasMessageMatching("policies for hello:0.0.1 do not exist");
679
680         JpaToscaServiceTemplate gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), p01.getVersion());
681
682         assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getKey())));
683         assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getName())));
684         assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), null)));
685         assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p01.getVersion())));
686         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(null).size());
687         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(null, null).size());
688         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), null).size());
689         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), p01.getVersion()).size());
690
691         JpaToscaPolicy p02 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.2"));
692         p02.setType(pt01.getKey());
693         serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p02.getKey(), p02);
694
695         new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
696         gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), null);
697
698         assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getKey()));
699         assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName()));
700         assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), null));
701         assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p01.getVersion()));
702         assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p02.getVersion()));
703         assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(null).size());
704         assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(null, null).size());
705         assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), null).size());
706         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), p02.getVersion()).size());
707     }
708
709     @Test
710     public void testNonNulls() {
711         assertThatThrownBy(() -> {
712             new SimpleToscaProvider().getServiceTemplate(null);
713         }).hasMessageMatching(DAO_IS_NULL);
714
715         assertThatThrownBy(() -> {
716             new SimpleToscaProvider().appendToServiceTemplate(null, null);
717         }).hasMessageMatching(DAO_IS_NULL);
718
719         assertThatThrownBy(() -> {
720             new SimpleToscaProvider().appendToServiceTemplate(null, new JpaToscaServiceTemplate());
721         }).hasMessageMatching(DAO_IS_NULL);
722
723         assertThatThrownBy(() -> {
724             new SimpleToscaProvider().appendToServiceTemplate(pfDao, null);
725         }).hasMessageMatching("^incomingServiceTemplateFragment is marked .*on.*ull but is null$");
726
727         assertThatThrownBy(() -> {
728             new SimpleToscaProvider().getDataTypes(null, null, null);
729         }).hasMessageMatching(DAO_IS_NULL);
730
731         assertThatThrownBy(() -> {
732             new SimpleToscaProvider().createDataTypes(null, null);
733         }).hasMessageMatching(DAO_IS_NULL);
734
735         assertThatThrownBy(() -> {
736             new SimpleToscaProvider().createDataTypes(null, new JpaToscaServiceTemplate());
737         }).hasMessageMatching(DAO_IS_NULL);
738
739         assertThatThrownBy(() -> {
740             new SimpleToscaProvider().createDataTypes(pfDao, null);
741         }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
742
743         assertThatThrownBy(() -> {
744             new SimpleToscaProvider().updateDataTypes(null, null);
745         }).hasMessageMatching(DAO_IS_NULL);
746
747         assertThatThrownBy(() -> {
748             new SimpleToscaProvider().updateDataTypes(null, new JpaToscaServiceTemplate());
749         }).hasMessageMatching(DAO_IS_NULL);
750
751         assertThatThrownBy(() -> {
752             new SimpleToscaProvider().updateDataTypes(pfDao, null);
753         }).hasMessageMatching(TEMPLATE_IS_NULL);
754
755         assertThatThrownBy(() -> {
756             new SimpleToscaProvider().deleteDataType(null, null);
757         }).hasMessageMatching(DAO_IS_NULL);
758
759         assertThatThrownBy(() -> {
760             new SimpleToscaProvider().deleteDataType(null, new PfConceptKey());
761         }).hasMessageMatching(DAO_IS_NULL);
762
763         assertThatThrownBy(() -> {
764             new SimpleToscaProvider().deleteDataType(pfDao, null);
765         }).hasMessageMatching("^dataTypeKey is marked .*on.*ull but is null$");
766
767         assertThatThrownBy(() -> {
768             new SimpleToscaProvider().getPolicyTypes(null, null, null);
769         }).hasMessageMatching(DAO_IS_NULL);
770
771         assertThatThrownBy(() -> {
772             new SimpleToscaProvider().createPolicyTypes(null, null);
773         }).hasMessageMatching(DAO_IS_NULL);
774
775         assertThatThrownBy(() -> {
776             new SimpleToscaProvider().createPolicyTypes(null, new JpaToscaServiceTemplate());
777         }).hasMessageMatching(DAO_IS_NULL);
778
779         assertThatThrownBy(() -> {
780             new SimpleToscaProvider().createPolicyTypes(pfDao, null);
781         }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
782
783         assertThatThrownBy(() -> {
784             new SimpleToscaProvider().updatePolicyTypes(null, null);
785         }).hasMessageMatching(DAO_IS_NULL);
786
787         assertThatThrownBy(() -> {
788             new SimpleToscaProvider().updatePolicyTypes(null, new JpaToscaServiceTemplate());
789         }).hasMessageMatching(DAO_IS_NULL);
790
791         assertThatThrownBy(() -> {
792             new SimpleToscaProvider().updatePolicyTypes(pfDao, null);
793         }).hasMessageMatching(TEMPLATE_IS_NULL);
794
795         assertThatThrownBy(() -> {
796             new SimpleToscaProvider().deletePolicyType(null, null);
797         }).hasMessageMatching(DAO_IS_NULL);
798
799         assertThatThrownBy(() -> {
800             new SimpleToscaProvider().deletePolicyType(null, new PfConceptKey());
801         }).hasMessageMatching(DAO_IS_NULL);
802
803         assertThatThrownBy(() -> {
804             new SimpleToscaProvider().deletePolicyType(pfDao, null);
805         }).hasMessageMatching("^policyTypeKey is marked .*on.*ull but is null$");
806
807         assertThatThrownBy(() -> {
808             new SimpleToscaProvider().getPolicies(null, null, null);
809         }).hasMessageMatching(DAO_IS_NULL);
810
811         assertThatThrownBy(() -> {
812             new SimpleToscaProvider().createPolicies(null, null);
813         }).hasMessageMatching(DAO_IS_NULL);
814
815         assertThatThrownBy(() -> {
816             new SimpleToscaProvider().createPolicies(null, new JpaToscaServiceTemplate());
817         }).hasMessageMatching(DAO_IS_NULL);
818
819         assertThatThrownBy(() -> {
820             new SimpleToscaProvider().createPolicies(pfDao, null);
821         }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
822
823         assertThatThrownBy(() -> {
824             new SimpleToscaProvider().updatePolicies(null, null);
825         }).hasMessageMatching(DAO_IS_NULL);
826
827         assertThatThrownBy(() -> {
828             new SimpleToscaProvider().updatePolicies(null, new JpaToscaServiceTemplate());
829         }).hasMessageMatching(DAO_IS_NULL);
830
831         assertThatThrownBy(() -> {
832             new SimpleToscaProvider().updatePolicies(pfDao, null);
833         }).hasMessageMatching(TEMPLATE_IS_NULL);
834
835         assertThatThrownBy(() -> {
836             new SimpleToscaProvider().deletePolicy(null, null);
837         }).hasMessageMatching(DAO_IS_NULL);
838
839         assertThatThrownBy(() -> {
840             new SimpleToscaProvider().deletePolicy(null, new PfConceptKey());
841         }).hasMessageMatching(DAO_IS_NULL);
842
843         assertThatThrownBy(() -> {
844             new SimpleToscaProvider().deletePolicy(pfDao, null);
845         }).hasMessageMatching("^policyKey is marked .*on.*ull but is null$");
846     }
847
848     @Test
849     public void testDeleteServiceTemplate() throws PfModelException {
850         assertThatThrownBy(() -> {
851             new SimpleToscaProvider().deleteServiceTemplate(null);
852         }).hasMessageMatching("^dao is marked .*on.*ull but is null$");
853
854         assertThatThrownBy(() -> {
855             new SimpleToscaProvider().deleteServiceTemplate(pfDao);
856         }).hasMessage("service template not found in database");
857
858         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
859
860         PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
861         JpaToscaDataType dataType0 = new JpaToscaDataType();
862         dataType0.setKey(dataType0Key);
863         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
864         serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
865
866         JpaToscaServiceTemplate createdServiceTemplate =
867                 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
868
869         assertEquals(1, createdServiceTemplate.getDataTypes().getConceptMap().size());
870         assertEquals(dataType0, createdServiceTemplate.getDataTypes().get(dataType0Key));
871         assertEquals(null, createdServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
872
873         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deleteServiceTemplate(pfDao);
874
875         assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
876     }
877
878     @Test
879     public void testNullParameters() {
880         assertThatThrownBy(() -> {
881             new SimpleToscaProvider().getCascadedDataTypes(null, null, null);
882         }).hasMessageMatching("^dbServiceTemplate is marked .*on.*ull but is null$");
883     }
884
885     private void createPolicyTypes() throws CoderException, PfModelException {
886         Object yamlObject =
887                 new Yaml().load(ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.tcagen2.yaml"));
888         String yamlAsJsonString = new StandardCoder().encode(yamlObject);
889
890         ToscaServiceTemplate toscaServiceTemplatePolicyType =
891                 standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
892
893         assertNotNull(toscaServiceTemplatePolicyType);
894         new AuthorativeToscaProvider().createPolicyTypes(pfDao, toscaServiceTemplatePolicyType);
895     }
896 }