JPA concepts for TOSCA
[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 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.dao.DaoParameters;
42 import org.onap.policy.models.dao.PfDao;
43 import org.onap.policy.models.dao.PfDaoFactory;
44 import org.onap.policy.models.dao.impl.DefaultPfDao;
45 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
46 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
47 import org.onap.policy.models.tosca.authorative.provider.AuthorativeToscaProvider;
48 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
49 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
50 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
51 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
52 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
53 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
54 import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
55 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
56 import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
57 import org.yaml.snakeyaml.Yaml;
58
59 /**
60  * Test the {@link SimpleToscaProvider} class.
61  *
62  * @author Liam Fallon (liam.fallon@est.tech)
63  */
64 public class SimpleToscaProviderTest {
65     private static final String TEMPLATE_IS_NULL = "^serviceTemplate is marked .*on.*ull but is null$";
66     private static final String INCOMING_TEMPLATE_IS_NULL = "^incomingServiceTemplate is marked .*on.*ull but is null$";
67     private static final String VCPE_INPUT_JSON = "policies/vCPE.policy.monitoring.input.tosca.json";
68     private static final String DAO_IS_NULL = "^dao is marked .*on.*ull but is null$";
69
70     private PfDao pfDao;
71     private StandardCoder standardCoder;
72
73     /**
74      * Set up the DAO towards the database.
75      *
76      * @throws Exception on database errors
77      */
78     @Before
79     public void setupDao() throws Exception {
80         final DaoParameters daoParameters = new DaoParameters();
81         daoParameters.setPluginClass(DefaultPfDao.class.getName());
82
83         daoParameters.setPersistenceUnit("ToscaConceptTest");
84
85         Properties jdbcProperties = new Properties();
86         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy");
87         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY");
88
89         // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB
90         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver");
91         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:testdb");
92
93         daoParameters.setJdbcProperties(jdbcProperties);
94
95         pfDao = new PfDaoFactory().createPfDao(daoParameters);
96         pfDao.init(daoParameters);
97     }
98
99     /**
100      * Set up GSON.
101      */
102     @Before
103     public void setupGson() {
104         standardCoder = new StandardCoder();
105     }
106
107     @After
108     public void teardown() {
109         pfDao.close();
110     }
111
112     @Test
113     public void testCreateUpdateGetDeleteDataType() throws PfModelException {
114         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
115
116         PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
117         JpaToscaDataType dataType0 = new JpaToscaDataType();
118         dataType0.setKey(dataType0Key);
119         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
120         serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
121
122         JpaToscaServiceTemplate createdServiceTemplate =
123                 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
124
125         assertEquals(1, createdServiceTemplate.getDataTypes().getConceptMap().size());
126         assertEquals(dataType0, createdServiceTemplate.getDataTypes().get(dataType0Key));
127         assertEquals(null, createdServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
128
129         dataType0.setDescription("Updated Description");
130
131         JpaToscaServiceTemplate updatedServiceTemplate =
132                 new SimpleToscaProvider().updateDataTypes(pfDao, serviceTemplate);
133
134         assertEquals(dataType0, updatedServiceTemplate.getDataTypes().get(dataType0Key));
135         assertEquals("Updated Description", updatedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
136
137         JpaToscaServiceTemplate gotServiceTemplate =
138                 new SimpleToscaProvider().getDataTypes(pfDao, dataType0Key.getName(), dataType0Key.getVersion());
139
140         assertEquals(dataType0, gotServiceTemplate.getDataTypes().get(dataType0Key));
141         assertEquals("Updated Description", gotServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
142
143         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, new PfConceptKey("IDontExist:0.0.1")))
144                 .hasMessage("data type IDontExist:0.0.1 not found");
145
146         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key);
147
148         assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
149         assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
150
151         // Create the data type again
152         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
153
154         updatedServiceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
155         JpaToscaPolicyType pt0 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.1"));
156         updatedServiceTemplate.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
157         new SimpleToscaProvider().createPolicyTypes(pfDao, updatedServiceTemplate);
158
159         deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key);
160
161         assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
162         assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
163
164         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
165                 .hasMessage("no data types found");
166
167         // Create the data type again
168         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
169
170         JpaToscaPolicyType pt0v2 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.2"));
171         JpaToscaProperty prop0 = new JpaToscaProperty(new PfReferenceKey(pt0v2.getKey(), "prop0"));
172         prop0.setType(dataType0Key);
173         pt0v2.setProperties(new LinkedHashMap<>());
174         pt0v2.getProperties().put(prop0.getKey().getLocalName(), prop0);
175         updatedServiceTemplate.getPolicyTypes().getConceptMap().put(pt0v2.getKey(), pt0v2);
176         new SimpleToscaProvider().createPolicyTypes(pfDao, updatedServiceTemplate);
177
178         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
179                 .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
180
181         JpaToscaDataType dataType0v2 = new JpaToscaDataType(new PfConceptKey("DataType0:0.0.2"));
182         updatedServiceTemplate.getDataTypes().getConceptMap().put(dataType0v2.getKey(), dataType0v2);
183         new SimpleToscaProvider().createDataTypes(pfDao, updatedServiceTemplate);
184
185         deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0v2.getKey());
186
187         assertEquals(dataType0v2, deletedServiceTemplate.getDataTypes().get(dataType0v2.getKey()));
188         assertNull(deletedServiceTemplate.getDataTypes().get(dataType0v2.getKey()).getDescription());
189
190         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
191                 .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
192
193         JpaToscaDataType dataType1 = new JpaToscaDataType(new PfConceptKey("DataType1:0.0.3"));
194         JpaToscaProperty prop1 = new JpaToscaProperty(new PfReferenceKey(dataType1.getKey(), "prop1"));
195         prop1.setType(dataType0v2.getKey());
196         dataType1.setProperties(new LinkedHashMap<>());
197         dataType1.getProperties().put(prop1.getKey().getLocalName(), prop1);
198         updatedServiceTemplate.getDataTypes().getConceptMap().put(dataType1.getKey(), dataType1);
199         new SimpleToscaProvider().createDataTypes(pfDao, updatedServiceTemplate);
200
201         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0v2.getKey()))
202                 .hasMessage("data type DataType0:0.0.2 is in use, it is referenced in data type DataType1:0.0.3");
203     }
204
205     @Test
206     public void testCreateUpdateGetDeletePolicyType() throws PfModelException {
207         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
208
209         PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
210         JpaToscaDataType dataType0 = new JpaToscaDataType();
211         dataType0.setKey(dataType0Key);
212         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
213         serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
214
215         PfConceptKey policyType0Key = new PfConceptKey("PolicyType0", "0.0.1");
216         JpaToscaPolicyType policyType0 = new JpaToscaPolicyType();
217         policyType0.setKey(policyType0Key);
218         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
219         serviceTemplate.getPolicyTypes().getConceptMap().put(policyType0Key, policyType0);
220
221         JpaToscaServiceTemplate createdServiceTemplate =
222                 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
223
224         assertEquals(1, createdServiceTemplate.getPolicyTypes().getConceptMap().size());
225         assertEquals(policyType0, createdServiceTemplate.getPolicyTypes().get(policyType0Key));
226         assertEquals(null, createdServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
227
228         policyType0.setDescription("Updated Description");
229
230         JpaToscaServiceTemplate updatedServiceTemplate =
231                 new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
232
233         assertEquals(policyType0, updatedServiceTemplate.getPolicyTypes().get(policyType0Key));
234         assertEquals("Updated Description",
235                 updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
236
237         JpaToscaServiceTemplate gotServiceTemplate =
238                 new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
239
240         assertEquals(policyType0, gotServiceTemplate.getPolicyTypes().get(policyType0Key));
241         assertEquals("Updated Description", gotServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
242
243         assertThatThrownBy(() -> {
244             new SimpleToscaProvider().deletePolicyType(pfDao, new PfConceptKey("IDontExist:0.0.1"));
245         }).hasMessage("policy type IDontExist:0.0.1 not found");
246
247         JpaToscaPolicyType pt1 = new JpaToscaPolicyType(new PfConceptKey("pt1:0.0.2"));
248         pt1.setDerivedFrom(policyType0Key);
249         serviceTemplate.getPolicyTypes().getConceptMap().put(pt1.getKey(), pt1);
250         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
251
252         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
253                 .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
254
255         serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
256         serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
257
258         JpaToscaPolicy p0 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.1"));
259         p0.setType(policyType0Key);
260         serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p0.getKey(), p0);
261
262         JpaToscaPolicy p1 = new JpaToscaPolicy(new PfConceptKey("p1:0.0.1"));
263         p1.setType(pt1.getKey());
264         serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p1.getKey(), p1);
265         new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
266
267         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
268                 .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
269
270         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, pt1.getKey()))
271                 .hasMessage("policy type pt1:0.0.2 is in use, it is referenced in policy p1:0.0.1");
272
273         new SimpleToscaProvider().deletePolicy(pfDao, p1.getKey());
274
275         new SimpleToscaProvider().deletePolicyType(pfDao, pt1.getKey());
276
277         new SimpleToscaProvider().deletePolicy(pfDao, p0.getKey());
278
279         JpaToscaServiceTemplate deletedServiceTemplate =
280                 new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
281
282         assertEquals(policyType0, deletedServiceTemplate.getPolicyTypes().get(policyType0Key));
283         assertEquals("Updated Description",
284                 deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
285
286         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
287                 .hasMessage("no policy types found");
288
289         JpaToscaServiceTemplate newServiceTemplate =
290                 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
291         assertEquals(serviceTemplate, newServiceTemplate);
292     }
293
294     @Test
295     public void testCreateUpdateGetDeletePolicyTypeWithDataType() throws PfModelException {
296         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
297
298         PfConceptKey policyType0Key = new PfConceptKey("PolicyType0", "0.0.1");
299         JpaToscaPolicyType policyType0 = new JpaToscaPolicyType();
300         policyType0.setKey(policyType0Key);
301         serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
302         serviceTemplate.getPolicyTypes().getConceptMap().put(policyType0Key, policyType0);
303
304         JpaToscaServiceTemplate createdServiceTemplate =
305                 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
306
307         assertEquals(policyType0, createdServiceTemplate.getPolicyTypes().get(policyType0Key));
308         assertEquals(null, createdServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
309
310         policyType0.setDescription("Updated Description");
311
312         JpaToscaServiceTemplate updatedServiceTemplate =
313                 new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
314
315         assertEquals(policyType0, updatedServiceTemplate.getPolicyTypes().get(policyType0Key));
316         assertEquals("Updated Description",
317                 updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
318
319         JpaToscaServiceTemplate gotServiceTemplate =
320                 new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
321
322         assertEquals(policyType0, gotServiceTemplate.getPolicyTypes().get(policyType0Key));
323         assertEquals("Updated Description", gotServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
324
325         JpaToscaServiceTemplate deletedServiceTemplate =
326                 new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
327
328         assertEquals(policyType0, deletedServiceTemplate.getPolicyTypes().get(policyType0Key));
329         assertEquals("Updated Description",
330                 deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
331
332         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
333                 .hasMessage("no policy types found");
334     }
335
336     @Test
337     public void testPoliciesGet() throws Exception {
338         ToscaServiceTemplate toscaServiceTemplate =
339                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
340
341         createPolicyTypes();
342
343         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
344         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
345
346         assertNotNull(originalServiceTemplate);
347         JpaToscaServiceTemplate createdServiceTemplate =
348                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
349
350         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
351                 createdServiceTemplate.getTopologyTemplate().getPolicies());
352
353         PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
354
355         JpaToscaServiceTemplate gotServiceTemplate =
356                 new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
357
358         assertEquals(0, originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey)
359                 .compareTo(gotServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey)));
360
361         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicy(pfDao, policyKey);
362         assertEquals(1, deletedServiceTemplate.getTopologyTemplate().getPolicies().getConceptMap().size());
363     }
364
365     @Test
366     public void testPolicyCreate() throws Exception {
367         ToscaServiceTemplate toscaServiceTemplate =
368                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
369
370         createPolicyTypes();
371
372         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
373         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
374
375         assertNotNull(originalServiceTemplate);
376         JpaToscaServiceTemplate createdServiceTemplate =
377                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
378
379         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
380                 createdServiceTemplate.getTopologyTemplate().getPolicies());
381     }
382
383     @Test
384     public void testPolicyCreateTypeAndVersion() throws Exception {
385         ToscaServiceTemplate toscaServiceTemplate =
386                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
387
388         createPolicyTypes();
389
390         ToscaPolicy toscaPolicy =
391                 toscaServiceTemplate.getToscaTopologyTemplate().getPoliciesAsMap().values().iterator().next();
392
393         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
394
395         final String originalPolicyType = toscaPolicy.getType();
396         final String originalPolicyTypeVersion = toscaPolicy.getTypeVersion();
397         toscaPolicy.setType(null);
398         toscaPolicy.setTypeVersion(null);
399
400         assertThatThrownBy(() -> {
401             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
402         }).hasMessage("PolicyType type not specified, the type of the PolicyType for this policy must be "
403                 + "specified in the type field");
404
405         toscaPolicy.setType("IDontExist");
406         assertThatThrownBy(() -> {
407             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
408         }).hasMessage("PolicyType version not specified, the version of the PolicyType for this policy 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 IDontExist:99.100.101 referenced in policy not found");
422
423         toscaPolicy.setType("IDontExist");
424         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
425
426         toscaPolicy.setType(null);
427
428         assertThatThrownBy(() -> {
429             originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
430         }).hasMessage("PolicyType type not specified, the type of the PolicyType for this policy must be "
431                 + "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(
527                         "key on concept entry PfConceptKey(name=NULL, version=0.0.0) may not be the 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 testNonNulls() {
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         assertThatThrownBy(() -> {
766             new SimpleToscaProvider().getPolicyTypes(null, null, null);
767         }).hasMessageMatching(DAO_IS_NULL);
768
769         assertThatThrownBy(() -> {
770             new SimpleToscaProvider().createPolicyTypes(null, null);
771         }).hasMessageMatching(DAO_IS_NULL);
772
773         assertThatThrownBy(() -> {
774             new SimpleToscaProvider().createPolicyTypes(null, new JpaToscaServiceTemplate());
775         }).hasMessageMatching(DAO_IS_NULL);
776
777         assertThatThrownBy(() -> {
778             new SimpleToscaProvider().createPolicyTypes(pfDao, null);
779         }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
780
781         assertThatThrownBy(() -> {
782             new SimpleToscaProvider().updatePolicyTypes(null, null);
783         }).hasMessageMatching(DAO_IS_NULL);
784
785         assertThatThrownBy(() -> {
786             new SimpleToscaProvider().updatePolicyTypes(null, new JpaToscaServiceTemplate());
787         }).hasMessageMatching(DAO_IS_NULL);
788
789         assertThatThrownBy(() -> {
790             new SimpleToscaProvider().updatePolicyTypes(pfDao, null);
791         }).hasMessageMatching(TEMPLATE_IS_NULL);
792
793         assertThatThrownBy(() -> {
794             new SimpleToscaProvider().deletePolicyType(null, null);
795         }).hasMessageMatching(DAO_IS_NULL);
796
797         assertThatThrownBy(() -> {
798             new SimpleToscaProvider().deletePolicyType(null, new PfConceptKey());
799         }).hasMessageMatching(DAO_IS_NULL);
800
801         assertThatThrownBy(() -> {
802             new SimpleToscaProvider().deletePolicyType(pfDao, null);
803         }).hasMessageMatching("^policyTypeKey is marked .*on.*ull but is null$");
804
805         assertThatThrownBy(() -> {
806             new SimpleToscaProvider().getPolicies(null, null, null);
807         }).hasMessageMatching(DAO_IS_NULL);
808
809         assertThatThrownBy(() -> {
810             new SimpleToscaProvider().createPolicies(null, null);
811         }).hasMessageMatching(DAO_IS_NULL);
812
813         assertThatThrownBy(() -> {
814             new SimpleToscaProvider().createPolicies(null, new JpaToscaServiceTemplate());
815         }).hasMessageMatching(DAO_IS_NULL);
816
817         assertThatThrownBy(() -> {
818             new SimpleToscaProvider().createPolicies(pfDao, null);
819         }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
820
821         assertThatThrownBy(() -> {
822             new SimpleToscaProvider().updatePolicies(null, null);
823         }).hasMessageMatching(DAO_IS_NULL);
824
825         assertThatThrownBy(() -> {
826             new SimpleToscaProvider().updatePolicies(null, new JpaToscaServiceTemplate());
827         }).hasMessageMatching(DAO_IS_NULL);
828
829         assertThatThrownBy(() -> {
830             new SimpleToscaProvider().updatePolicies(pfDao, null);
831         }).hasMessageMatching(TEMPLATE_IS_NULL);
832
833         assertThatThrownBy(() -> {
834             new SimpleToscaProvider().deletePolicy(null, null);
835         }).hasMessageMatching(DAO_IS_NULL);
836
837         assertThatThrownBy(() -> {
838             new SimpleToscaProvider().deletePolicy(null, new PfConceptKey());
839         }).hasMessageMatching(DAO_IS_NULL);
840
841         assertThatThrownBy(() -> {
842             new SimpleToscaProvider().deletePolicy(pfDao, null);
843         }).hasMessageMatching("^policyKey is marked .*on.*ull but is null$");
844     }
845
846     @Test
847     public void testDeleteServiceTemplate() throws PfModelException {
848         assertThatThrownBy(() -> {
849             new SimpleToscaProvider().deleteServiceTemplate(null);
850         }).hasMessageMatching("^dao is marked .*on.*ull but is null$");
851
852         assertThatThrownBy(() -> {
853             new SimpleToscaProvider().deleteServiceTemplate(pfDao);
854         }).hasMessage("service template not found in database");
855
856         JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
857
858         PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
859         JpaToscaDataType dataType0 = new JpaToscaDataType();
860         dataType0.setKey(dataType0Key);
861         serviceTemplate.setDataTypes(new JpaToscaDataTypes());
862         serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
863
864         JpaToscaServiceTemplate createdServiceTemplate =
865                 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
866
867         assertEquals(1, createdServiceTemplate.getDataTypes().getConceptMap().size());
868         assertEquals(dataType0, createdServiceTemplate.getDataTypes().get(dataType0Key));
869         assertEquals(null, createdServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
870
871         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deleteServiceTemplate(pfDao);
872
873         assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
874     }
875
876     @Test
877     public void testNullParameters() {
878         assertThatThrownBy(() -> {
879             new SimpleToscaProvider().getCascadedDataTypes(null, null, null);
880         }).hasMessageMatching("^dbServiceTemplate is marked .*on.*ull but is null$");
881     }
882
883     private void createPolicyTypes() throws CoderException, PfModelException {
884         Object yamlObject =
885                 new Yaml().load(ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.tcagen2.yaml"));
886         String yamlAsJsonString = new StandardCoder().encode(yamlObject);
887
888         ToscaServiceTemplate toscaServiceTemplatePolicyType =
889                 standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
890
891         assertNotNull(toscaServiceTemplatePolicyType);
892         new AuthorativeToscaProvider().createPolicyTypes(pfDao, toscaServiceTemplatePolicyType);
893     }
894 }