Remove warnings in policy-api code
[policy/api.git] / main / src / test / java / org / onap / policy / api / main / service / TestToscaServiceTemplateForNodeTemplate.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy API
4  * ================================================================================
5  * Copyright (C) 2022 Nordix Foundation. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  * SPDX-License-Identifier: Apache-2.0
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.policy.api.main.service;
24
25 import static org.assertj.core.api.Assertions.assertThat;
26 import static org.assertj.core.api.Assertions.assertThatThrownBy;
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertNotNull;
29 import static org.junit.Assert.assertTrue;
30
31 import java.util.List;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.InjectMocks;
36 import org.mockito.junit.MockitoJUnitRunner;
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.tosca.authorative.concepts.ToscaNodeTemplate;
42 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
43 import org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate;
44
45 @RunWith(MockitoJUnitRunner.class)
46 public class TestToscaServiceTemplateForNodeTemplate extends TestCommonToscaServiceTemplateService {
47
48     private static final String NODE_TEMPLATES_JSON = "nodetemplates/nodetemplates.metadatasets.input.tosca.json";
49     private static final String UPDATED_NODE_TEMPLATE_JSON = "nodetemplates/nodetemplates.metadatasets.update.json";
50     private static ToscaServiceTemplate toscaServiceTemplate;
51     private static ToscaServiceTemplate updatedToscaServiceTemplate;
52     private StandardCoder standardCoder;
53
54     @InjectMocks
55     private ToscaServiceTemplateService toscaServiceTemplateService;
56
57
58     @Before
59     public void setUp() {
60         super.setUp();
61     }
62
63     /**
64      * Fetch json files required for the tests.
65      *
66      * @throws CoderException when error parsing the json
67      */
68     @Before
69     public void fetchToscaNodeTemplateJson() throws CoderException {
70         standardCoder = new StandardCoder();
71         toscaServiceTemplate =
72             standardCoder.decode(ResourceUtils.getResourceAsString(NODE_TEMPLATES_JSON), ToscaServiceTemplate.class);
73         updatedToscaServiceTemplate =
74             standardCoder.decode(ResourceUtils.getResourceAsString(UPDATED_NODE_TEMPLATE_JSON),
75                 ToscaServiceTemplate.class);
76     }
77
78     @Test
79     public void testToscaNodeTemplatesGet() throws Exception {
80
81         assertNotNull(toscaServiceTemplate);
82         var createdTemplate = toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
83         mockDbServiceTemplate(createdTemplate, null, null);
84
85         //Fetch all node templates if id is null
86         List<ToscaNodeTemplate> gotToscaNodeTemplates = toscaServiceTemplateService
87             .fetchToscaNodeTemplates(null, null);
88         assertEquals(3, gotToscaNodeTemplates.size());
89
90         // Get filtered node templates
91         List<ToscaNodeTemplate> filteredNodeTemplates = toscaServiceTemplateService
92             .fetchToscaNodeTemplates("apexMetadata_adaptive", "1.0.0");
93         assertEquals(1, filteredNodeTemplates.size());
94
95         //Get invalid node template
96         List<ToscaNodeTemplate> filteredNodeTemplatesInvalid = toscaServiceTemplateService
97             .fetchToscaNodeTemplates("invalidname", "1.0.0");
98         assertThat(filteredNodeTemplatesInvalid).isEmpty();
99     }
100
101     @Test
102     public void testToscaNodeTemplatesCreate() throws Exception {
103
104         assertThatThrownBy(() -> {
105             toscaServiceTemplateService.createToscaNodeTemplates(null);
106         }).hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");
107
108         ToscaServiceTemplate createdNodeTemplates =
109             toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
110         assertThat(createdNodeTemplates.getToscaTopologyTemplate().getNodeTemplates()).hasSize(3);
111         assertThat(createdNodeTemplates.getToscaTopologyTemplate().getNodeTemplates().get("apexMetadata_grpc")
112             .getMetadata()).containsKey("threshold");
113     }
114
115     @Test
116     public void testToscaNodeTemplateUpdate() throws Exception {
117
118         assertThatThrownBy(() -> {
119             toscaServiceTemplateService.updateToscaNodeTemplates(null);
120         }).hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");
121
122         JpaToscaNodeTemplate jpaNodeTemplate = new JpaToscaNodeTemplate();
123         PfConceptKey key = new PfConceptKey("apexMetadata_grpc", "1.0.0");
124         jpaNodeTemplate.setKey(key);
125         jpaNodeTemplate.setDescription("Updated Metadata set for GRPC");
126         ToscaServiceTemplate updatedTemplate =
127             toscaServiceTemplateService.updateToscaNodeTemplates(updatedToscaServiceTemplate);
128         assertEquals("Updated Metadata set for GRPC",
129             updatedTemplate.getToscaTopologyTemplate().getNodeTemplates().get("apexMetadata_grpc")
130                 .getDescription());
131     }
132
133     @Test
134     public void testToscaNodeTemplateDelete() throws Exception {
135
136         assertThatThrownBy(() -> {
137             toscaServiceTemplateService.deleteToscaNodeTemplate(null, null);
138         }).hasMessageMatching("^name is marked .*on.*ull but is null$");
139
140         assertThatThrownBy(() -> {
141             toscaServiceTemplateService.deleteToscaNodeTemplate("name", null);
142         }).hasMessageMatching("^version is marked .*on.*ull but is null$");
143
144         var createdTemplate = toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
145         mockDbServiceTemplate(createdTemplate, null, null);
146         assertThatThrownBy(() -> {
147             toscaServiceTemplateService.deleteToscaNodeTemplate("dummyname", "1.0.1");
148         }).hasMessage("node template dummyname:1.0.1 not found");
149
150         ToscaServiceTemplate responseTemplate =
151             toscaServiceTemplateService.deleteToscaNodeTemplate("apexMetadata_decisionMaker", "1.0.0");
152
153         assertTrue(responseTemplate.getToscaTopologyTemplate().getNodeTemplates()
154             .containsKey("apexMetadata_decisionMaker"));
155         assertThat(responseTemplate.getToscaTopologyTemplate().getNodeTemplates()).hasSize(1);
156
157         assertThat(toscaServiceTemplateService.fetchToscaNodeTemplates(null, null)).hasSize(2);
158     }
159
160 }