69c1839c8422c331d1c04fd612cde7193547c881
[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-2021 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("Type not specified, the type of this TOSCA entity must be specified in the type field");
404
405         toscaPolicy.setType("IDontExist");
406         assertThatThrownBy(() -> {
407             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
408         }).hasMessage("Version not specified, the version of this TOSCA entity must be "
409                 + "specified in the type_version field");
410
411         toscaPolicy.setTypeVersion("hello");
412         assertThatThrownBy(() -> {
413             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
414         }).hasMessageContaining("value \"hello\", does not match regular expression");
415
416         toscaPolicy.setTypeVersion("99.100.101");
417         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
418
419         assertThatThrownBy(() -> {
420             new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
421         }).hasMessageContaining("policy type").hasMessageContaining("IDontExist:99.100.101")
422                 .hasMessageContaining(Validated.NOT_FOUND);
423
424         toscaPolicy.setType("IDontExist");
425         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
426
427         toscaPolicy.setType(null);
428
429         assertThatThrownBy(() -> {
430             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
431         }).hasMessage("Type not specified, the type of this TOSCA entity must be specified in the type field");
432
433         toscaPolicy.setType(originalPolicyType);
434         toscaPolicy.setTypeVersion(originalPolicyTypeVersion);
435
436         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
437         JpaToscaServiceTemplate createdServiceTemplate =
438                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
439         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
440                 createdServiceTemplate.getTopologyTemplate().getPolicies());
441     }
442
443     @Test
444     public void testPolicyUpdate() throws Exception {
445         ToscaServiceTemplate toscaServiceTemplate =
446                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
447
448         createPolicyTypes();
449
450         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
451         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
452
453         assertNotNull(originalServiceTemplate);
454         JpaToscaServiceTemplate updatedServiceTemplate =
455                 new SimpleToscaProvider().updatePolicies(pfDao, originalServiceTemplate);
456
457         assertEquals(originalServiceTemplate, updatedServiceTemplate);
458     }
459
460     @Test
461     public void testPoliciesDelete() throws Exception {
462         ToscaServiceTemplate toscaServiceTemplate =
463                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
464
465         createPolicyTypes();
466
467         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
468         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
469
470         assertNotNull(originalServiceTemplate);
471         JpaToscaServiceTemplate createdServiceTemplate =
472                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
473
474         assertEquals(originalServiceTemplate.getTopologyTemplate(), createdServiceTemplate.getTopologyTemplate());
475
476         PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
477
478         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicy(pfDao, new PfConceptKey("IDontExist:0.0.1")))
479                 .hasMessage("policy IDontExist:0.0.1 not found");
480
481         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicy(pfDao, policyKey);
482
483         assertEquals(0, originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey)
484                 .compareTo(deletedServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey)));
485
486         assertThatThrownBy(() -> {
487             new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
488         }).hasMessage("policies for onap.restart.tca:1.0.0 do not exist");
489
490         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicy(pfDao, policyKey))
491                 .hasMessage("no policies found");
492
493         new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
494     }
495
496     @Test
497     public void testAssertPoliciesExist() {
498         JpaToscaServiceTemplate testServiceTemplate = new JpaToscaServiceTemplate();
499
500         assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
501                 .hasMessage("topology template not specified on service template");
502
503         testServiceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
504         assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
505                 .hasMessage("no policies specified on topology template of service template");
506
507         testServiceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
508         assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
509                 .hasMessage("list of policies specified on topology template of service template is empty");
510     }
511
512     @Test
513     public void testGetServiceTemplate() throws PfModelException {
514         assertThatThrownBy(() -> new SimpleToscaProvider().getServiceTemplate(pfDao))
515                 .hasMessage("service template not found in database");
516     }
517
518     @Test
519     public void testAppendToServiceTemplate() throws PfModelException {
520         JpaToscaServiceTemplate serviceTemplateFragment = new JpaToscaServiceTemplate();
521         serviceTemplateFragment.setPolicyTypes(new JpaToscaPolicyTypes());
522         JpaToscaPolicyType badPt = new JpaToscaPolicyType();
523         serviceTemplateFragment.getPolicyTypes().getConceptMap().put(badPt.getKey(), badPt);
524
525         assertThatThrownBy(() -> new SimpleToscaProvider().appendToServiceTemplate(pfDao, serviceTemplateFragment))
526                 .hasMessageContaining("key on concept entry").hasMessageContaining("NULL:0.0.0")
527                 .hasMessageContaining(Validated.IS_A_NULL_KEY);
528     }
529
530     @Test
531     public void testGetDataTypesCornerCases() throws PfModelException {
532         assertThatThrownBy(() -> {
533             new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
534         }).hasMessageMatching("service template not found in database");
535
536         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
537         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
538         JpaToscaPolicyType p0 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.1"));
539         serviceTemplate.getPolicyTypes().getConceptMap().put(p0.getKey(), p0);
540
541         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
542
543         assertThatThrownBy(() -> {
544             new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
545         }).hasMessageMatching("data types for hello:0.0.1 do not exist");
546
547         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
548
549         JpaToscaDataType p01 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
550         serviceTemplate.getDataTypes().getConceptMap().put(p01.getKey(), p01);
551
552         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
553
554         assertThatThrownBy(() -> {
555             new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
556         }).hasMessageMatching("data types for hello:0.0.1 do not exist");
557
558         JpaToscaServiceTemplate gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), p01.getVersion());
559
560         assertEquals(p01, gotSt.getDataTypes().get(p01.getKey()));
561         assertEquals(p01, gotSt.getDataTypes().get(p01.getName()));
562         assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), null));
563         assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), p01.getVersion()));
564         assertEquals(1, gotSt.getDataTypes().getAll(null).size());
565         assertEquals(1, gotSt.getDataTypes().getAll(null, null).size());
566         assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), null).size());
567         assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), p01.getVersion()).size());
568
569         JpaToscaDataType p02 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.2"));
570         serviceTemplate.getDataTypes().getConceptMap().put(p02.getKey(), p02);
571
572         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
573         gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), null);
574
575         assertEquals(p01, gotSt.getDataTypes().get(p01.getKey()));
576         assertEquals(p02, gotSt.getDataTypes().get(p01.getName()));
577         assertEquals(p02, gotSt.getDataTypes().get(p01.getName(), null));
578         assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), p01.getVersion()));
579         assertEquals(p02, gotSt.getDataTypes().get(p01.getName(), p02.getVersion()));
580         assertEquals(2, gotSt.getDataTypes().getAll(null).size());
581         assertEquals(2, gotSt.getDataTypes().getAll(null, null).size());
582         assertEquals(2, gotSt.getDataTypes().getAll(p01.getName(), null).size());
583         assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), p02.getVersion()).size());
584     }
585
586     @Test
587     public void testGetPolicyTypesCornerCases() throws PfModelException {
588         assertThatThrownBy(() -> {
589             new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
590         }).hasMessageMatching("service template not found in database");
591
592         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
593         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
594         JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
595         serviceTemplate.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
596
597         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
598
599         assertThatThrownBy(() -> {
600             new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
601         }).hasMessageMatching("policy types for hello:0.0.1 do not exist");
602
603         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
604
605         JpaToscaPolicyType pt01 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.1"));
606         serviceTemplate.getPolicyTypes().getConceptMap().put(pt01.getKey(), pt01);
607
608         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
609
610         assertThatThrownBy(() -> {
611             new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
612         }).hasMessageMatching("policy types for hello:0.0.1 do not exist");
613
614         JpaToscaServiceTemplate gotSt =
615                 new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), pt01.getVersion());
616
617         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
618         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName()));
619         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), null));
620         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), pt01.getVersion()));
621         assertEquals(1, gotSt.getPolicyTypes().getAll(null).size());
622         assertEquals(1, gotSt.getPolicyTypes().getAll(null, null).size());
623         assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), null).size());
624         assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), pt01.getVersion()).size());
625
626         JpaToscaPolicyType pt02 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.2"));
627         serviceTemplate.getPolicyTypes().getConceptMap().put(pt02.getKey(), pt02);
628
629         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
630         gotSt = new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), null);
631
632         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
633         assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName()));
634         assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName(), null));
635         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), pt01.getVersion()));
636         assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName(), pt02.getVersion()));
637         assertEquals(2, gotSt.getPolicyTypes().getAll(null).size());
638         assertEquals(2, gotSt.getPolicyTypes().getAll(null, null).size());
639         assertEquals(2, gotSt.getPolicyTypes().getAll(pt01.getName(), null).size());
640         assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), pt02.getVersion()).size());
641     }
642
643     @Test
644     public void testGetPoliciesCornerCases() throws PfModelException {
645         assertThatThrownBy(() -> {
646             new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
647         }).hasMessageMatching("service template not found in database");
648
649         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
650         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
651         JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
652         serviceTemplate.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
653
654         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
655
656         assertThatThrownBy(() -> {
657             new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
658         }).hasMessageMatching("policies for hello:0.0.1 do not exist");
659
660         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
661
662         JpaToscaPolicyType pt01 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.1"));
663         serviceTemplate.getPolicyTypes().getConceptMap().put(pt01.getKey(), pt01);
664
665         serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
666         serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
667
668         JpaToscaPolicy p01 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.1"));
669         p01.setType(pt01.getKey());
670         serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p01.getKey(), p01);
671
672         new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
673
674         assertThatThrownBy(() -> {
675             new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
676         }).hasMessageMatching("policies for hello:0.0.1 do not exist");
677
678         JpaToscaServiceTemplate gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), p01.getVersion());
679
680         assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getKey())));
681         assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getName())));
682         assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), null)));
683         assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p01.getVersion())));
684         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(null).size());
685         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(null, null).size());
686         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), null).size());
687         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), p01.getVersion()).size());
688
689         JpaToscaPolicy p02 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.2"));
690         p02.setType(pt01.getKey());
691         serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p02.getKey(), p02);
692
693         new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
694         gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), null);
695
696         assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getKey()));
697         assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName()));
698         assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), null));
699         assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p01.getVersion()));
700         assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p02.getVersion()));
701         assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(null).size());
702         assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(null, null).size());
703         assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), null).size());
704         assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), p02.getVersion()).size());
705     }
706
707     @Test
708     public void testNonNullsDataType() {
709         assertThatThrownBy(() -> {
710             new SimpleToscaProvider().getServiceTemplate(null);
711         }).hasMessageMatching(DAO_IS_NULL);
712
713         assertThatThrownBy(() -> {
714             new SimpleToscaProvider().appendToServiceTemplate(null, null);
715         }).hasMessageMatching(DAO_IS_NULL);
716
717         assertThatThrownBy(() -> {
718             new SimpleToscaProvider().appendToServiceTemplate(null, new JpaToscaServiceTemplate());
719         }).hasMessageMatching(DAO_IS_NULL);
720
721         assertThatThrownBy(() -> {
722             new SimpleToscaProvider().appendToServiceTemplate(pfDao, null);
723         }).hasMessageMatching("^incomingServiceTemplateFragment is marked .*on.*ull but is null$");
724
725         assertThatThrownBy(() -> {
726             new SimpleToscaProvider().getDataTypes(null, null, null);
727         }).hasMessageMatching(DAO_IS_NULL);
728
729         assertThatThrownBy(() -> {
730             new SimpleToscaProvider().createDataTypes(null, null);
731         }).hasMessageMatching(DAO_IS_NULL);
732
733         assertThatThrownBy(() -> {
734             new SimpleToscaProvider().createDataTypes(null, new JpaToscaServiceTemplate());
735         }).hasMessageMatching(DAO_IS_NULL);
736
737         assertThatThrownBy(() -> {
738             new SimpleToscaProvider().createDataTypes(pfDao, null);
739         }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
740
741         assertThatThrownBy(() -> {
742             new SimpleToscaProvider().updateDataTypes(null, null);
743         }).hasMessageMatching(DAO_IS_NULL);
744
745         assertThatThrownBy(() -> {
746             new SimpleToscaProvider().updateDataTypes(null, new JpaToscaServiceTemplate());
747         }).hasMessageMatching(DAO_IS_NULL);
748
749         assertThatThrownBy(() -> {
750             new SimpleToscaProvider().updateDataTypes(pfDao, null);
751         }).hasMessageMatching(TEMPLATE_IS_NULL);
752
753         assertThatThrownBy(() -> {
754             new SimpleToscaProvider().deleteDataType(null, null);
755         }).hasMessageMatching(DAO_IS_NULL);
756
757         assertThatThrownBy(() -> {
758             new SimpleToscaProvider().deleteDataType(null, new PfConceptKey());
759         }).hasMessageMatching(DAO_IS_NULL);
760
761         assertThatThrownBy(() -> {
762             new SimpleToscaProvider().deleteDataType(pfDao, null);
763         }).hasMessageMatching("^dataTypeKey is marked .*on.*ull but is null$");
764     }
765
766     @Test
767     public void testNotNullsPolicyTypes() {
768         assertThatThrownBy(() -> {
769             new SimpleToscaProvider().getPolicyTypes(null, null, null);
770         }).hasMessageMatching(DAO_IS_NULL);
771
772         assertThatThrownBy(() -> {
773             new SimpleToscaProvider().createPolicyTypes(null, null);
774         }).hasMessageMatching(DAO_IS_NULL);
775
776         assertThatThrownBy(() -> {
777             new SimpleToscaProvider().createPolicyTypes(null, new JpaToscaServiceTemplate());
778         }).hasMessageMatching(DAO_IS_NULL);
779
780         assertThatThrownBy(() -> {
781             new SimpleToscaProvider().createPolicyTypes(pfDao, null);
782         }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
783
784         assertThatThrownBy(() -> {
785             new SimpleToscaProvider().updatePolicyTypes(null, null);
786         }).hasMessageMatching(DAO_IS_NULL);
787
788         assertThatThrownBy(() -> {
789             new SimpleToscaProvider().updatePolicyTypes(null, new JpaToscaServiceTemplate());
790         }).hasMessageMatching(DAO_IS_NULL);
791
792         assertThatThrownBy(() -> {
793             new SimpleToscaProvider().updatePolicyTypes(pfDao, null);
794         }).hasMessageMatching(TEMPLATE_IS_NULL);
795
796         assertThatThrownBy(() -> {
797             new SimpleToscaProvider().deletePolicyType(null, null);
798         }).hasMessageMatching(DAO_IS_NULL);
799
800         assertThatThrownBy(() -> {
801             new SimpleToscaProvider().deletePolicyType(null, new PfConceptKey());
802         }).hasMessageMatching(DAO_IS_NULL);
803
804         assertThatThrownBy(() -> {
805             new SimpleToscaProvider().deletePolicyType(pfDao, null);
806         }).hasMessageMatching("^policyTypeKey is marked .*on.*ull but is null$");
807
808         assertThatThrownBy(() -> {
809             new SimpleToscaProvider().getPolicies(null, null, null);
810         }).hasMessageMatching(DAO_IS_NULL);
811
812         assertThatThrownBy(() -> {
813             new SimpleToscaProvider().createPolicies(null, null);
814         }).hasMessageMatching(DAO_IS_NULL);
815
816         assertThatThrownBy(() -> {
817             new SimpleToscaProvider().createPolicies(null, new JpaToscaServiceTemplate());
818         }).hasMessageMatching(DAO_IS_NULL);
819
820         assertThatThrownBy(() -> {
821             new SimpleToscaProvider().createPolicies(pfDao, null);
822         }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
823
824         assertThatThrownBy(() -> {
825             new SimpleToscaProvider().updatePolicies(null, null);
826         }).hasMessageMatching(DAO_IS_NULL);
827
828         assertThatThrownBy(() -> {
829             new SimpleToscaProvider().updatePolicies(null, new JpaToscaServiceTemplate());
830         }).hasMessageMatching(DAO_IS_NULL);
831
832         assertThatThrownBy(() -> {
833             new SimpleToscaProvider().updatePolicies(pfDao, null);
834         }).hasMessageMatching(TEMPLATE_IS_NULL);
835
836         assertThatThrownBy(() -> {
837             new SimpleToscaProvider().deletePolicy(null, null);
838         }).hasMessageMatching(DAO_IS_NULL);
839
840         assertThatThrownBy(() -> {
841             new SimpleToscaProvider().deletePolicy(null, new PfConceptKey());
842         }).hasMessageMatching(DAO_IS_NULL);
843
844         assertThatThrownBy(() -> {
845             new SimpleToscaProvider().deletePolicy(pfDao, null);
846         }).hasMessageMatching("^policyKey is marked .*on.*ull but is null$");
847     }
848
849     @Test
850     public void testDeleteServiceTemplate() throws PfModelException {
851         assertThatThrownBy(() -> {
852             new SimpleToscaProvider().deleteServiceTemplate(null);
853         }).hasMessageMatching("^dao is marked .*on.*ull but is null$");
854
855         assertThatThrownBy(() -> {
856             new SimpleToscaProvider().deleteServiceTemplate(pfDao);
857         }).hasMessage("service template not found in database");
858
859         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
860
861         PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
862         JpaToscaDataType dataType0 = new JpaToscaDataType();
863         dataType0.setKey(dataType0Key);
864         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
865         serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
866
867         JpaToscaServiceTemplate createdServiceTemplate =
868                 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
869
870         assertEquals(1, createdServiceTemplate.getDataTypes().getConceptMap().size());
871         assertEquals(dataType0, createdServiceTemplate.getDataTypes().get(dataType0Key));
872         assertEquals(null, createdServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
873
874         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deleteServiceTemplate(pfDao);
875
876         assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
877     }
878
879     @Test
880     public void testNullParameters() {
881         assertThatThrownBy(() -> {
882             new SimpleToscaProvider().getCascadedDataTypes(null, null, null);
883         }).hasMessageMatching("^dbServiceTemplate is marked .*on.*ull but is null$");
884     }
885
886     private void createPolicyTypes() throws CoderException, PfModelException {
887         Object yamlObject =
888                 new Yaml().load(ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.tcagen2.yaml"));
889         String yamlAsJsonString = new StandardCoder().encode(yamlObject);
890
891         ToscaServiceTemplate toscaServiceTemplatePolicyType =
892                 standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
893
894         assertNotNull(toscaServiceTemplatePolicyType);
895         new AuthorativeToscaProvider().createPolicyTypes(pfDao, toscaServiceTemplatePolicyType);
896     }
897 }