aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/test/java/org/onap/policy/api/main/service/TestToscaServiceTemplateForNodeTemplate.java
blob: 8f8fc4649e72b5e9d5123d34d13c68d12f2e676e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*-
 * ============LICENSE_START=======================================================
 * ONAP Policy API
 * ================================================================================
 * Copyright (C) 2022 Nordix Foundation. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * SPDX-License-Identifier: Apache-2.0
 * ============LICENSE_END=========================================================
 */

package org.onap.policy.api.main.service;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate;

@RunWith(MockitoJUnitRunner.class)
public class TestToscaServiceTemplateForNodeTemplate extends TestCommonToscaServiceTemplateService {

    private static final String NODE_TEMPLATES_JSON = "nodetemplates/nodetemplates.metadatasets.input.tosca.json";
    private static final String UPDATED_NODE_TEMPLATE_JSON = "nodetemplates/nodetemplates.metadatasets.update.json";
    private static ToscaServiceTemplate toscaServiceTemplate;
    private static ToscaServiceTemplate updatedToscaServiceTemplate;
    private StandardCoder standardCoder;

    @InjectMocks
    private ToscaServiceTemplateService toscaServiceTemplateService;


    @Before
    public void setUp() {
        super.setUp();
    }

    /**
     * Fetch json files required for the tests.
     *
     * @throws CoderException when error parsing the json
     */
    @Before
    public void fetchToscaNodeTemplateJson() throws CoderException {
        standardCoder = new StandardCoder();
        toscaServiceTemplate =
            standardCoder.decode(ResourceUtils.getResourceAsString(NODE_TEMPLATES_JSON), ToscaServiceTemplate.class);
        updatedToscaServiceTemplate =
            standardCoder.decode(ResourceUtils.getResourceAsString(UPDATED_NODE_TEMPLATE_JSON),
                ToscaServiceTemplate.class);
    }

    @Test
    public void testToscaNodeTemplatesGet() throws Exception {

        assertNotNull(toscaServiceTemplate);
        var createdTemplate = toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
        mockDbServiceTemplate(createdTemplate, null, null);

        //Fetch all node templates if id is null
        List<ToscaNodeTemplate> gotToscaNodeTemplates = toscaServiceTemplateService
            .fetchToscaNodeTemplates(null, null);
        assertEquals(3, gotToscaNodeTemplates.size());

        // Get filtered node templates
        List<ToscaNodeTemplate> filteredNodeTemplates = toscaServiceTemplateService
            .fetchToscaNodeTemplates("apexMetadata_adaptive", "1.0.0");
        assertEquals(1, filteredNodeTemplates.size());

        //Get invalid node template
        List<ToscaNodeTemplate> filteredNodeTemplatesInvalid = toscaServiceTemplateService
            .fetchToscaNodeTemplates("invalidname", "1.0.0");
        assertThat(filteredNodeTemplatesInvalid).isEmpty();
    }

    @Test
    public void testToscaNodeTemplatesCreate() throws Exception {

        assertThatThrownBy(() -> {
            toscaServiceTemplateService.createToscaNodeTemplates(null);
        }).hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");

        ToscaServiceTemplate createdNodeTemplates =
            toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
        assertThat(createdNodeTemplates.getToscaTopologyTemplate().getNodeTemplates()).hasSize(3);
        assertThat(createdNodeTemplates.getToscaTopologyTemplate().getNodeTemplates().get("apexMetadata_grpc")
            .getMetadata()).containsKey("threshold");
    }

    @Test
    public void testToscaNodeTemplateUpdate() throws Exception {

        assertThatThrownBy(() -> {
            toscaServiceTemplateService.updateToscaNodeTemplates(null);
        }).hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$");

        JpaToscaNodeTemplate jpaNodeTemplate = new JpaToscaNodeTemplate();
        PfConceptKey key = new PfConceptKey("apexMetadata_grpc", "1.0.0");
        jpaNodeTemplate.setKey(key);
        jpaNodeTemplate.setDescription("Updated Metadata set for GRPC");
        ToscaServiceTemplate updatedTemplate =
            toscaServiceTemplateService.updateToscaNodeTemplates(updatedToscaServiceTemplate);
        assertEquals("Updated Metadata set for GRPC",
            updatedTemplate.getToscaTopologyTemplate().getNodeTemplates().get("apexMetadata_grpc")
                .getDescription());
    }

    @Test
    public void testToscaNodeTemplateDelete() throws Exception {

        assertThatThrownBy(() -> {
            toscaServiceTemplateService.deleteToscaNodeTemplate(null, null);
        }).hasMessageMatching("^name is marked .*on.*ull but is null$");

        assertThatThrownBy(() -> {
            toscaServiceTemplateService.deleteToscaNodeTemplate("name", null);
        }).hasMessageMatching("^version is marked .*on.*ull but is null$");

        var createdTemplate = toscaServiceTemplateService.createToscaNodeTemplates(toscaServiceTemplate);
        mockDbServiceTemplate(createdTemplate, null, null);
        assertThatThrownBy(() -> {
            toscaServiceTemplateService.deleteToscaNodeTemplate("dummyname", "1.0.1");
        }).hasMessage("node template dummyname:1.0.1 not found");

        ToscaServiceTemplate responseTemplate =
            toscaServiceTemplateService.deleteToscaNodeTemplate("apexMetadata_decisionMaker", "1.0.0");

        assertTrue(responseTemplate.getToscaTopologyTemplate().getNodeTemplates()
            .containsKey("apexMetadata_decisionMaker"));
        assertThat(responseTemplate.getToscaTopologyTemplate().getNodeTemplates()).hasSize(1);

        assertThat(toscaServiceTemplateService.fetchToscaNodeTemplates(null, null)).hasSize(2);
    }

}