2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.vendorsoftwareproduct;
24 import java.io.IOException;
25 import java.io.InputStream;
26 import java.nio.ByteBuffer;
27 import java.util.List;
28 import java.util.Objects;
29 import org.apache.commons.collections4.MapUtils;
30 import org.apache.commons.io.IOUtils;
31 import org.junit.Assert;
32 import org.junit.Before;
33 import org.mockito.InjectMocks;
34 import org.mockito.MockitoAnnotations;
35 import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
36 import org.openecomp.core.validation.util.MessageContainerUtil;
37 import org.openecomp.sdc.datatypes.error.ErrorLevel;
38 import org.openecomp.sdc.logging.api.Logger;
39 import org.openecomp.sdc.logging.api.LoggerFactory;
40 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
41 import org.openecomp.sdc.vendorsoftwareproduct.exception.OnboardPackageException;
42 import org.openecomp.sdc.vendorsoftwareproduct.impl.OrchestrationTemplateCandidateManagerImpl;
43 import org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.InformationArtifactData;
44 import org.openecomp.sdc.vendorsoftwareproduct.questionnaire.QuestionnaireDataService;
45 import org.openecomp.sdc.vendorsoftwareproduct.tree.UploadFileTest;
46 import org.openecomp.sdc.vendorsoftwareproduct.types.OnboardPackageInfo;
47 import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
48 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.ComponentQuestionnaire;
49 import org.openecomp.sdc.versioning.dao.types.Version;
51 public class QuestionnaireDataServiceTest {
52 private static final Logger LOGGER = LoggerFactory.getLogger(QuestionnaireDataServiceTest.class);
54 public static final Version VERSION = new Version(0, 1);
55 private QuestionnaireDataService questionnaireDataService;// = new QuestionnaireDataServiceImpl();
58 private OrchestrationTemplateCandidateManagerImpl candidateManager;
60 private UploadFileTest uploadFileTest = new UploadFileTest();
61 private OnboardPackageInfo onboardPackageInfo;
63 private static String vspId;
64 private static Version vspActiveVersion;
65 private static final String USER1 = "vspTestUser1";
66 private static final VspDetails vspDetails = new VspDetails(vspId, VERSION);
67 private static final String CSAR = "csar";
68 private static final String ZIP = "zip";
71 public void setUp() throws Exception {
72 MockitoAnnotations.openMocks(this);
75 // TODO: 3/15/2017 fix and enable //@Test
76 public void testQuestionnaireDataAfterLegalUploadWithComposition() throws IOException, OnboardPackageException {
77 InformationArtifactData informationArtifactData =
78 uploadFileAndValidateInformationArtifactData("/fullComposition", 5);
80 assertQuestionnaireValuesAreAsExpected(informationArtifactData, false);
84 // TODO: 3/15/2017 fix and enable //@Test
85 public void testQuestionnaireDataAfterLegalUploadEmptyComposition() throws IOException, OnboardPackageException {
86 uploadFileAndValidateInformationArtifactData("/emptyComposition", 0);
90 // TODO: 3/15/2017 fix and enable //@Test
91 public void testQuestionnaireDataAfterIllegalUpload() throws IOException, OnboardPackageException {
92 try (InputStream zipInputStream = uploadFileTest.getZipInputStream("/missingYml")) {
93 onboardPackageInfo = new OnboardPackageInfo("missingYml", CSAR, convertFileInputStream(zipInputStream), OnboardingTypesEnum.CSAR);
94 UploadFileResponse uploadFileResponse =
95 candidateManager.upload(vspDetails, onboardPackageInfo);
97 InformationArtifactData informationArtifactData = questionnaireDataService
98 .generateQuestionnaireDataForInformationArtifact(vspId, vspActiveVersion);
102 private InformationArtifactData uploadFileAndValidateInformationArtifactData(final String filePath,
103 final int listSizeToCheck)
104 throws IOException, OnboardPackageException {
106 try (final InputStream zipInputStream = uploadFileTest.getZipInputStream(filePath)) {
107 onboardPackageInfo = new OnboardPackageInfo("file", OnboardingTypesEnum.CSAR.toString(),
108 convertFileInputStream(zipInputStream), OnboardingTypesEnum.CSAR);
109 final UploadFileResponse uploadFileResponse = candidateManager.upload(vspDetails, onboardPackageInfo);
110 candidateManager.process(vspId, VERSION);
112 Assert.assertTrue(MapUtils.isEmpty(
113 MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, uploadFileResponse.getErrors())));
115 final InformationArtifactData informationArtifactData = questionnaireDataService
116 .generateQuestionnaireDataForInformationArtifact(vspId, vspActiveVersion);
117 Assert.assertNotNull(informationArtifactData);
119 final List<ComponentQuestionnaire> componentQuestionnaireList =
120 informationArtifactData.getComponentQuestionnaires();
121 Assert.assertEquals(componentQuestionnaireList.size(), listSizeToCheck);
123 return informationArtifactData;
126 private void assertQuestionnaireValuesAreAsExpected(
127 InformationArtifactData informationArtifactData, boolean condition) {
129 Objects.isNull(informationArtifactData.getComponentQuestionnaires().get(0).getCompute()),
132 Objects.isNull(informationArtifactData.getComponentQuestionnaires().get(0).getStorage()),
136 private ByteBuffer convertFileInputStream(final InputStream fileInputStream) {
137 byte[] fileContent = new byte[0];
139 fileContent = IOUtils.toByteArray(fileInputStream);
140 } catch (final IOException e) {
141 LOGGER.error(String.format("Could not convert %s into byte[]", fileInputStream), e);
143 return ByteBuffer.wrap(fileContent);