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
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.
16 * SPDX-License-Identifier: Apache-2.0
17 * ============LICENSE_END=========================================================
20 package org.openecomp.sdc.be.plugins.etsi.nfv.nsd.generator;
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;
31 import java.util.ArrayList;
32 import java.util.List;
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;
44 class EtsiNfvNsCsarEntryGeneratorTest {
48 private EtsiNfvNsdCsarGenerator etsiNfvNsdCsarGenerator;
50 private Service service;
52 private EtsiNfvNsCsarEntryGenerator etsiNfvNsCsarEntryGenerator;
54 private static final String SERVICE_NORMALIZED_NAME = "normalizedName";
55 private static final String CSAR_ENTRY_EMPTY_ASSERT = "Csar Entries should be empty";
59 MockitoAnnotations.initMocks(this);
63 void successfullyEntryGenerationTest() throws NsdException {
64 mockServiceComponent();
65 final byte[] expectedNsdCsar = new byte[5];
66 when(etsiNfvNsdCsarGenerator.generateNsdCsar(service)).thenReturn(expectedNsdCsar);
68 final Map<String, byte[]> entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(service);
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));
76 void knownNsdGenerationErrorTest() throws NsdException {
77 mockServiceComponent();
78 when(etsiNfvNsdCsarGenerator.generateNsdCsar(service)).thenThrow(new NsdException(""));
79 final Map<String, byte[]> entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(service);
81 assertThat(CSAR_ENTRY_EMPTY_ASSERT, entryMap, is(anEmptyMap()));
85 void unknownNsdGenerationErrorTest() throws NsdException {
86 mockServiceComponent();
87 when(etsiNfvNsdCsarGenerator.generateNsdCsar(service)).thenThrow(new RuntimeException());
88 final Map<String, byte[]> entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(service);
90 assertThat(CSAR_ENTRY_EMPTY_ASSERT, entryMap, is(anEmptyMap()));
94 void componentNullOrNotAServiceTest() {
95 Map<String, byte[]> entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(service);
96 assertThat(CSAR_ENTRY_EMPTY_ASSERT, entryMap, is(anEmptyMap()));
98 entryMap = etsiNfvNsCsarEntryGenerator.generateCsarEntries(null);
99 assertThat(CSAR_ENTRY_EMPTY_ASSERT, entryMap, is(anEmptyMap()));
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()));
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);
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);