Plugin to Generate Service ETSI NSD CSAR
[sdc.git] / catalog-be-plugins / etsi-nfv-nsd-csar-plugin / src / test / java / org / openecomp / sdc / be / plugins / etsi / nfv / nsd / generator / EtsiNfvNsCsarEntryGeneratorTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2020 Nordix Foundation
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  *
16  *  SPDX-License-Identifier: Apache-2.0
17  *  ============LICENSE_END=========================================================
18  */
19
20 package org.openecomp.sdc.be.plugins.etsi.nfv.nsd.generator;
21
22 import static org.hamcrest.MatcherAssert.assertThat;
23 import static org.hamcrest.Matchers.anEmptyMap;
24 import static org.hamcrest.Matchers.hasEntry;
25 import static org.hamcrest.core.Is.is;
26 import static org.mockito.Mockito.when;
27 import static org.openecomp.sdc.be.plugins.etsi.nfv.nsd.generator.EtsiNfvNsCsarEntryGenerator.ETSI_NS_COMPONENT_CATEGORY;
28 import static org.openecomp.sdc.be.plugins.etsi.nfv.nsd.generator.EtsiNfvNsCsarEntryGenerator.NSD_FILE_PATH_FORMAT;
29 import static org.openecomp.sdc.common.api.ArtifactTypeEnum.ETSI_PACKAGE;
30
31 import java.util.ArrayList;
32 import java.util.List;
33 import java.util.Map;
34 import org.junit.jupiter.api.BeforeEach;
35 import org.junit.jupiter.api.Test;
36 import org.mockito.InjectMocks;
37 import org.mockito.Mock;
38 import org.mockito.MockitoAnnotations;
39 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
40 import org.openecomp.sdc.be.model.Service;
41 import org.openecomp.sdc.be.model.category.CategoryDefinition;
42 import org.openecomp.sdc.be.plugins.etsi.nfv.nsd.exception.NsdException;
43
44 class EtsiNfvNsCsarEntryGeneratorTest {
45
46
47     @Mock
48     private EtsiNfvNsdCsarGenerator etsiNfvNsdCsarGenerator;
49     @Mock
50     private Service service;
51     @InjectMocks
52     private EtsiNfvNsCsarEntryGenerator etsiNfvNsCsarEntryGenerator;
53
54     private static final String SERVICE_NORMALIZED_NAME = "normalizedName";
55     private static final String CSAR_ENTRY_EMPTY_ASSERT = "Csar Entries should be empty";
56
57     @BeforeEach
58     void setUp() {
59         MockitoAnnotations.initMocks(this);
60     }
61
62     @Test
63     void successfullyEntryGenerationTest() throws NsdException {
64         mockServiceComponent();
65         final byte[] expectedNsdCsar = new byte[5];
66         when(etsiNfvNsdCsarGenerator.generateNsdCsar(service)).thenReturn(expectedNsdCsar);
67
68         final Map<String, byte[]> entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(service);
69
70         assertThat("Csar Entries should contain only one entry", entryMap.size(), is(1));
71         assertThat("Csar Entries should contain the expected entry", entryMap,
72             hasEntry(String.format(NSD_FILE_PATH_FORMAT, ETSI_PACKAGE, SERVICE_NORMALIZED_NAME), expectedNsdCsar));
73     }
74
75     @Test
76     void knownNsdGenerationErrorTest() throws NsdException {
77         mockServiceComponent();
78         when(etsiNfvNsdCsarGenerator.generateNsdCsar(service)).thenThrow(new NsdException(""));
79         final Map<String, byte[]> entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(service);
80
81         assertThat(CSAR_ENTRY_EMPTY_ASSERT, entryMap, is(anEmptyMap()));
82     }
83
84     @Test
85     void unknownNsdGenerationErrorTest() throws NsdException {
86         mockServiceComponent();
87         when(etsiNfvNsdCsarGenerator.generateNsdCsar(service)).thenThrow(new RuntimeException());
88         final Map<String, byte[]> entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(service);
89
90         assertThat(CSAR_ENTRY_EMPTY_ASSERT, entryMap, is(anEmptyMap()));
91     }
92
93     @Test
94     void componentNullOrNotAServiceTest() {
95         Map<String, byte[]> entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(service);
96         assertThat(CSAR_ENTRY_EMPTY_ASSERT, entryMap, is(anEmptyMap()));
97
98         entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(null);
99         assertThat(CSAR_ENTRY_EMPTY_ASSERT, entryMap, is(anEmptyMap()));
100     }
101
102     @Test
103     void componentNotExpectedCategoryTest() {
104         when(service.getComponentType()).thenReturn(ComponentTypeEnum.SERVICE);
105         final List<CategoryDefinition> categoryDefinitionList = new ArrayList<>();
106         final CategoryDefinition nsComponentCategoryDefinition = new CategoryDefinition();
107         nsComponentCategoryDefinition.setName("notExpectedCategory");
108         categoryDefinitionList.add(nsComponentCategoryDefinition);
109         when(service.getCategories()).thenReturn(categoryDefinitionList);
110         final Map<String, byte[]> entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(service);
111         assertThat(CSAR_ENTRY_EMPTY_ASSERT, entryMap, is(anEmptyMap()));
112     }
113
114     private void mockServiceComponent() {
115         when(service.getName()).thenReturn("anyName");
116         when(service.getComponentType()).thenReturn(ComponentTypeEnum.SERVICE);
117         when(service.getNormalizedName()).thenReturn(SERVICE_NORMALIZED_NAME);
118
119         final List<CategoryDefinition> categoryDefinitionList = new ArrayList<>();
120         final CategoryDefinition nsComponentCategoryDefinition = new CategoryDefinition();
121         nsComponentCategoryDefinition.setName(ETSI_NS_COMPONENT_CATEGORY);
122         categoryDefinitionList.add(nsComponentCategoryDefinition);
123         when(service.getCategories()).thenReturn(categoryDefinitionList);
124     }
125 }