250b3e2ee7b5e2645f2e424185686d8dae4dd762
[policy/models.git] / models-tosca / src / test / java / org / onap / policy / models / tosca / authorative / provider / AuthorativeToscaProviderPolicyTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019-2021 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.authorative.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.assertTrue;
28
29 import java.util.ArrayList;
30 import java.util.List;
31 import java.util.Map;
32 import java.util.Properties;
33 import org.eclipse.persistence.config.PersistenceUnitProperties;
34 import org.junit.After;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.onap.policy.common.utils.coder.CoderException;
38 import org.onap.policy.common.utils.coder.StandardCoder;
39 import org.onap.policy.common.utils.resources.ResourceUtils;
40 import org.onap.policy.models.base.PfConceptKey;
41 import org.onap.policy.models.base.PfModelException;
42 import org.onap.policy.models.dao.DaoParameters;
43 import org.onap.policy.models.dao.PfDao;
44 import org.onap.policy.models.dao.PfDaoFactory;
45 import org.onap.policy.models.dao.impl.DefaultPfDao;
46 import org.onap.policy.models.tosca.authorative.concepts.ToscaDataType;
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.concepts.ToscaTopologyTemplate;
50 import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter;
51 import org.yaml.snakeyaml.Yaml;
52
53 /**
54  * Test of the {@link AuthorativeToscaProvider} class.
55  *
56  * @author Liam Fallon (liam.fallon@est.tech)
57  */
58 public class AuthorativeToscaProviderPolicyTest {
59     private static final String VERSION = "version";
60     private static final String VCPE_JSON = "policies/vCPE.policy.monitoring.input.tosca.json";
61     private static final String POLICY_AND_VERSION = "onap.restart.tca:1.0.0";
62     private static final String POLICY1 = "onap.restart.tca";
63     private static final String DAO_IS_NULL = "^dao is marked .*on.*ull but is null$";
64     private static final String VERSION_100 = "1.0.0";
65     private PfDao pfDao;
66     private StandardCoder standardCoder;
67
68     /**
69      * Set up the DAO towards the database.
70      *
71      * @throws Exception on database errors
72      */
73     @Before
74     public void setupDao() throws Exception {
75         final DaoParameters daoParameters = new DaoParameters();
76         daoParameters.setPluginClass(DefaultPfDao.class.getName());
77
78         daoParameters.setPersistenceUnit("ToscaConceptTest");
79
80         Properties jdbcProperties = new Properties();
81         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy");
82         jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY");
83
84         if (System.getProperty("USE-MARIADB") != null) {
85             jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.mariadb.jdbc.Driver");
86             jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:mariadb://localhost:3306/policy");
87         } else {
88             jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver");
89             jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL,
90                             "jdbc:h2:mem:AuthorativeToscaProviderPolicyTest");
91         }
92
93         daoParameters.setJdbcProperties(jdbcProperties);
94
95         pfDao = new PfDaoFactory().createPfDao(daoParameters);
96         pfDao.init(daoParameters);
97     }
98
99     /**
100      * Set up GSON.
101      */
102     @Before
103     public void setupGson() {
104         standardCoder = new StandardCoder();
105     }
106
107     @After
108     public void teardown() {
109         pfDao.close();
110     }
111
112     @Test
113     public void testPoliciesGet() throws Exception {
114         assertThatThrownBy(() -> {
115             new AuthorativeToscaProvider().getPolicies(null, null, null);
116         }).hasMessageMatching(DAO_IS_NULL);
117
118         assertThatThrownBy(() -> {
119             new AuthorativeToscaProvider().getPolicyList(null, null, null);
120         }).hasMessageMatching(DAO_IS_NULL);
121
122         createPolicyTypes();
123
124         ToscaServiceTemplate toscaServiceTemplate =
125                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_JSON), ToscaServiceTemplate.class);
126
127         assertNotNull(toscaServiceTemplate);
128         ToscaServiceTemplate createdServiceTemplate =
129                 new AuthorativeToscaProvider().createPolicies(pfDao, toscaServiceTemplate);
130
131         PfConceptKey policyKey = new PfConceptKey(POLICY_AND_VERSION);
132
133         ToscaPolicy beforePolicy =
134                 toscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
135         ToscaPolicy createdPolicy =
136                 createdServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
137         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, createdPolicy));
138         assertEquals(beforePolicy.getType(), createdPolicy.getType());
139
140         ToscaServiceTemplate gotServiceTemplate =
141                 new AuthorativeToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
142
143         ToscaPolicy gotPolicy =
144                 gotServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
145         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicy));
146         assertEquals(beforePolicy.getType(), gotPolicy.getType());
147
148         List<ToscaPolicy> gotPolicyList = new AuthorativeToscaProvider().getPolicyList(pfDao, POLICY1, VERSION_100);
149         assertEquals(1, gotPolicyList.size());
150         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicyList.get(0)));
151
152         gotPolicyList = new AuthorativeToscaProvider().getPolicyList(pfDao, POLICY1, null);
153         assertEquals(1, gotPolicyList.size());
154         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicyList.get(0)));
155
156         gotPolicyList = new AuthorativeToscaProvider().getPolicyList(pfDao, null, null);
157         assertEquals(1, gotPolicyList.size());
158         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicyList.get(0)));
159
160         gotPolicyList = new AuthorativeToscaProvider().getPolicyList(pfDao, null, VERSION_100);
161         assertEquals(1, gotPolicyList.size());
162         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicyList.get(0)));
163
164         assertTrue(new AuthorativeToscaProvider().getPolicyList(pfDao, "Nonexistant", VERSION_100).isEmpty());
165     }
166
167     @Test
168     public void testPoliciesGetFiltered() throws Exception {
169         assertThatThrownBy(() -> {
170             new AuthorativeToscaProvider().getFilteredPolicies(null, null);
171         }).hasMessageMatching(DAO_IS_NULL);
172
173         assertThatThrownBy(() -> {
174             new AuthorativeToscaProvider().getFilteredPolicies(null,
175                     ToscaTypedEntityFilter.<ToscaPolicy>builder().build());
176         }).hasMessageMatching(DAO_IS_NULL);
177
178         assertThatThrownBy(() -> {
179             new AuthorativeToscaProvider().getFilteredPolicies(pfDao, null);
180         }).hasMessageMatching("^filter is marked .*on.*ull but is null$");
181
182         assertThatThrownBy(() -> {
183             new AuthorativeToscaProvider().getFilteredPolicyList(null, null);
184         }).hasMessageMatching(DAO_IS_NULL);
185
186         assertThatThrownBy(() -> {
187             new AuthorativeToscaProvider().getFilteredPolicyList(null,
188                     ToscaTypedEntityFilter.<ToscaPolicy>builder().build());
189         }).hasMessageMatching(DAO_IS_NULL);
190
191         assertThatThrownBy(() -> {
192             new AuthorativeToscaProvider().getFilteredPolicyList(pfDao, null);
193         }).hasMessageMatching("^filter is marked .*on.*ull but is null$");
194
195         createPolicyTypes();
196
197         ToscaServiceTemplate toscaServiceTemplate =
198                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_JSON), ToscaServiceTemplate.class);
199
200         assertNotNull(toscaServiceTemplate);
201         ToscaServiceTemplate createdServiceTemplate =
202                 new AuthorativeToscaProvider().createPolicies(pfDao, toscaServiceTemplate);
203
204         PfConceptKey policyKey = new PfConceptKey(POLICY_AND_VERSION);
205
206         ToscaPolicy beforePolicy =
207                 toscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
208         ToscaPolicy createdPolicy =
209                 createdServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
210         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, createdPolicy));
211         assertEquals(beforePolicy.getType(), createdPolicy.getType());
212
213         ToscaServiceTemplate gotServiceTemplate = new AuthorativeToscaProvider().getFilteredPolicies(pfDao,
214                 ToscaTypedEntityFilter.<ToscaPolicy>builder().build());
215
216         ToscaPolicy gotPolicy =
217                 gotServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
218         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicy));
219         assertEquals(beforePolicy.getType(), gotPolicy.getType());
220
221         gotServiceTemplate = new AuthorativeToscaProvider().getFilteredPolicies(pfDao,
222                 ToscaTypedEntityFilter.<ToscaPolicy>builder().name(policyKey.getName()).build());
223
224         gotPolicy = gotServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
225         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicy));
226         assertEquals(beforePolicy.getType(), gotPolicy.getType());
227
228         gotServiceTemplate = new AuthorativeToscaProvider().getFilteredPolicies(pfDao,
229                 ToscaTypedEntityFilter.<ToscaPolicy>builder().name(policyKey.getName()).version(VERSION_100).build());
230
231         gotPolicy = gotServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
232         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicy));
233         assertEquals(beforePolicy.getType(), gotPolicy.getType());
234
235         List<ToscaPolicy> gotPolicyList = new AuthorativeToscaProvider().getPolicyList(pfDao, POLICY1, VERSION_100);
236         assertEquals(1, gotPolicyList.size());
237         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicyList.get(0)));
238
239         gotPolicyList = new AuthorativeToscaProvider().getFilteredPolicyList(pfDao,
240                 ToscaTypedEntityFilter.<ToscaPolicy>builder().build());
241         assertEquals(1, gotPolicyList.size());
242         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicyList.get(0)));
243
244         gotPolicyList = new AuthorativeToscaProvider().getFilteredPolicyList(pfDao,
245                 ToscaTypedEntityFilter.<ToscaPolicy>builder().name(policyKey.getName()).build());
246         assertEquals(1, gotPolicyList.size());
247         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicyList.get(0)));
248
249         gotPolicyList = new AuthorativeToscaProvider().getFilteredPolicyList(pfDao,
250                 ToscaTypedEntityFilter.<ToscaPolicy>builder().name(policyKey.getName()).version(VERSION_100).build());
251         assertEquals(1, gotPolicyList.size());
252         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, gotPolicyList.get(0)));
253     }
254
255     @Test
256     public void testPolicyCreate() throws Exception {
257         assertThatThrownBy(() -> {
258             new AuthorativeToscaProvider().createPolicies(null, null);
259         }).hasMessageMatching(DAO_IS_NULL);
260
261         assertThatThrownBy(() -> {
262             new AuthorativeToscaProvider().createPolicies(null, new ToscaServiceTemplate());
263         }).hasMessageMatching(DAO_IS_NULL);
264
265         assertThatThrownBy(() -> {
266             new AuthorativeToscaProvider().createPolicies(pfDao, null);
267         }).hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");
268
269         createPolicyTypes();
270
271         ToscaServiceTemplate toscaServiceTemplate =
272                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_JSON), ToscaServiceTemplate.class);
273
274         assertNotNull(toscaServiceTemplate);
275         ToscaServiceTemplate createdServiceTemplate =
276                 new AuthorativeToscaProvider().createPolicies(pfDao, toscaServiceTemplate);
277
278         PfConceptKey policyKey = new PfConceptKey(POLICY_AND_VERSION);
279
280         ToscaPolicy beforePolicy =
281                 toscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
282         ToscaPolicy createdPolicy =
283                 createdServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
284         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, createdPolicy));
285         assertEquals(beforePolicy.getType(), createdPolicy.getType());
286     }
287
288     @Test
289     public void testPolicyUpdate() throws Exception {
290         assertThatThrownBy(() -> {
291             new AuthorativeToscaProvider().createPolicies(null, null);
292         }).hasMessageMatching(DAO_IS_NULL);
293
294         assertThatThrownBy(() -> {
295             new AuthorativeToscaProvider().updatePolicies(null, null);
296         }).hasMessageMatching(DAO_IS_NULL);
297
298         assertThatThrownBy(() -> {
299             new AuthorativeToscaProvider().updatePolicies(null, new ToscaServiceTemplate());
300         }).hasMessageMatching(DAO_IS_NULL);
301
302         assertThatThrownBy(() -> {
303             new AuthorativeToscaProvider().updatePolicies(pfDao, null);
304         }).hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");
305
306         createPolicyTypes();
307
308         ToscaServiceTemplate toscaServiceTemplate =
309                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_JSON), ToscaServiceTemplate.class);
310
311         assertNotNull(toscaServiceTemplate);
312         ToscaServiceTemplate createdServiceTemplate =
313                 new AuthorativeToscaProvider().createPolicies(pfDao, toscaServiceTemplate);
314
315         PfConceptKey policyKey = new PfConceptKey(POLICY_AND_VERSION);
316
317         ToscaPolicy beforePolicy =
318                 toscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
319         ToscaPolicy createdPolicy =
320                 createdServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
321         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, createdPolicy));
322         assertEquals(beforePolicy.getType(), createdPolicy.getType());
323
324         ToscaServiceTemplate updatedServiceTemplate =
325                 new AuthorativeToscaProvider().updatePolicies(pfDao, toscaServiceTemplate);
326
327         ToscaPolicy updatedPolicy =
328                 updatedServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
329         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, updatedPolicy));
330         assertEquals(beforePolicy.getType(), updatedPolicy.getType());
331     }
332
333     @Test
334     public void testPoliciesDelete() throws Exception {
335         assertThatThrownBy(() -> {
336             new AuthorativeToscaProvider().deletePolicy(null, null, null);
337         }).hasMessageMatching(DAO_IS_NULL);
338
339         assertThatThrownBy(() -> {
340             new AuthorativeToscaProvider().deletePolicy(null, null, VERSION);
341         }).hasMessageMatching(DAO_IS_NULL);
342
343         assertThatThrownBy(() -> {
344             new AuthorativeToscaProvider().deletePolicy(null, "name", null);
345         }).hasMessageMatching(DAO_IS_NULL);
346
347         assertThatThrownBy(() -> {
348             new AuthorativeToscaProvider().deletePolicy(null, "name", VERSION);
349         }).hasMessageMatching(DAO_IS_NULL);
350
351         assertThatThrownBy(() -> {
352             new AuthorativeToscaProvider().deletePolicy(pfDao, null, null);
353         }).hasMessageMatching("^name is marked .*on.*ull but is null$");
354
355         assertThatThrownBy(() -> {
356             new AuthorativeToscaProvider().deletePolicy(pfDao, null, VERSION);
357         }).hasMessageMatching("^name is marked .*on.*ull but is null$");
358
359         assertThatThrownBy(() -> {
360             new AuthorativeToscaProvider().deletePolicy(pfDao, "name", null);
361         }).hasMessageMatching("^version is marked .*on.*ull but is null$");
362
363         createPolicyTypes();
364
365         ToscaServiceTemplate toscaServiceTemplate =
366                 standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_JSON), ToscaServiceTemplate.class);
367
368         assertNotNull(toscaServiceTemplate);
369         ToscaServiceTemplate createdServiceTemplate =
370                 new AuthorativeToscaProvider().createPolicies(pfDao, toscaServiceTemplate);
371
372         PfConceptKey policyKey = new PfConceptKey(POLICY_AND_VERSION);
373
374         ToscaPolicy beforePolicy =
375                 toscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
376         ToscaPolicy createdPolicy =
377                 createdServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
378         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, createdPolicy));
379         assertEquals(beforePolicy.getType(), createdPolicy.getType());
380
381         ToscaServiceTemplate deletedServiceTemplate =
382                 new AuthorativeToscaProvider().deletePolicy(pfDao, policyKey.getName(), policyKey.getVersion());
383
384         ToscaPolicy deletedPolicy =
385                 deletedServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
386         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, createdPolicy));
387         assertEquals(beforePolicy.getType(), deletedPolicy.getType());
388
389         // @formatter:off
390         assertThatThrownBy(
391             () -> new AuthorativeToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion()))
392                     .hasMessageMatching("policies for onap.restart.tca:1.0.0 do not exist");
393         // @formatter:on
394     }
395
396     @Test
397     public void testAssertPoliciesExist() {
398         ToscaServiceTemplate testServiceTemplate = new ToscaServiceTemplate();
399
400         assertThatThrownBy(() -> {
401             new AuthorativeToscaProvider().deletePolicy(pfDao, "name", null);
402         }).hasMessageMatching("^version is marked .*on.*ull but is null$");
403
404         assertThatThrownBy(() -> {
405             new AuthorativeToscaProvider().createPolicies(pfDao, testServiceTemplate);
406         }).hasMessage("topology template not specified on service template");
407
408         testServiceTemplate.setToscaTopologyTemplate(new ToscaTopologyTemplate());
409         assertThatThrownBy(() -> {
410             new AuthorativeToscaProvider().createPolicies(pfDao, testServiceTemplate);
411         }).hasMessage("no policies specified on topology template of service template");
412
413         testServiceTemplate.getToscaTopologyTemplate().setPolicies(new ArrayList<>());
414         assertThatThrownBy(() -> {
415             new AuthorativeToscaProvider().createPolicies(pfDao, testServiceTemplate);
416         }).hasMessage("An incoming list of concepts must have at least one entry");
417     }
418
419     @Test
420     public void testEntityMaps() throws CoderException, PfModelException {
421         Object yamlObject =
422                 new Yaml().load(ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.tcagen2.yaml"));
423         String yamlAsJsonString = new StandardCoder().encode(yamlObject);
424
425         ToscaServiceTemplate toscaServiceTemplatePolicyType =
426                 standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
427
428         assertNotNull(toscaServiceTemplatePolicyType);
429         new AuthorativeToscaProvider().createPolicyTypes(pfDao, toscaServiceTemplatePolicyType);
430
431         assertEquals(3, toscaServiceTemplatePolicyType.getDataTypesAsMap().size());
432         assertEquals(2, toscaServiceTemplatePolicyType.getPolicyTypesAsMap().size());
433
434         ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
435                 ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
436                 ToscaServiceTemplate.class);
437
438         assertNotNull(toscaServiceTemplate);
439         ToscaServiceTemplate createdServiceTemplate =
440                 new AuthorativeToscaProvider().createPolicies(pfDao, toscaServiceTemplate);
441
442         PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
443
444         ToscaPolicy beforePolicy =
445                 toscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
446         ToscaPolicy createdPolicy =
447                 createdServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey.getName());
448         assertEquals(0, beforePolicy.compareNameVersion(beforePolicy, createdPolicy));
449         assertEquals(beforePolicy.getType(), createdPolicy.getType());
450
451         assertEquals(1, toscaServiceTemplate.getToscaTopologyTemplate().getPoliciesAsMap().size());
452         assertEquals(1, createdServiceTemplate.getToscaTopologyTemplate().getPoliciesAsMap().size());
453
454         Map<String, ToscaPolicy> policyMapItem = createdServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0);
455         createdServiceTemplate.getToscaTopologyTemplate().getPolicies().add(policyMapItem);
456
457         assertThatThrownBy(() -> {
458             createdServiceTemplate.getToscaTopologyTemplate().getPoliciesAsMap();
459         }).hasMessageContaining("list of map of entities contains more than one entity with key");
460
461
462         ToscaDataType duplDataType = toscaServiceTemplatePolicyType.getDataTypes().values().iterator().next();
463         toscaServiceTemplatePolicyType.getDataTypes().put("DuplicateDataType", duplDataType);
464
465         assertThatThrownBy(() -> {
466             toscaServiceTemplatePolicyType.getDataTypesAsMap();
467         }).hasMessageContaining("list of map of entities contains more than one entity with key");
468     }
469
470     private void createPolicyTypes() throws CoderException, PfModelException {
471         Object yamlObject =
472                 new Yaml().load(ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.tcagen2.yaml"));
473         String yamlAsJsonString = new StandardCoder().encode(yamlObject);
474
475         ToscaServiceTemplate toscaServiceTemplatePolicyType =
476                 standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
477
478         assertNotNull(toscaServiceTemplatePolicyType);
479         new AuthorativeToscaProvider().createPolicyTypes(pfDao, toscaServiceTemplatePolicyType);
480     }
481 }