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