Java 17 / Spring 6 / Spring Boot 3 Upgrade
[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-2023 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.jupiter.api.BeforeEach;
33 import org.junit.jupiter.api.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 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
53     @InjectMocks
54     private ToscaServiceTemplateService toscaServiceTemplateService;
55
56     @BeforeEach
57     public void setUp() {
58         super.setUp();
59     }
60
61     /**
62      * Fetch json files required for the tests.
63      *
64      * @throws CoderException when error parsing the json
65      */
66     @BeforeEach
67     void fetchToscaNodeTemplateJson() throws CoderException {
68         StandardCoder standardCoder = new StandardCoder();
69         toscaServiceTemplate =
70             standardCoder.decode(ResourceUtils.getResourceAsString(NODE_TEMPLATES_JSON), ToscaServiceTemplate.class);
71         updatedToscaServiceTemplate =
72             standardCoder.decode(ResourceUtils.getResourceAsString(UPDATED_NODE_TEMPLATE_JSON),
73                 ToscaServiceTemplate.class);
74     }
75
76     @Test
77     void testToscaNodeTemplatesGet() throws Exception {
78
79         assertNotNull(toscaServiceTemplate);
80         var createdTemplate = toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
81         mockDbServiceTemplate(createdTemplate, null, null);
82
83         //Fetch all node templates if id is null
84         List<ToscaNodeTemplate> gotToscaNodeTemplates = toscaServiceTemplateService
85             .fetchToscaNodeTemplates(null, null);
86         assertEquals(3, gotToscaNodeTemplates.size());
87
88         // Get filtered node templates
89         List<ToscaNodeTemplate> filteredNodeTemplates = toscaServiceTemplateService
90             .fetchToscaNodeTemplates("apexMetadata_adaptive", "1.0.0");
91         assertEquals(1, filteredNodeTemplates.size());
92
93         //Get invalid node template
94         List<ToscaNodeTemplate> filteredNodeTemplatesInvalid = toscaServiceTemplateService
95             .fetchToscaNodeTemplates("invalidname", "1.0.0");
96         assertThat(filteredNodeTemplatesInvalid).isEmpty();
97     }
98
99     @Test
100     void testToscaNodeTemplatesCreate() throws Exception {
101
102         assertThatThrownBy(() -> toscaServiceTemplateService.createToscaNodeTemplates(null))
103             .hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");
104
105         ToscaServiceTemplate createdNodeTemplates =
106             toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
107         assertThat(createdNodeTemplates.getToscaTopologyTemplate().getNodeTemplates()).hasSize(3);
108         assertThat(createdNodeTemplates.getToscaTopologyTemplate().getNodeTemplates().get("apexMetadata_grpc")
109             .getMetadata()).containsKey("threshold");
110     }
111
112     @Test
113     void testToscaNodeTemplateUpdate() throws Exception {
114
115         assertThatThrownBy(() -> toscaServiceTemplateService.updateToscaNodeTemplates(null))
116             .hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");
117
118         JpaToscaNodeTemplate jpaNodeTemplate = new JpaToscaNodeTemplate();
119         PfConceptKey key = new PfConceptKey("apexMetadata_grpc", "1.0.0");
120         jpaNodeTemplate.setKey(key);
121         jpaNodeTemplate.setDescription("Updated Metadata set for GRPC");
122         ToscaServiceTemplate updatedTemplate =
123             toscaServiceTemplateService.updateToscaNodeTemplates(updatedToscaServiceTemplate);
124         assertEquals("Updated Metadata set for GRPC",
125             updatedTemplate.getToscaTopologyTemplate().getNodeTemplates().get("apexMetadata_grpc")
126                 .getDescription());
127     }
128
129     @Test
130     void testToscaNodeTemplateDelete() throws Exception {
131
132         assertThatThrownBy(() -> toscaServiceTemplateService.deleteToscaNodeTemplate(null, null))
133             .hasMessageMatching("^name is marked .*on.*ull but is null$");
134
135         assertThatThrownBy(() -> toscaServiceTemplateService.deleteToscaNodeTemplate("name", null))
136             .hasMessageMatching("^version is marked .*on.*ull but is null$");
137
138         var createdTemplate = toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
139         mockDbServiceTemplate(createdTemplate, null, null);
140         assertThatThrownBy(() -> toscaServiceTemplateService.deleteToscaNodeTemplate("dummyname", "1.0.1"))
141             .hasMessage("node template dummyname:1.0.1 not found");
142
143         ToscaServiceTemplate responseTemplate =
144             toscaServiceTemplateService.deleteToscaNodeTemplate("apexMetadata_decisionMaker", "1.0.0");
145
146         assertTrue(responseTemplate.getToscaTopologyTemplate().getNodeTemplates()
147             .containsKey("apexMetadata_decisionMaker"));
148         assertThat(responseTemplate.getToscaTopologyTemplate().getNodeTemplates()).hasSize(1);
149
150         assertThat(toscaServiceTemplateService.fetchToscaNodeTemplates(null, null)).hasSize(2);
151     }
152
153 }