fee7f4036309076219af9ec226c15d7211f228b4
[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.jupiter.api.Assertions.assertEquals;
28 import static org.junit.jupiter.api.Assertions.assertNotNull;
29 import static org.junit.jupiter.api.Assertions.assertTrue;
30
31 import java.util.List;
32 import org.junit.jupiter.api.BeforeEach;
33 import org.junit.jupiter.api.Test;
34 import org.mockito.InjectMocks;
35 import org.onap.policy.common.utils.coder.CoderException;
36 import org.onap.policy.common.utils.coder.StandardCoder;
37 import org.onap.policy.common.utils.resources.ResourceUtils;
38 import org.onap.policy.models.base.PfConceptKey;
39 import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
40 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
41 import org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate;
42
43 class TestToscaServiceTemplateForNodeTemplate extends TestCommonToscaServiceTemplateService {
44
45     private static final String NODE_TEMPLATES_JSON = "nodetemplates/nodetemplates.metadatasets.input.tosca.json";
46     private static final String UPDATED_NODE_TEMPLATE_JSON = "nodetemplates/nodetemplates.metadatasets.update.json";
47     private static ToscaServiceTemplate toscaServiceTemplate;
48     private static ToscaServiceTemplate updatedToscaServiceTemplate;
49
50     @InjectMocks
51     private ToscaServiceTemplateService toscaServiceTemplateService;
52
53     @BeforeEach
54     public void setUp() {
55         super.setUp();
56     }
57
58     /**
59      * Fetch json files required for the tests.
60      *
61      * @throws CoderException when error parsing the json
62      */
63     @BeforeEach
64     void fetchToscaNodeTemplateJson() throws CoderException {
65         StandardCoder standardCoder = new StandardCoder();
66         toscaServiceTemplate =
67             standardCoder.decode(ResourceUtils.getResourceAsString(NODE_TEMPLATES_JSON), ToscaServiceTemplate.class);
68         updatedToscaServiceTemplate =
69             standardCoder.decode(ResourceUtils.getResourceAsString(UPDATED_NODE_TEMPLATE_JSON),
70                 ToscaServiceTemplate.class);
71     }
72
73     @Test
74     void testToscaNodeTemplatesGet() throws Exception {
75
76         assertNotNull(toscaServiceTemplate);
77         var createdTemplate = toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
78         mockDbServiceTemplate(createdTemplate, null, null);
79
80         //Fetch all node templates if id is null
81         List<ToscaNodeTemplate> gotToscaNodeTemplates = toscaServiceTemplateService
82             .fetchToscaNodeTemplates(null, null);
83         assertEquals(3, gotToscaNodeTemplates.size());
84
85         // Get filtered node templates
86         List<ToscaNodeTemplate> filteredNodeTemplates = toscaServiceTemplateService
87             .fetchToscaNodeTemplates("apexMetadata_adaptive", "1.0.0");
88         assertEquals(1, filteredNodeTemplates.size());
89
90         //Get invalid node template
91         List<ToscaNodeTemplate> filteredNodeTemplatesInvalid = toscaServiceTemplateService
92             .fetchToscaNodeTemplates("invalidname", "1.0.0");
93         assertThat(filteredNodeTemplatesInvalid).isEmpty();
94     }
95
96     @Test
97     void testToscaNodeTemplatesCreate() throws Exception {
98
99         assertThatThrownBy(() -> toscaServiceTemplateService.createToscaNodeTemplates(null))
100             .hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");
101
102         ToscaServiceTemplate createdNodeTemplates =
103             toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
104         assertThat(createdNodeTemplates.getToscaTopologyTemplate().getNodeTemplates()).hasSize(3);
105         assertThat(createdNodeTemplates.getToscaTopologyTemplate().getNodeTemplates().get("apexMetadata_grpc")
106             .getMetadata()).containsKey("threshold");
107     }
108
109     @Test
110     void testToscaNodeTemplateUpdate() throws Exception {
111
112         assertThatThrownBy(() -> toscaServiceTemplateService.updateToscaNodeTemplates(null))
113             .hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");
114
115         JpaToscaNodeTemplate jpaNodeTemplate = new JpaToscaNodeTemplate();
116         PfConceptKey key = new PfConceptKey("apexMetadata_grpc", "1.0.0");
117         jpaNodeTemplate.setKey(key);
118         jpaNodeTemplate.setDescription("Updated Metadata set for GRPC");
119         ToscaServiceTemplate updatedTemplate =
120             toscaServiceTemplateService.updateToscaNodeTemplates(updatedToscaServiceTemplate);
121         assertEquals("Updated Metadata set for GRPC",
122             updatedTemplate.getToscaTopologyTemplate().getNodeTemplates().get("apexMetadata_grpc")
123                 .getDescription());
124     }
125
126     @Test
127     void testToscaNodeTemplateDelete() throws Exception {
128
129         assertThatThrownBy(() -> toscaServiceTemplateService.deleteToscaNodeTemplate(null, null))
130             .hasMessageMatching("^name is marked .*on.*ull but is null$");
131
132         assertThatThrownBy(() -> toscaServiceTemplateService.deleteToscaNodeTemplate("name", null))
133             .hasMessageMatching("^version is marked .*on.*ull but is null$");
134
135         var createdTemplate = toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
136         mockDbServiceTemplate(createdTemplate, null, null);
137         assertThatThrownBy(() -> toscaServiceTemplateService.deleteToscaNodeTemplate("dummyname", "1.0.1"))
138             .hasMessage("node template dummyname:1.0.1 not found");
139
140         ToscaServiceTemplate responseTemplate =
141             toscaServiceTemplateService.deleteToscaNodeTemplate("apexMetadata_decisionMaker", "1.0.0");
142
143         assertTrue(responseTemplate.getToscaTopologyTemplate().getNodeTemplates()
144             .containsKey("apexMetadata_decisionMaker"));
145         assertThat(responseTemplate.getToscaTopologyTemplate().getNodeTemplates()).hasSize(1);
146
147         assertThat(toscaServiceTemplateService.fetchToscaNodeTemplates(null, null)).hasSize(2);
148     }
149
150 }