2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 Nordix Foundation.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.models.tosca.simple.provider;
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.junit.Assert.fail;
29 import java.util.Properties;
31 import org.junit.After;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.onap.policy.common.utils.coder.StandardCoder;
35 import org.onap.policy.common.utils.resources.ResourceUtils;
36 import org.onap.policy.models.base.PfConceptKey;
37 import org.onap.policy.models.base.PfModelException;
38 import org.onap.policy.models.dao.DaoParameters;
39 import org.onap.policy.models.dao.PfDao;
40 import org.onap.policy.models.dao.PfDaoFactory;
41 import org.onap.policy.models.dao.impl.DefaultPfDao;
42 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
43 import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
44 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
45 import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
48 * Test the {@link SimpleToscaProvider} class.
50 * @author Liam Fallon (liam.fallon@est.tech)
52 public class SimpleToscaProviderTest {
54 private StandardCoder standardCoder;
57 * Set up the DAO towards the database.
59 * @throws Exception on database errors
62 public void setupDao() throws Exception {
63 final DaoParameters daoParameters = new DaoParameters();
64 daoParameters.setPluginClass(DefaultPfDao.class.getCanonicalName());
66 daoParameters.setPersistenceUnit("ToscaConceptTest");
68 Properties jdbcProperties = new Properties();
69 jdbcProperties.setProperty("javax.persistence.jdbc.user", "policy");
70 jdbcProperties.setProperty("javax.persistence.jdbc.password", "P01icY");
73 jdbcProperties.setProperty("javax.persistence.jdbc.driver", "org.h2.Driver");
74 jdbcProperties.setProperty("javax.persistence.jdbc.url", "jdbc:h2:mem:testdb");
77 //jdbcProperties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
78 //jdbcProperties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/policy");
80 daoParameters.setJdbcProperties(jdbcProperties );
82 pfDao = new PfDaoFactory().createPfDao(daoParameters);
83 pfDao.init(daoParameters);
90 public void setupGson() {
91 standardCoder = new StandardCoder();
95 public void teardown() throws Exception {
100 public void testPoliciesGet() throws Exception {
101 ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
102 ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
103 ToscaServiceTemplate.class);
105 JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
106 originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
108 assertNotNull(originalServiceTemplate);
109 JpaToscaServiceTemplate createdServiceTemplate =
110 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
112 assertEquals(originalServiceTemplate, createdServiceTemplate);
114 PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
116 JpaToscaServiceTemplate gotServiceTemplate =
117 new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
119 assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
120 gotServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
125 public void testPolicyCreate() throws Exception {
126 ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
127 ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
128 ToscaServiceTemplate.class);
130 JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
131 originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
133 assertNotNull(originalServiceTemplate);
134 JpaToscaServiceTemplate createdServiceTemplate =
135 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
137 assertEquals(originalServiceTemplate, createdServiceTemplate);
141 public void testPolicyUpdate() throws Exception {
142 ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
143 ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
144 ToscaServiceTemplate.class);
146 JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
147 originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
149 assertNotNull(originalServiceTemplate);
150 JpaToscaServiceTemplate updatedServiceTemplate =
151 new SimpleToscaProvider().updatePolicies(pfDao, originalServiceTemplate);
153 assertEquals(originalServiceTemplate, updatedServiceTemplate);
157 public void testPoliciesDelete() throws Exception {
158 ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
159 ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
160 ToscaServiceTemplate.class);
162 JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
163 originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
165 assertNotNull(originalServiceTemplate);
166 JpaToscaServiceTemplate createdServiceTemplate =
167 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
169 assertEquals(originalServiceTemplate, createdServiceTemplate);
171 PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
173 JpaToscaServiceTemplate deletedServiceTemplate =
174 new SimpleToscaProvider().deletePolicy(pfDao, new PfConceptKey(policyKey));
176 assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
177 deletedServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
179 assertTrue(new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion())
180 .getTopologyTemplate().getPolicies().getConceptMap().isEmpty());
184 public void testAssertPoliciesExist() throws PfModelException {
185 JpaToscaServiceTemplate testServiceTemplate = new JpaToscaServiceTemplate();
188 new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate);
189 fail("test should throw an exception here");
190 } catch (Exception exc) {
191 assertEquals("topology template not specified on service template", exc.getMessage());
194 testServiceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
196 new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate);
197 fail("test should throw an exception here");
198 } catch (Exception exc) {
199 assertEquals("no policies specified on topology template of service template", exc.getMessage());
202 testServiceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
204 new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate);
205 fail("test should throw an exception here");
206 } catch (Exception exc) {
207 assertEquals("list of policies specified on topology template of service template is empty",
213 public void testNonNulls() {
214 assertThatThrownBy(() -> {
215 new SimpleToscaProvider().getPolicyTypes(null, null, null);
216 }).hasMessage("dao is marked @NonNull but is null");
218 assertThatThrownBy(() -> {
219 new SimpleToscaProvider().createPolicyTypes(null, null);
220 }).hasMessage("dao is marked @NonNull but is null");
222 assertThatThrownBy(() -> {
223 new SimpleToscaProvider().createPolicyTypes(null, new JpaToscaServiceTemplate());
224 }).hasMessage("dao is marked @NonNull but is null");
226 assertThatThrownBy(() -> {
227 new SimpleToscaProvider().createPolicyTypes(pfDao, null);
228 }).hasMessage("serviceTemplate is marked @NonNull but is null");
230 assertThatThrownBy(() -> {
231 new SimpleToscaProvider().updatePolicyTypes(null, null);
232 }).hasMessage("dao is marked @NonNull but is null");
234 assertThatThrownBy(() -> {
235 new SimpleToscaProvider().updatePolicyTypes(null, new JpaToscaServiceTemplate());
236 }).hasMessage("dao is marked @NonNull but is null");
238 assertThatThrownBy(() -> {
239 new SimpleToscaProvider().updatePolicyTypes(pfDao, null);
240 }).hasMessage("serviceTemplate is marked @NonNull but is null");
242 assertThatThrownBy(() -> {
243 new SimpleToscaProvider().deletePolicyType(null, null);
244 }).hasMessage("dao is marked @NonNull but is null");
246 assertThatThrownBy(() -> {
247 new SimpleToscaProvider().deletePolicyType(null, new PfConceptKey());
248 }).hasMessage("dao is marked @NonNull but is null");
250 assertThatThrownBy(() -> {
251 new SimpleToscaProvider().deletePolicyType(pfDao, null);
252 }).hasMessage("policyTypeKey is marked @NonNull but is null");
254 assertThatThrownBy(() -> {
255 new SimpleToscaProvider().getPolicies(null, null, null);
256 }).hasMessage("dao is marked @NonNull but is null");
258 assertThatThrownBy(() -> {
259 new SimpleToscaProvider().createPolicies(null, null);
260 }).hasMessage("dao is marked @NonNull but is null");
262 assertThatThrownBy(() -> {
263 new SimpleToscaProvider().createPolicies(null, new JpaToscaServiceTemplate());
264 }).hasMessage("dao is marked @NonNull but is null");
266 assertThatThrownBy(() -> {
267 new SimpleToscaProvider().createPolicies(pfDao, null);
268 }).hasMessage("serviceTemplate is marked @NonNull but is null");
270 assertThatThrownBy(() -> {
271 new SimpleToscaProvider().updatePolicies(null, null);
272 }).hasMessage("dao is marked @NonNull but is null");
274 assertThatThrownBy(() -> {
275 new SimpleToscaProvider().updatePolicies(null, new JpaToscaServiceTemplate());
276 }).hasMessage("dao is marked @NonNull but is null");
278 assertThatThrownBy(() -> {
279 new SimpleToscaProvider().updatePolicies(pfDao, null);
280 }).hasMessage("serviceTemplate is marked @NonNull but is null");
282 assertThatThrownBy(() -> {
283 new SimpleToscaProvider().deletePolicy(null, null);
284 }).hasMessage("dao is marked @NonNull but is null");
286 assertThatThrownBy(() -> {
287 new SimpleToscaProvider().deletePolicy(null, new PfConceptKey());
288 }).hasMessage("dao is marked @NonNull but is null");
290 assertThatThrownBy(() -> {
291 new SimpleToscaProvider().deletePolicy(pfDao, null);
292 }).hasMessage("policyKey is marked @NonNull but is null");