2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2020-2021, 2023-2024 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
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.assertNull;
28 import java.util.ArrayList;
29 import java.util.LinkedHashMap;
30 import java.util.Properties;
31 import java.util.TreeMap;
32 import org.junit.After;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.onap.policy.models.base.PfConceptKey;
36 import org.onap.policy.models.base.PfModelException;
37 import org.onap.policy.models.dao.DaoParameters;
38 import org.onap.policy.models.dao.PfDao;
39 import org.onap.policy.models.dao.PfDaoFactory;
40 import org.onap.policy.models.dao.impl.DefaultPfDao;
41 import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraint;
42 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
43 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
44 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
45 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
46 import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
47 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
48 import org.onap.policy.models.tosca.simple.concepts.JpaToscaTrigger;
51 * Test the {@link SimpleToscaProvider} class.
53 * @author Liam Fallon (liam.fallon@est.tech)
55 public class SimpleToscaServiceTemplateProviderTest {
56 private static final String TEMPLATE_IS_NULL = "^serviceTemplate is marked .*on.*ull but is null$";
57 private static final String DAO_IS_NULL = "^dao is marked .*on.*ull but is null$";
62 * Set up the DAO towards the database.
64 * @throws Exception on database errors
67 public void setupDao() throws Exception {
68 final DaoParameters daoParameters = new DaoParameters();
69 daoParameters.setPluginClass(DefaultPfDao.class.getName());
71 daoParameters.setPersistenceUnit("ToscaConceptTest");
73 Properties jdbcProperties = new Properties();
74 jdbcProperties.setProperty("jakarta.persistence.jdbc.user", "policy");
75 jdbcProperties.setProperty("jakarta.persistence.jdbc.password", "P01icY");
77 if (System.getProperty("USE-MARIADB") != null) {
78 jdbcProperties.setProperty("jakarta.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
79 jdbcProperties.setProperty("jakarta.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/policy");
81 jdbcProperties.setProperty("jakarta.persistence.jdbc.driver", "org.h2.Driver");
82 jdbcProperties.setProperty("jakarta.persistence.jdbc.url",
83 "jdbc:h2:mem:SimpleToscaServiceTemplateProviderTest");
86 daoParameters.setJdbcProperties(jdbcProperties);
88 pfDao = new PfDaoFactory().createPfDao(daoParameters);
89 pfDao.init(daoParameters);
93 public void teardown() {
98 public void testCreateUpdateGetDeleteDataType() throws PfModelException {
99 JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
100 serviceTemplate.setMetadata(new TreeMap<String, String>());
102 JpaToscaServiceTemplate dbServiceTemplate =
103 new SimpleToscaServiceTemplateProvider().write(pfDao, serviceTemplate);
105 assertEquals(serviceTemplate, dbServiceTemplate);
107 JpaToscaServiceTemplate readServiceTemplate = new SimpleToscaServiceTemplateProvider().read(pfDao);
108 assertEquals(serviceTemplate, readServiceTemplate);
110 assertNull(readServiceTemplate.getDataTypes());
112 PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1");
113 JpaToscaDataType dataType0 = new JpaToscaDataType();
114 dataType0.setKey(dataType0Key);
115 dataType0.setConstraints(new ArrayList<JpaToscaConstraint>());
116 dataType0.setMetadata(new TreeMap<String, String>());
117 dataType0.setProperties(new LinkedHashMap<String, JpaToscaProperty>());
118 serviceTemplate.setDataTypes(new JpaToscaDataTypes());
119 serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
121 dbServiceTemplate = new SimpleToscaServiceTemplateProvider().write(pfDao, serviceTemplate);
122 assertEquals(serviceTemplate, dbServiceTemplate);
124 readServiceTemplate = new SimpleToscaServiceTemplateProvider().read(pfDao);
125 assertEquals(serviceTemplate, readServiceTemplate);
127 assertEquals(1, readServiceTemplate.getDataTypes().getConceptMap().size());
128 assertEquals(dataType0, readServiceTemplate.getDataTypes().get(dataType0Key));
129 assertNull(readServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
131 dataType0.setDescription("Updated Description");
133 dbServiceTemplate = new SimpleToscaServiceTemplateProvider().write(pfDao, serviceTemplate);
134 assertEquals(serviceTemplate, dbServiceTemplate);
136 readServiceTemplate = new SimpleToscaServiceTemplateProvider().read(pfDao);
137 assertEquals(serviceTemplate, readServiceTemplate);
139 assertEquals(dataType0, readServiceTemplate.getDataTypes().get(dataType0Key));
140 assertEquals("Updated Description", readServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
142 PfConceptKey policyType0Key = new PfConceptKey("PolicyType0", "0.0.1");
144 JpaToscaPolicyType policyType0 = new JpaToscaPolicyType();
146 policyType0.setKey(policyType0Key);
147 policyType0.setMetadata(new TreeMap<String, String>());
148 policyType0.setProperties(new LinkedHashMap<String, JpaToscaProperty>());
149 policyType0.setTargets(new ArrayList<PfConceptKey>());
150 policyType0.setTriggers(new ArrayList<JpaToscaTrigger>());
151 serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
153 serviceTemplate.getPolicyTypes().getConceptMap().put(policyType0Key, policyType0);
155 dbServiceTemplate = new SimpleToscaServiceTemplateProvider().write(pfDao, serviceTemplate);
156 assertEquals(serviceTemplate, dbServiceTemplate);
158 readServiceTemplate = new SimpleToscaServiceTemplateProvider().read(pfDao);
159 assertEquals(serviceTemplate, readServiceTemplate);
161 JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaServiceTemplateProvider().delete(pfDao);
162 assertEquals(serviceTemplate, deletedServiceTemplate);
164 readServiceTemplate = new SimpleToscaServiceTemplateProvider().read(pfDao);
165 assertNull(readServiceTemplate);
169 public void testNonNulls() {
170 assertThatThrownBy(() -> {
171 new SimpleToscaServiceTemplateProvider().write(null, null);
172 }).hasMessageMatching(DAO_IS_NULL);
174 assertThatThrownBy(() -> {
175 new SimpleToscaServiceTemplateProvider().write(pfDao, null);
176 }).hasMessageMatching(TEMPLATE_IS_NULL);
178 assertThatThrownBy(() -> {
179 new SimpleToscaServiceTemplateProvider().write(null, new JpaToscaServiceTemplate());
180 }).hasMessageMatching(DAO_IS_NULL);
182 assertThatThrownBy(() -> {
183 new SimpleToscaServiceTemplateProvider().read(null);
184 }).hasMessageMatching(DAO_IS_NULL);
186 assertThatThrownBy(() -> {
187 new SimpleToscaServiceTemplateProvider().delete(null);
188 }).hasMessageMatching(DAO_IS_NULL);