Java 17 / Spring 6 / Spring Boot 3 Upgrade
[policy/api.git] / main / src / test / java / org / onap / policy / api / main / service / TestToscaServiceTemplateServiceForPolicyCrud.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy API
4  * ================================================================================
5  * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
6  * Modifications Copyright (C) 2019-2021, 2023 Nordix Foundation.
7  * Modifications Copyright (C) 2020, 2022 Bell Canada.
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  * SPDX-License-Identifier: Apache-2.0
22  * ============LICENSE_END=========================================================
23  */
24
25 package org.onap.policy.api.main.service;
26
27 import static org.assertj.core.api.Assertions.assertThat;
28 import static org.assertj.core.api.Assertions.assertThatCode;
29 import static org.assertj.core.api.Assertions.assertThatThrownBy;
30 import static org.junit.jupiter.api.Assertions.assertFalse;
31 import static org.junit.jupiter.api.Assertions.assertNotNull;
32
33 import jakarta.ws.rs.core.Response;
34 import java.util.Optional;
35 import org.junit.jupiter.api.BeforeEach;
36 import org.junit.jupiter.api.Test;
37 import org.mockito.InjectMocks;
38 import org.mockito.Mock;
39 import org.mockito.Mockito;
40 import org.onap.policy.common.utils.coder.CoderException;
41 import org.onap.policy.common.utils.coder.StandardCoder;
42 import org.onap.policy.common.utils.coder.StandardYamlCoder;
43 import org.onap.policy.common.utils.resources.ResourceUtils;
44 import org.onap.policy.models.base.PfConceptKey;
45 import org.onap.policy.models.base.PfModelRuntimeException;
46 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
47 import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
48
49 /**
50  * This class performs unit test of Policy CRUD operations as implemented in {@link ToscaServiceTemplateService}.
51  *
52  * @author Chenfei Gao (cgao@research.att.com)
53  */
54 class TestToscaServiceTemplateServiceForPolicyCrud extends TestCommonToscaServiceTemplateService {
55
56     private static final StandardCoder standardCoder = new StandardCoder();
57     private static final StandardYamlCoder standardYamlCoder = new StandardYamlCoder();
58
59     private static final String POLICY_RESOURCE = "policies/vCPE.policy.monitoring.input.tosca.json";
60     private static final String POLICY_TYPE_RESOURCE = "policytypes/onap.policies.monitoring.tcagen2.yaml";
61     private static final String POLICY_RESOURCE_WITH_BAD_POLICYTYPE_ID = "policies/vCPE.policy.bad.policytypeid.json";
62     private static final String POLICY_RESOURCE_WITH_BAD_POLICYTYPE_VERSION =
63         "policies/vCPE.policy.bad.policytypeversion.json";
64     private static final String POLICY_RESOURCE_WITH_NO_POLICY_VERSION = "policies/vCPE.policy.no.policyversion.json";
65     private static final String POLICY_RESOURCE_WITH_DIFFERENT_FIELDS =
66         "policies/vCPE.policy.different.policy.fields.json";
67     private static final String MULTIPLE_POLICIES_RESOURCE = "policies/vCPE.policies.optimization.input.tosca.json";
68
69     private static final String POLICY_TYPE_RESOURCE_OPERATIONAL_COMMON =
70         "policytypes/onap.policies.controlloop.operational.Common.yaml";
71     private static final String POLICY_TYPE_RESOURCE_OPERATIONAL_DROOLS =
72         "policytypes/onap.policies.controlloop.operational.common.Drools.yaml";
73     private static final String POLICY_RESOURCE_OPERATIONAL = "policies/vCPE.policy.operational.input.tosca.json";
74     private static final String POLICY_TYPE_OPERATIONAL_DROOLS = "onap.policies.controlloop.operational.common.Drools";
75
76     @Mock
77     private PdpGroupService pdpGroupService;
78
79     @InjectMocks
80     private ToscaServiceTemplateService toscaServiceTemplateService;
81
82     @BeforeEach
83     public void setUp() {
84         super.setUp();
85     }
86
87     @Test
88     void testFetchPolicies() {
89         Mockito.when(toscaServiceTemplateRepository.findById(new PfConceptKey(JpaToscaServiceTemplate.DEFAULT_NAME,
90             JpaToscaServiceTemplate.DEFAULT_VERSION))).thenReturn(Optional.empty());
91
92         assertThatThrownBy(() -> toscaServiceTemplateService.fetchPolicies("dummy", "1.0.0", null, null, null))
93             .hasMessage("service template not found in database");
94
95         assertThatThrownBy(() -> toscaServiceTemplateService.fetchPolicies("dummy", "1.0.0", "dummy", null, null))
96             .hasMessage("service template not found in database");
97
98         assertThatThrownBy(() -> toscaServiceTemplateService.fetchPolicies("dummy", "1.0.0", "dummy", "1.0.0", null))
99             .hasMessage("service template not found in database");
100
101         assertThatThrownBy(() -> toscaServiceTemplateService.fetchPolicies(null, null, "dummy", "1.0.0", null))
102             .hasMessage("service template not found in database");
103     }
104
105     @Test
106     void testFetchLatestPolicies() {
107         Mockito.when(toscaServiceTemplateRepository.findById(new PfConceptKey(JpaToscaServiceTemplate.DEFAULT_NAME,
108             JpaToscaServiceTemplate.DEFAULT_VERSION))).thenReturn(Optional.empty());
109
110         assertThatThrownBy(() -> toscaServiceTemplateService.fetchLatestPolicies("dummy", "dummy", "dummy", null))
111             .hasMessage("service template not found in database");
112     }
113
114     @Test
115     void testCreatePolicy() throws Exception {
116         assertThatThrownBy(() -> toscaServiceTemplateService
117             .createPolicy("dummy", "1.0.0", new ToscaServiceTemplate()))
118             .hasMessage("topology template not specified on service template");
119
120         var policyTypeServiceTemplate = standardYamlCoder
121             .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
122         var serviceTemplate = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
123         mockDbServiceTemplate(serviceTemplate, null, null);
124
125         assertThatCode(() -> toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate))
126             .doesNotThrowAnyException();
127
128         assertThatThrownBy(() -> {
129             var badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_BAD_POLICYTYPE_ID);
130             var badPolicyServiceTemplate =
131                 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
132             toscaServiceTemplateService.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
133                 badPolicyServiceTemplate);
134         }).hasMessage(
135             "Version not specified, the version of this TOSCA entity must be specified in "
136                 + "the type_version field");
137
138         assertThatThrownBy(() -> {
139             var badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_BAD_POLICYTYPE_VERSION);
140             var badPolicyServiceTemplate =
141                 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
142             toscaServiceTemplateService.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
143                 badPolicyServiceTemplate);
144         }).hasMessageContaining(
145             "item \"policy type\" value \"onap.policies.monitoring.cdap.tca.hi.lo.app:2.0.0\" INVALID, not found");
146
147         assertThatThrownBy(() -> {
148             var badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_NO_POLICY_VERSION);
149             var badPolicyServiceTemplate =
150                 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
151             toscaServiceTemplateService.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
152                 badPolicyServiceTemplate);
153         }).hasMessageContaining("item \"version\" value \"0.0.0\" INVALID, is null");
154
155         var policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
156         var policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
157         var createPolicyResponseFragment = toscaServiceTemplateService
158             .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
159         assertFalse(createPolicyResponseFragment.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
160         mockDbServiceTemplate(serviceTemplate, createPolicyResponseFragment, Operation.CREATE_POLICY);
161
162         assertThatThrownBy(() -> {
163             var badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_DIFFERENT_FIELDS);
164             var badPolicyServiceTemplate =
165                 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
166             toscaServiceTemplateService.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
167                 badPolicyServiceTemplate);
168         }).hasMessageContaining(
169             "item \"entity\" value \"onap.restart.tca:1.0.0\" INVALID, " + "does not equal existing entity");
170     }
171
172     @Test
173     void testCreateOperationalDroolsPolicy() throws CoderException {
174         var policyTypeServiceTemplate = standardYamlCoder.decode(
175             ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE_OPERATIONAL_COMMON), ToscaServiceTemplate.class);
176
177         var serviceTemplate = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
178         mockDbServiceTemplate(serviceTemplate, null, null);
179
180         policyTypeServiceTemplate = standardYamlCoder.decode(
181             ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE_OPERATIONAL_DROOLS), ToscaServiceTemplate.class);
182         var createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
183         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
184
185         var policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_OPERATIONAL);
186         var policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
187         serviceTemplate =
188             toscaServiceTemplateService.createPolicy(POLICY_TYPE_OPERATIONAL_DROOLS, "1.0.0", policyServiceTemplate);
189         assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
190     }
191
192     @Test
193     void testSimpleCreatePolicy() throws Exception {
194
195         assertThatThrownBy(() -> {
196             String multiPoliciesString = ResourceUtils.getResourceAsString(MULTIPLE_POLICIES_RESOURCE);
197             ToscaServiceTemplate multiPoliciesServiceTemplate =
198                 standardCoder.decode(multiPoliciesString, ToscaServiceTemplate.class);
199             toscaServiceTemplateService.createPolicies(multiPoliciesServiceTemplate);
200         }).hasMessageContaining(
201             "no policy types are defined on the service template for the policies in the topology template");
202
203         // Create required policy types
204         var policyTypeServiceTemplate = standardYamlCoder.decode(
205             ResourceUtils.getResourceAsString("policytypes/onap.policies.Optimization.yaml"),
206             ToscaServiceTemplate.class);
207         var serviceTemplate = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
208         mockDbServiceTemplate(serviceTemplate, null, null);
209
210         policyTypeServiceTemplate = standardYamlCoder.decode(
211             ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.Resource.yaml"),
212             ToscaServiceTemplate.class);
213         var createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
214         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
215
216         policyTypeServiceTemplate = standardYamlCoder.decode(
217             ResourceUtils
218                 .getResourceAsString("policytypes/onap.policies.optimization.resource.AffinityPolicy.yaml"),
219             ToscaServiceTemplate.class);
220         createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
221         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
222
223         policyTypeServiceTemplate = standardYamlCoder.decode(
224             ResourceUtils
225                 .getResourceAsString("policytypes/onap.policies.optimization.resource.DistancePolicy.yaml"),
226             ToscaServiceTemplate.class);
227         createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
228         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
229
230         policyTypeServiceTemplate = standardYamlCoder.decode(
231             ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.Vim_fit.yaml"),
232             ToscaServiceTemplate.class);
233         createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
234         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
235
236         policyTypeServiceTemplate = standardYamlCoder.decode(
237             ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.HpaPolicy.yaml"),
238             ToscaServiceTemplate.class);
239         createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
240         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
241
242         policyTypeServiceTemplate = standardYamlCoder.decode(
243             ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.VnfPolicy.yaml"),
244             ToscaServiceTemplate.class);
245         createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
246         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
247
248         policyTypeServiceTemplate = standardYamlCoder.decode(
249             ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.Service.yaml"),
250             ToscaServiceTemplate.class);
251         createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
252         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
253
254         policyTypeServiceTemplate = standardYamlCoder.decode(
255             ResourceUtils
256                 .getResourceAsString("policytypes/onap.policies.optimization.service.SubscriberPolicy.yaml"),
257             ToscaServiceTemplate.class);
258         createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
259         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
260
261         policyTypeServiceTemplate = standardYamlCoder.decode(
262             ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.service.QueryPolicy.yaml"),
263             ToscaServiceTemplate.class);
264         createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
265         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
266
267         policyTypeServiceTemplate = standardYamlCoder.decode(
268             ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.tcagen2.yaml"),
269             ToscaServiceTemplate.class);
270         createPolicyTypeResponseFragment = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
271         mockDbServiceTemplate(serviceTemplate, createPolicyTypeResponseFragment, Operation.CREATE_POLICY_TYPE);
272
273         // Create multiple policies in one call
274         var multiPoliciesString = ResourceUtils.getResourceAsString(MULTIPLE_POLICIES_RESOURCE);
275         var multiPoliciesServiceTemplate =
276             standardCoder.decode(multiPoliciesString, ToscaServiceTemplate.class);
277
278         assertThatCode(() -> {
279             toscaServiceTemplateService.createPolicies(multiPoliciesServiceTemplate);
280             toscaServiceTemplateService.createPolicies(multiPoliciesServiceTemplate);
281         }).doesNotThrowAnyException();
282     }
283
284     @Test
285     void testDeletePolicy() throws CoderException {
286
287         assertThatThrownBy(() -> toscaServiceTemplateService.deletePolicy("dummy", "1.0.0", "dummy", "1.0.0"))
288             .hasMessage("no policies found");
289
290         var policyTypeServiceTemplate = standardYamlCoder
291             .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
292         var serviceTemplate = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
293         mockDbServiceTemplate(serviceTemplate, null, null);
294
295         var policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
296         var policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
297         var createPolicyResponseFragment = toscaServiceTemplateService
298             .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
299         assertFalse(createPolicyResponseFragment.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
300         mockDbServiceTemplate(serviceTemplate, createPolicyResponseFragment, Operation.CREATE_POLICY);
301
302         var exceptionMessage = "policy is in use, it is deployed in PDP group dummy subgroup dummy";
303         Mockito.doThrow(new PfModelRuntimeException(Response.Status.NOT_ACCEPTABLE, exceptionMessage))
304             .when(pdpGroupService).assertPolicyNotDeployedInPdpGroup("onap.restart.tca", "1.0.0");
305         assertThatThrownBy(() -> toscaServiceTemplateService
306             .deletePolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca", "1.0.0"))
307             .hasMessage(exceptionMessage);
308
309         Mockito.doNothing().when(pdpGroupService).assertPolicyNotDeployedInPdpGroup("onap.restart.tca", "1.0.0");
310
311         var deletePolicyResponseFragment = toscaServiceTemplateService
312             .deletePolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca", "1.0.0");
313         assertFalse(deletePolicyResponseFragment.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
314
315         mockDbServiceTemplate(serviceTemplate, deletePolicyResponseFragment, Operation.DELETE_POLICY);
316         assertThatThrownBy(() -> toscaServiceTemplateService
317             .deletePolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca", "1.0.0"))
318             .hasMessageContaining("no policies found");
319     }
320
321     @Test
322     void testFetchAllPolicies() throws Exception {
323         // Create Policy Type
324         var policyTypeServiceTemplate = standardYamlCoder
325             .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
326         var serviceTemplate = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
327         mockDbServiceTemplate(serviceTemplate, null, null);
328
329         // Create Policy
330         var policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
331         var policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
332         var createPolicyResponseFragment = toscaServiceTemplateService
333             .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
334         mockDbServiceTemplate(serviceTemplate, createPolicyResponseFragment, Operation.CREATE_POLICY);
335
336         assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
337
338         // Test fetch all policies
339         serviceTemplate = toscaServiceTemplateService.fetchPolicies(null, null, null, null, null);
340
341         assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
342     }
343
344     @Test
345     void testFetchSpecificPolicy_availablePolicy() throws Exception {
346         // Create Policy Type
347         var policyTypeServiceTemplate = standardYamlCoder
348             .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
349         var serviceTemplate = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
350         mockDbServiceTemplate(serviceTemplate, null, null);
351
352         // Create Policy
353         var policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
354         var policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
355         var createPolicyResponseFragment = toscaServiceTemplateService
356             .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
357         mockDbServiceTemplate(serviceTemplate, createPolicyResponseFragment, Operation.CREATE_POLICY);
358
359         assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
360
361         // Test fetch specific policy
362         assertThat(toscaServiceTemplateService.fetchPolicies(null, null, "onap.restart.tca", "1.0.0", null)
363             .getToscaTopologyTemplate().getPolicies()).hasSize(1);
364     }
365
366     @Test
367     void testFetchSpecificPolicy_unavailablePolicy() throws Exception {
368         // Create Policy Type
369         var policyTypeServiceTemplate = standardYamlCoder
370             .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
371         var serviceTemplate = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
372         mockDbServiceTemplate(serviceTemplate, null, null);
373
374         // Create Policy
375         var policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
376         var policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
377         var createPolicyResponseFragment = toscaServiceTemplateService
378             .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
379         mockDbServiceTemplate(serviceTemplate, createPolicyResponseFragment, Operation.CREATE_POLICY);
380         assertNotNull(serviceTemplate.getToscaTopologyTemplate().getPolicies());
381         assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
382
383         // Test fetch specific policy
384         assertThatThrownBy(() -> toscaServiceTemplateService.fetchPolicies(null, null, "onap.restart.tca",
385             "2.0.0", null)).hasMessageContaining("policies for onap.restart.tca:2.0.0 do not exist");
386     }
387
388     @Test
389     void testDeleteSpecificPolicy_availablePolicy() throws Exception {
390         var policyTypeServiceTemplate = standardYamlCoder
391             .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
392         var serviceTemplate = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
393         mockDbServiceTemplate(serviceTemplate, null, null);
394
395         var policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
396         var policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
397         var createPolicyResponseFragment = toscaServiceTemplateService
398             .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
399         assertThat(createPolicyResponseFragment.getToscaTopologyTemplate().getPolicies()).hasSize(1);
400         mockDbServiceTemplate(serviceTemplate, createPolicyResponseFragment, Operation.CREATE_POLICY);
401
402         serviceTemplate = toscaServiceTemplateService.deletePolicy(null, null, "onap.restart.tca", "1.0.0");
403         assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
404     }
405
406     @Test
407     void testDeleteSpecificPolicy_unavailablePolicy() throws Exception {
408         var policyTypeServiceTemplate = standardYamlCoder
409             .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
410         var serviceTemplate = toscaServiceTemplateService.createPolicyType(policyTypeServiceTemplate);
411         mockDbServiceTemplate(serviceTemplate, null, null);
412
413         var policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
414         var policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
415         var createPolicyResponseFragment = toscaServiceTemplateService
416             .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
417         assertThat(createPolicyResponseFragment.getToscaTopologyTemplate().getPolicies()).hasSize(1);
418         mockDbServiceTemplate(serviceTemplate, createPolicyResponseFragment, Operation.CREATE_POLICY);
419
420         assertThatThrownBy(() -> toscaServiceTemplateService.deletePolicy(null, null, "onap.restart.tca", "2.0.0"))
421             .hasMessageContaining("not found");
422
423         assertThatThrownBy(() -> toscaServiceTemplateService.deletePolicy(null, null,
424             "onap.restart.tca.unavailable", "1.0.0")).hasMessageContaining("not found");
425     }
426 }