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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.models.tosca.simple.provider;
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
28 import java.util.Properties;
30 import org.eclipse.persistence.config.PersistenceUnitProperties;
31 import org.junit.After;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.onap.policy.common.utils.coder.CoderException;
35 import org.onap.policy.common.utils.coder.StandardCoder;
36 import org.onap.policy.common.utils.resources.ResourceUtils;
37 import org.onap.policy.models.base.PfConceptKey;
38 import org.onap.policy.models.base.PfModelException;
39 import org.onap.policy.models.base.PfReferenceKey;
40 import org.onap.policy.models.dao.DaoParameters;
41 import org.onap.policy.models.dao.PfDao;
42 import org.onap.policy.models.dao.PfDaoFactory;
43 import org.onap.policy.models.dao.impl.DefaultPfDao;
44 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
45 import org.onap.policy.models.tosca.authorative.provider.AuthorativeToscaProvider;
46 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
47 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
48 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
49 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
50 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
51 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
52 import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
53 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
54 import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
55 import org.yaml.snakeyaml.Yaml;
58 * Test the {@link SimpleToscaProvider} class.
60 * @author Liam Fallon (liam.fallon@est.tech)
62 public class SimpleToscaProviderTest {
63 private static final String TEMPLATE_IS_NULL = "^serviceTemplate is marked .*on.*ull but is null$";
64 private static final String INCOMING_TEMPLATE_IS_NULL = "^incomingServiceTemplate is marked .*on.*ull but is null$";
65 private static final String VCPE_INPUT_JSON = "policies/vCPE.policy.monitoring.input.tosca.json";
66 private static final String DAO_IS_NULL = "^dao is marked .*on.*ull but is null$";
69 private StandardCoder standardCoder;
72 * Set up the DAO towards the database.
74 * @throws Exception on database errors
77 public void setupDao() throws Exception {
78 final DaoParameters daoParameters = new DaoParameters();
79 daoParameters.setPluginClass(DefaultPfDao.class.getName());
81 daoParameters.setPersistenceUnit("ToscaConceptTest");
83 Properties jdbcProperties = new Properties();
84 jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy");
85 jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY");
87 // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB
88 jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver");
89 jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:testdb");
91 daoParameters.setJdbcProperties(jdbcProperties);
93 pfDao = new PfDaoFactory().createPfDao(daoParameters);
94 pfDao.init(daoParameters);
101 public void setupGson() {
102 standardCoder = new StandardCoder();
106 public void teardown() {
111 public void testCreateUpdateGetDeleteDataType() throws PfModelException {
112 JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
114 PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
115 JpaToscaDataType dataType0 = new JpaToscaDataType();
116 dataType0.setKey(dataType0Key);
117 serviceTemplate.setDataTypes(new JpaToscaDataTypes());
118 serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
120 JpaToscaServiceTemplate createdServiceTemplate =
121 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
123 assertEquals(1, createdServiceTemplate.getDataTypes().getConceptMap().size());
124 assertEquals(dataType0, createdServiceTemplate.getDataTypes().get(dataType0Key));
125 assertEquals(null, createdServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
127 dataType0.setDescription("Updated Description");
129 JpaToscaServiceTemplate updatedServiceTemplate =
130 new SimpleToscaProvider().updateDataTypes(pfDao, serviceTemplate);
132 assertEquals(dataType0, updatedServiceTemplate.getDataTypes().get(dataType0Key));
133 assertEquals("Updated Description", updatedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
135 JpaToscaServiceTemplate gotServiceTemplate =
136 new SimpleToscaProvider().getDataTypes(pfDao, dataType0Key.getName(), dataType0Key.getVersion());
138 assertEquals(dataType0, gotServiceTemplate.getDataTypes().get(dataType0Key));
139 assertEquals("Updated Description", gotServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
141 assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, new PfConceptKey("IDontExist:0.0.1")))
142 .hasMessage("data type IDontExist:0.0.1 not found");
144 JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key);
146 assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
147 assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
149 // Create the data type again
150 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
152 updatedServiceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
153 JpaToscaPolicyType pt0 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.1"));
154 updatedServiceTemplate.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
155 new SimpleToscaProvider().createPolicyTypes(pfDao, updatedServiceTemplate);
157 deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key);
159 assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
160 assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
162 assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
163 .hasMessage("no data types found");
165 // Create the data type again
166 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
168 JpaToscaPolicyType pt0v2 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.2"));
169 JpaToscaProperty prop0 = new JpaToscaProperty(new PfReferenceKey(pt0v2.getKey(), "prop0"));
170 prop0.setType(dataType0Key);
171 pt0v2.getProperties().put(prop0.getKey().getLocalName(), prop0);
172 updatedServiceTemplate.getPolicyTypes().getConceptMap().put(pt0v2.getKey(), pt0v2);
173 new SimpleToscaProvider().createPolicyTypes(pfDao, updatedServiceTemplate);
175 assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
176 .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
178 JpaToscaDataType dataType0v2 = new JpaToscaDataType(new PfConceptKey("DataType0:0.0.2"));
179 updatedServiceTemplate.getDataTypes().getConceptMap().put(dataType0v2.getKey(), dataType0v2);
180 new SimpleToscaProvider().createDataTypes(pfDao, updatedServiceTemplate);
182 deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0v2.getKey());
184 assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
185 assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
187 assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
188 .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
190 JpaToscaDataType dataType1 = new JpaToscaDataType(new PfConceptKey("DataType1:0.0.3"));
191 JpaToscaProperty prop1 = new JpaToscaProperty(new PfReferenceKey(dataType1.getKey(), "prop1"));
192 prop1.setType(dataType0v2.getKey());
193 dataType1.getProperties().put(prop1.getKey().getLocalName(), prop1);
194 updatedServiceTemplate.getDataTypes().getConceptMap().put(dataType1.getKey(), dataType1);
195 new SimpleToscaProvider().createDataTypes(pfDao, updatedServiceTemplate);
197 assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0v2.getKey()))
198 .hasMessage("data type DataType0:0.0.2 is in use, it is referenced in data type DataType1:0.0.3");
202 public void testCreateUpdateGetDeletePolicyType() throws PfModelException {
203 JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
205 PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
206 JpaToscaDataType dataType0 = new JpaToscaDataType();
207 dataType0.setKey(dataType0Key);
208 serviceTemplate.setDataTypes(new JpaToscaDataTypes());
209 serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
211 PfConceptKey policyType0Key = new PfConceptKey("PolicyType0", "0.0.1");
212 JpaToscaPolicyType policyType0 = new JpaToscaPolicyType();
213 policyType0.setKey(policyType0Key);
214 serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
215 serviceTemplate.getPolicyTypes().getConceptMap().put(policyType0Key, policyType0);
217 JpaToscaServiceTemplate createdServiceTemplate =
218 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
220 assertEquals(1, createdServiceTemplate.getPolicyTypes().getConceptMap().size());
221 assertEquals(policyType0, createdServiceTemplate.getPolicyTypes().get(policyType0Key));
222 assertEquals(null, createdServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
224 policyType0.setDescription("Updated Description");
226 JpaToscaServiceTemplate updatedServiceTemplate =
227 new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
229 assertEquals(policyType0, updatedServiceTemplate.getPolicyTypes().get(policyType0Key));
230 assertEquals("Updated Description",
231 updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
233 JpaToscaServiceTemplate gotServiceTemplate =
234 new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
236 assertEquals(policyType0, gotServiceTemplate.getPolicyTypes().get(policyType0Key));
237 assertEquals("Updated Description", gotServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
239 assertThatThrownBy(() -> {
240 new SimpleToscaProvider().deletePolicyType(pfDao, new PfConceptKey("IDontExist:0.0.1"));
241 }).hasMessage("policy type IDontExist:0.0.1 not found");
243 JpaToscaPolicyType pt1 = new JpaToscaPolicyType(new PfConceptKey("pt1:0.0.2"));
244 pt1.setDerivedFrom(policyType0Key);
245 serviceTemplate.getPolicyTypes().getConceptMap().put(pt1.getKey(), pt1);
246 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
248 assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
249 .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
251 serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
252 serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
254 JpaToscaPolicy p0 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.1"));
255 p0.setType(policyType0Key);
256 serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p0.getKey(), p0);
258 JpaToscaPolicy p1 = new JpaToscaPolicy(new PfConceptKey("p1:0.0.1"));
259 p1.setType(pt1.getKey());
260 serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p1.getKey(), p1);
261 new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
263 assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
264 .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
266 assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, pt1.getKey()))
267 .hasMessage("policy type pt1:0.0.2 is in use, it is referenced in policy p1:0.0.1");
269 new SimpleToscaProvider().deletePolicy(pfDao, p1.getKey());
271 new SimpleToscaProvider().deletePolicyType(pfDao, pt1.getKey());
273 new SimpleToscaProvider().deletePolicy(pfDao, p0.getKey());
275 JpaToscaServiceTemplate deletedServiceTemplate =
276 new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
278 assertEquals(policyType0, deletedServiceTemplate.getPolicyTypes().get(policyType0Key));
279 assertEquals("Updated Description",
280 deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
282 assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
283 .hasMessage("no policy types found");
287 public void testCreateUpdateGetDeletePolicyTypeWithDataType() throws PfModelException {
288 JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
290 PfConceptKey policyType0Key = new PfConceptKey("PolicyType0", "0.0.1");
291 JpaToscaPolicyType policyType0 = new JpaToscaPolicyType();
292 policyType0.setKey(policyType0Key);
293 serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
294 serviceTemplate.getPolicyTypes().getConceptMap().put(policyType0Key, policyType0);
296 JpaToscaServiceTemplate createdServiceTemplate =
297 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
299 assertEquals(policyType0, createdServiceTemplate.getPolicyTypes().get(policyType0Key));
300 assertEquals(null, createdServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
302 policyType0.setDescription("Updated Description");
304 JpaToscaServiceTemplate updatedServiceTemplate =
305 new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
307 assertEquals(policyType0, updatedServiceTemplate.getPolicyTypes().get(policyType0Key));
308 assertEquals("Updated Description",
309 updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
311 JpaToscaServiceTemplate gotServiceTemplate =
312 new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
314 assertEquals(policyType0, gotServiceTemplate.getPolicyTypes().get(policyType0Key));
315 assertEquals("Updated Description", gotServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
317 JpaToscaServiceTemplate deletedServiceTemplate =
318 new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
320 assertEquals(policyType0, deletedServiceTemplate.getPolicyTypes().get(policyType0Key));
321 assertEquals("Updated Description",
322 deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
324 assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
325 .hasMessage("no policy types found");
329 public void testPoliciesGet() throws Exception {
330 ToscaServiceTemplate toscaServiceTemplate =
331 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
335 JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
336 originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
338 assertNotNull(originalServiceTemplate);
339 JpaToscaServiceTemplate createdServiceTemplate =
340 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
342 assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
343 createdServiceTemplate.getTopologyTemplate().getPolicies());
345 PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
347 JpaToscaServiceTemplate gotServiceTemplate =
348 new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
350 assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
351 gotServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
353 JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicy(pfDao, policyKey);
354 assertEquals(1, deletedServiceTemplate.getTopologyTemplate().getPolicies().getConceptMap().size());
358 public void testPolicyCreate() throws Exception {
359 ToscaServiceTemplate toscaServiceTemplate =
360 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
364 JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
365 originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
367 assertNotNull(originalServiceTemplate);
368 JpaToscaServiceTemplate createdServiceTemplate =
369 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
371 assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
372 createdServiceTemplate.getTopologyTemplate().getPolicies());
376 public void testPolicyUpdate() throws Exception {
377 ToscaServiceTemplate toscaServiceTemplate =
378 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
382 JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
383 originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
385 assertNotNull(originalServiceTemplate);
386 JpaToscaServiceTemplate updatedServiceTemplate =
387 new SimpleToscaProvider().updatePolicies(pfDao, originalServiceTemplate);
389 assertEquals(originalServiceTemplate, updatedServiceTemplate);
393 public void testPoliciesDelete() throws Exception {
394 ToscaServiceTemplate toscaServiceTemplate =
395 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
399 JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
400 originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
402 assertNotNull(originalServiceTemplate);
403 JpaToscaServiceTemplate createdServiceTemplate =
404 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
406 assertEquals(originalServiceTemplate.getTopologyTemplate(), createdServiceTemplate.getTopologyTemplate());
408 PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
410 assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicy(pfDao, new PfConceptKey("IDontExist:0.0.1")))
411 .hasMessage("policy IDontExist:0.0.1 not found");
413 JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicy(pfDao, policyKey);
415 assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
416 deletedServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
418 assertThatThrownBy(() -> {
419 new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
420 }).hasMessage("policies for onap.restart.tca:1.0.0 do not exist");
422 assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicy(pfDao, policyKey))
423 .hasMessage("no policies found");
427 public void testAssertPoliciesExist() {
428 JpaToscaServiceTemplate testServiceTemplate = new JpaToscaServiceTemplate();
430 assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
431 .hasMessage("topology template not specified on service template");
433 testServiceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
434 assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
435 .hasMessage("no policies specified on topology template of service template");
437 testServiceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
438 assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
439 .hasMessage("list of policies specified on topology template of service template is empty");
443 public void testGetServiceTemplate() throws PfModelException {
444 assertThatThrownBy(() -> new SimpleToscaProvider().getServiceTemplate(pfDao))
445 .hasMessage("service template not found in database");
449 public void testAppendToServiceTemplate() throws PfModelException {
450 JpaToscaServiceTemplate serviceTemplateFragment = new JpaToscaServiceTemplate();
451 serviceTemplateFragment.setPolicyTypes(new JpaToscaPolicyTypes());
452 JpaToscaPolicyType badPt = new JpaToscaPolicyType();
453 serviceTemplateFragment.getPolicyTypes().getConceptMap().put(badPt.getKey(), badPt);
455 assertThatThrownBy(() -> new SimpleToscaProvider().appendToServiceTemplate(pfDao, serviceTemplateFragment))
456 .hasMessageContaining(
457 "key on concept entry PfConceptKey(name=NULL, version=0.0.0) may not be the null key");
461 public void testGetDataTypesCornerCases() throws PfModelException {
462 assertThatThrownBy(() -> {
463 new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
464 }).hasMessageMatching("service template not found in database");
466 JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
467 serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
468 JpaToscaPolicyType p0 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.1"));
469 serviceTemplate.getPolicyTypes().getConceptMap().put(p0.getKey(), p0);
471 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
473 assertThatThrownBy(() -> {
474 new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
475 }).hasMessageMatching("data types for hello:0.0.1 do not exist");
477 serviceTemplate.setDataTypes(new JpaToscaDataTypes());
479 JpaToscaDataType p01 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
480 serviceTemplate.getDataTypes().getConceptMap().put(p01.getKey(), p01);
482 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
484 assertThatThrownBy(() -> {
485 new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
486 }).hasMessageMatching("data types for hello:0.0.1 do not exist");
488 JpaToscaServiceTemplate gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), p01.getVersion());
490 assertEquals(p01, gotSt.getDataTypes().get(p01.getKey()));
491 assertEquals(p01, gotSt.getDataTypes().get(p01.getName()));
492 assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), null));
493 assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), p01.getVersion()));
494 assertEquals(1, gotSt.getDataTypes().getAll(null).size());
495 assertEquals(1, gotSt.getDataTypes().getAll(null, null).size());
496 assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), null).size());
497 assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), p01.getVersion()).size());
499 JpaToscaDataType p02 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.2"));
500 serviceTemplate.getDataTypes().getConceptMap().put(p02.getKey(), p02);
502 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
503 gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), p01.getVersion());
505 assertEquals(p01, gotSt.getDataTypes().get(p01.getKey()));
506 assertEquals(p02, gotSt.getDataTypes().get(p01.getName()));
507 assertEquals(p02, gotSt.getDataTypes().get(p01.getName(), null));
508 assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), p01.getVersion()));
509 assertEquals(p02, gotSt.getDataTypes().get(p01.getName(), p02.getVersion()));
510 assertEquals(2, gotSt.getDataTypes().getAll(null).size());
511 assertEquals(2, gotSt.getDataTypes().getAll(null, null).size());
512 assertEquals(2, gotSt.getDataTypes().getAll(p01.getName(), null).size());
513 assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), p02.getVersion()).size());
517 public void testGetPolicyTypesCornerCases() throws PfModelException {
518 assertThatThrownBy(() -> {
519 new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
520 }).hasMessageMatching("service template not found in database");
522 JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
523 serviceTemplate.setDataTypes(new JpaToscaDataTypes());
524 JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
525 serviceTemplate.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
527 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
529 assertThatThrownBy(() -> {
530 new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
531 }).hasMessageMatching("policy types for hello:0.0.1 do not exist");
533 serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
535 JpaToscaPolicyType pt01 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.1"));
536 serviceTemplate.getPolicyTypes().getConceptMap().put(pt01.getKey(), pt01);
538 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
540 assertThatThrownBy(() -> {
541 new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
542 }).hasMessageMatching("policy types for hello:0.0.1 do not exist");
544 JpaToscaServiceTemplate gotSt =
545 new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), pt01.getVersion());
547 assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
548 assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName()));
549 assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), null));
550 assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), pt01.getVersion()));
551 assertEquals(1, gotSt.getPolicyTypes().getAll(null).size());
552 assertEquals(1, gotSt.getPolicyTypes().getAll(null, null).size());
553 assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), null).size());
554 assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), pt01.getVersion()).size());
556 JpaToscaPolicyType pt02 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.2"));
557 serviceTemplate.getPolicyTypes().getConceptMap().put(pt02.getKey(), pt02);
559 new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
560 gotSt = new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), pt01.getVersion());
562 assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
563 assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName()));
564 assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName(), null));
565 assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), pt01.getVersion()));
566 assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName(), pt02.getVersion()));
567 assertEquals(2, gotSt.getPolicyTypes().getAll(null).size());
568 assertEquals(2, gotSt.getPolicyTypes().getAll(null, null).size());
569 assertEquals(2, gotSt.getPolicyTypes().getAll(pt01.getName(), null).size());
570 assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), pt02.getVersion()).size());
574 public void testGetPoliciesCornerCases() throws PfModelException {
575 assertThatThrownBy(() -> {
576 new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
577 }).hasMessageMatching("service template not found in database");
579 JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
580 serviceTemplate.setDataTypes(new JpaToscaDataTypes());
581 JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
582 serviceTemplate.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
584 new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
586 assertThatThrownBy(() -> {
587 new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
588 }).hasMessageMatching("policies for hello:0.0.1 do not exist");
590 serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
592 JpaToscaPolicyType pt01 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.1"));
593 serviceTemplate.getPolicyTypes().getConceptMap().put(pt01.getKey(), pt01);
595 serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
596 serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
598 JpaToscaPolicy p01 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.1"));
599 p01.setType(pt01.getKey());
600 serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p01.getKey(), p01);
602 new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
604 assertThatThrownBy(() -> {
605 new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
606 }).hasMessageMatching("policies for hello:0.0.1 do not exist");
608 JpaToscaServiceTemplate gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), p01.getVersion());
610 assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getKey()));
611 assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getName()));
612 assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), null));
613 assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p01.getVersion()));
614 assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(null).size());
615 assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(null, null).size());
616 assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), null).size());
617 assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), p01.getVersion()).size());
619 JpaToscaPolicy p02 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.2"));
620 p02.setType(pt01.getKey());
621 serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p02.getKey(), p02);
623 new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
624 gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), p01.getVersion());
626 assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getKey()));
627 assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName()));
628 assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), null));
629 assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p01.getVersion()));
630 assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p02.getVersion()));
631 assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(null).size());
632 assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(null, null).size());
633 assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), null).size());
634 assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), p02.getVersion()).size());
638 public void testNonNulls() {
639 assertThatThrownBy(() -> {
640 new SimpleToscaProvider().getServiceTemplate(null);
641 }).hasMessageMatching(DAO_IS_NULL);
643 assertThatThrownBy(() -> {
644 new SimpleToscaProvider().appendToServiceTemplate(null, null);
645 }).hasMessageMatching(DAO_IS_NULL);
647 assertThatThrownBy(() -> {
648 new SimpleToscaProvider().appendToServiceTemplate(null, new JpaToscaServiceTemplate());
649 }).hasMessageMatching(DAO_IS_NULL);
651 assertThatThrownBy(() -> {
652 new SimpleToscaProvider().appendToServiceTemplate(pfDao, null);
653 }).hasMessageMatching("^incomingServiceTemplateFragment is marked .*on.*ull but is null$");
655 assertThatThrownBy(() -> {
656 new SimpleToscaProvider().getDataTypes(null, null, null);
657 }).hasMessageMatching(DAO_IS_NULL);
659 assertThatThrownBy(() -> {
660 new SimpleToscaProvider().createDataTypes(null, null);
661 }).hasMessageMatching(DAO_IS_NULL);
663 assertThatThrownBy(() -> {
664 new SimpleToscaProvider().createDataTypes(null, new JpaToscaServiceTemplate());
665 }).hasMessageMatching(DAO_IS_NULL);
667 assertThatThrownBy(() -> {
668 new SimpleToscaProvider().createDataTypes(pfDao, null);
669 }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
671 assertThatThrownBy(() -> {
672 new SimpleToscaProvider().updateDataTypes(null, null);
673 }).hasMessageMatching(DAO_IS_NULL);
675 assertThatThrownBy(() -> {
676 new SimpleToscaProvider().updateDataTypes(null, new JpaToscaServiceTemplate());
677 }).hasMessageMatching(DAO_IS_NULL);
679 assertThatThrownBy(() -> {
680 new SimpleToscaProvider().updateDataTypes(pfDao, null);
681 }).hasMessageMatching(TEMPLATE_IS_NULL);
683 assertThatThrownBy(() -> {
684 new SimpleToscaProvider().deleteDataType(null, null);
685 }).hasMessageMatching(DAO_IS_NULL);
687 assertThatThrownBy(() -> {
688 new SimpleToscaProvider().deleteDataType(null, new PfConceptKey());
689 }).hasMessageMatching(DAO_IS_NULL);
691 assertThatThrownBy(() -> {
692 new SimpleToscaProvider().deleteDataType(pfDao, null);
693 }).hasMessageMatching("^dataTypeKey is marked .*on.*ull but is null$");
695 assertThatThrownBy(() -> {
696 new SimpleToscaProvider().getPolicyTypes(null, null, null);
697 }).hasMessageMatching(DAO_IS_NULL);
699 assertThatThrownBy(() -> {
700 new SimpleToscaProvider().createPolicyTypes(null, null);
701 }).hasMessageMatching(DAO_IS_NULL);
703 assertThatThrownBy(() -> {
704 new SimpleToscaProvider().createPolicyTypes(null, new JpaToscaServiceTemplate());
705 }).hasMessageMatching(DAO_IS_NULL);
707 assertThatThrownBy(() -> {
708 new SimpleToscaProvider().createPolicyTypes(pfDao, null);
709 }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
711 assertThatThrownBy(() -> {
712 new SimpleToscaProvider().updatePolicyTypes(null, null);
713 }).hasMessageMatching(DAO_IS_NULL);
715 assertThatThrownBy(() -> {
716 new SimpleToscaProvider().updatePolicyTypes(null, new JpaToscaServiceTemplate());
717 }).hasMessageMatching(DAO_IS_NULL);
719 assertThatThrownBy(() -> {
720 new SimpleToscaProvider().updatePolicyTypes(pfDao, null);
721 }).hasMessageMatching(TEMPLATE_IS_NULL);
723 assertThatThrownBy(() -> {
724 new SimpleToscaProvider().deletePolicyType(null, null);
725 }).hasMessageMatching(DAO_IS_NULL);
727 assertThatThrownBy(() -> {
728 new SimpleToscaProvider().deletePolicyType(null, new PfConceptKey());
729 }).hasMessageMatching(DAO_IS_NULL);
731 assertThatThrownBy(() -> {
732 new SimpleToscaProvider().deletePolicyType(pfDao, null);
733 }).hasMessageMatching("^policyTypeKey is marked .*on.*ull but is null$");
735 assertThatThrownBy(() -> {
736 new SimpleToscaProvider().getPolicies(null, null, null);
737 }).hasMessageMatching(DAO_IS_NULL);
739 assertThatThrownBy(() -> {
740 new SimpleToscaProvider().createPolicies(null, null);
741 }).hasMessageMatching(DAO_IS_NULL);
743 assertThatThrownBy(() -> {
744 new SimpleToscaProvider().createPolicies(null, new JpaToscaServiceTemplate());
745 }).hasMessageMatching(DAO_IS_NULL);
747 assertThatThrownBy(() -> {
748 new SimpleToscaProvider().createPolicies(pfDao, null);
749 }).hasMessageMatching(INCOMING_TEMPLATE_IS_NULL);
751 assertThatThrownBy(() -> {
752 new SimpleToscaProvider().updatePolicies(null, null);
753 }).hasMessageMatching(DAO_IS_NULL);
755 assertThatThrownBy(() -> {
756 new SimpleToscaProvider().updatePolicies(null, new JpaToscaServiceTemplate());
757 }).hasMessageMatching(DAO_IS_NULL);
759 assertThatThrownBy(() -> {
760 new SimpleToscaProvider().updatePolicies(pfDao, null);
761 }).hasMessageMatching(TEMPLATE_IS_NULL);
763 assertThatThrownBy(() -> {
764 new SimpleToscaProvider().deletePolicy(null, null);
765 }).hasMessageMatching(DAO_IS_NULL);
767 assertThatThrownBy(() -> {
768 new SimpleToscaProvider().deletePolicy(null, new PfConceptKey());
769 }).hasMessageMatching(DAO_IS_NULL);
771 assertThatThrownBy(() -> {
772 new SimpleToscaProvider().deletePolicy(pfDao, null);
773 }).hasMessageMatching("^policyKey is marked .*on.*ull but is null$");
776 private void createPolicyTypes() throws CoderException, PfModelException {
777 Object yamlObject = new Yaml().load(
778 ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml"));
779 String yamlAsJsonString = new StandardCoder().encode(yamlObject);
781 ToscaServiceTemplate toscaServiceTemplatePolicyType =
782 standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
784 assertNotNull(toscaServiceTemplatePolicyType);
785 new AuthorativeToscaProvider().createPolicyTypes(pfDao, toscaServiceTemplatePolicyType);