Fix database properties
[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 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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.models.tosca.simple.provider;
22
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;
28
29 import java.util.Properties;
30
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;
46
47 /**
48  * Test the {@link SimpleToscaProvider} class.
49  *
50  * @author Liam Fallon (liam.fallon@est.tech)
51  */
52 public class SimpleToscaProviderTest {
53     private PfDao pfDao;
54     private StandardCoder standardCoder;
55
56     /**
57      * Set up the DAO towards the database.
58      *
59      * @throws Exception on database errors
60      */
61     @Before
62     public void setupDao() throws Exception {
63         final DaoParameters daoParameters = new DaoParameters();
64         daoParameters.setPluginClass(DefaultPfDao.class.getCanonicalName());
65
66         daoParameters.setPersistenceUnit("ToscaConceptTest");
67
68         Properties jdbcProperties = new Properties();
69         jdbcProperties.setProperty("javax.persistence.jdbc.user", "policy");
70         jdbcProperties.setProperty("javax.persistence.jdbc.password", "P01icY");
71
72         // H2
73         jdbcProperties.setProperty("javax.persistence.jdbc.driver", "org.h2.Driver");
74         jdbcProperties.setProperty("javax.persistence.jdbc.url", "jdbc:h2:mem:testdb");
75
76         // MariaDB
77         //jdbcProperties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
78         //jdbcProperties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/policy");
79
80         daoParameters.setJdbcProperties(jdbcProperties );
81
82         pfDao = new PfDaoFactory().createPfDao(daoParameters);
83         pfDao.init(daoParameters);
84     }
85
86     /**
87      * Set up GSON.
88      */
89     @Before
90     public void setupGson() {
91         standardCoder = new StandardCoder();
92     }
93
94     @After
95     public void teardown() throws Exception {
96         pfDao.close();
97     }
98
99     @Test
100     public void testPoliciesGet() throws Exception {
101         ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
102                 ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
103                 ToscaServiceTemplate.class);
104
105         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
106         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
107
108         assertNotNull(originalServiceTemplate);
109         JpaToscaServiceTemplate createdServiceTemplate =
110                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
111
112         assertEquals(originalServiceTemplate, createdServiceTemplate);
113
114         PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
115
116         JpaToscaServiceTemplate gotServiceTemplate =
117                 new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
118
119         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
120                 gotServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
121
122     }
123
124     @Test
125     public void testPolicyCreate() throws Exception {
126         ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
127                 ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
128                 ToscaServiceTemplate.class);
129
130         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
131         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
132
133         assertNotNull(originalServiceTemplate);
134         JpaToscaServiceTemplate createdServiceTemplate =
135                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
136
137         assertEquals(originalServiceTemplate, createdServiceTemplate);
138     }
139
140     @Test
141     public void testPolicyUpdate() throws Exception {
142         ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
143                 ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
144                 ToscaServiceTemplate.class);
145
146         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
147         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
148
149         assertNotNull(originalServiceTemplate);
150         JpaToscaServiceTemplate updatedServiceTemplate =
151                 new SimpleToscaProvider().updatePolicies(pfDao, originalServiceTemplate);
152
153         assertEquals(originalServiceTemplate, updatedServiceTemplate);
154     }
155
156     @Test
157     public void testPoliciesDelete() throws Exception {
158         ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
159                 ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
160                 ToscaServiceTemplate.class);
161
162         JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
163         originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
164
165         assertNotNull(originalServiceTemplate);
166         JpaToscaServiceTemplate createdServiceTemplate =
167                 new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
168
169         assertEquals(originalServiceTemplate, createdServiceTemplate);
170
171         PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
172
173         JpaToscaServiceTemplate deletedServiceTemplate =
174                 new SimpleToscaProvider().deletePolicy(pfDao, new PfConceptKey(policyKey));
175
176         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
177                 deletedServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
178
179         assertTrue(new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion())
180                 .getTopologyTemplate().getPolicies().getConceptMap().isEmpty());
181     }
182
183     @Test
184     public void testAssertPoliciesExist() throws PfModelException {
185         JpaToscaServiceTemplate testServiceTemplate = new JpaToscaServiceTemplate();
186
187         try {
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());
192         }
193
194         testServiceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
195         try {
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());
200         }
201
202         testServiceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
203         try {
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",
208                     exc.getMessage());
209         }
210     }
211
212     @Test
213     public void testNonNulls() {
214         assertThatThrownBy(() -> {
215             new SimpleToscaProvider().getPolicyTypes(null, null, null);
216         }).hasMessage("dao is marked @NonNull but is null");
217
218         assertThatThrownBy(() -> {
219             new SimpleToscaProvider().createPolicyTypes(null, null);
220         }).hasMessage("dao is marked @NonNull but is null");
221
222         assertThatThrownBy(() -> {
223             new SimpleToscaProvider().createPolicyTypes(null, new JpaToscaServiceTemplate());
224         }).hasMessage("dao is marked @NonNull but is null");
225
226         assertThatThrownBy(() -> {
227             new SimpleToscaProvider().createPolicyTypes(pfDao, null);
228         }).hasMessage("serviceTemplate is marked @NonNull but is null");
229
230         assertThatThrownBy(() -> {
231             new SimpleToscaProvider().updatePolicyTypes(null, null);
232         }).hasMessage("dao is marked @NonNull but is null");
233
234         assertThatThrownBy(() -> {
235             new SimpleToscaProvider().updatePolicyTypes(null, new JpaToscaServiceTemplate());
236         }).hasMessage("dao is marked @NonNull but is null");
237
238         assertThatThrownBy(() -> {
239             new SimpleToscaProvider().updatePolicyTypes(pfDao, null);
240         }).hasMessage("serviceTemplate is marked @NonNull but is null");
241
242         assertThatThrownBy(() -> {
243             new SimpleToscaProvider().deletePolicyType(null, null);
244         }).hasMessage("dao is marked @NonNull but is null");
245
246         assertThatThrownBy(() -> {
247             new SimpleToscaProvider().deletePolicyType(null, new PfConceptKey());
248         }).hasMessage("dao is marked @NonNull but is null");
249
250         assertThatThrownBy(() -> {
251             new SimpleToscaProvider().deletePolicyType(pfDao, null);
252         }).hasMessage("policyTypeKey is marked @NonNull but is null");
253
254         assertThatThrownBy(() -> {
255             new SimpleToscaProvider().getPolicies(null, null, null);
256         }).hasMessage("dao is marked @NonNull but is null");
257
258         assertThatThrownBy(() -> {
259             new SimpleToscaProvider().createPolicies(null, null);
260         }).hasMessage("dao is marked @NonNull but is null");
261
262         assertThatThrownBy(() -> {
263             new SimpleToscaProvider().createPolicies(null, new JpaToscaServiceTemplate());
264         }).hasMessage("dao is marked @NonNull but is null");
265
266         assertThatThrownBy(() -> {
267             new SimpleToscaProvider().createPolicies(pfDao, null);
268         }).hasMessage("serviceTemplate is marked @NonNull but is null");
269
270         assertThatThrownBy(() -> {
271             new SimpleToscaProvider().updatePolicies(null, null);
272         }).hasMessage("dao is marked @NonNull but is null");
273
274         assertThatThrownBy(() -> {
275             new SimpleToscaProvider().updatePolicies(null, new JpaToscaServiceTemplate());
276         }).hasMessage("dao is marked @NonNull but is null");
277
278         assertThatThrownBy(() -> {
279             new SimpleToscaProvider().updatePolicies(pfDao, null);
280         }).hasMessage("serviceTemplate is marked @NonNull but is null");
281
282         assertThatThrownBy(() -> {
283             new SimpleToscaProvider().deletePolicy(null, null);
284         }).hasMessage("dao is marked @NonNull but is null");
285
286         assertThatThrownBy(() -> {
287             new SimpleToscaProvider().deletePolicy(null, new PfConceptKey());
288         }).hasMessage("dao is marked @NonNull but is null");
289
290         assertThatThrownBy(() -> {
291             new SimpleToscaProvider().deletePolicy(pfDao, null);
292         }).hasMessage("policyKey is marked @NonNull but is null");
293     }
294 }