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.externalApis;
23 import static org.testng.AssertJUnit.assertTrue;
26 import java.io.IOException;
27 import java.util.ArrayList;
28 import java.util.Enumeration;
29 import java.util.HashMap;
30 import java.util.List;
32 import java.util.zip.ZipEntry;
33 import java.util.zip.ZipException;
34 import java.util.zip.ZipFile;
36 import org.junit.Rule;
37 import org.junit.rules.TestName;
38 import org.openecomp.sdc.be.datatypes.enums.AssetTypeEnum;
39 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
40 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
41 import org.openecomp.sdc.be.model.Component;
42 import org.openecomp.sdc.be.model.Resource;
43 import org.openecomp.sdc.be.model.Service;
44 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
45 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
46 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
47 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
48 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
49 import org.openecomp.sdc.ci.tests.datatypes.expected.ExpectedExternalAudit;
50 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
51 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
52 import org.openecomp.sdc.ci.tests.utils.rest.AssetRestUtils;
53 import org.openecomp.sdc.ci.tests.utils.validation.AuditValidationUtils;
54 import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum;
55 import org.testng.annotations.BeforeMethod;
56 import org.testng.annotations.Test;
58 public class GetCSARofVF extends ComponentBaseTest {
60 // protected User sdncUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
61 // protected User sdncAdminUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
62 // protected ConsumerDataDefinition consumerDataDefinition;
65 public static TestName name = new TestName();
67 public GetCSARofVF() {
68 super(name, GetCSARofVF.class.getName());
71 // Gson gson = new Gson();
74 public void setup() throws Exception {
76 // AtomicOperationUtils.createDefaultConsumer(true);
77 // CassandraUtils.truncateAllKeyspaces();
83 public void getResourceToscaModelCheckOutState() throws Exception {
86 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
88 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
89 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
91 // validate tosca structure
92 validateCsarContent(resource, toscaModelCsarFile);
94 // Validate audit message
95 validateAudit(resource);
104 public void getResourceToscaModelCheckInState() throws Exception {
106 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
108 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
110 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
111 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
113 // validate tosca structure
114 validateCsarContent(resource, toscaModelCsarFile);
116 // Validate audit message
117 validateAudit(resource);
124 public void getRsourceToscaModelCertifyState() throws Exception {
126 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
128 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
130 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
131 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
133 // validate tosca structure
134 validateCsarContent(resource, toscaModelCsarFile);
136 // Validate audit message
137 validateAudit(resource);
144 public void getServiceToscaModelCheckOutState() throws Exception {
146 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
148 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
149 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
151 // validate tosca structure
152 validateCsarContent(service, toscaModelCsarFile);
154 validateAudit(service);
161 public void getServiceToscaModelCheckInState() throws Exception {
163 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
165 AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
167 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
168 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
170 // validate tosca structure
171 validateCsarContent(service, toscaModelCsarFile);
173 validateAudit(service);
179 public void getServiceToscaModelCertifyState() throws Exception {
181 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
182 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.OTHER, service, UserRoleEnum.DESIGNER, true, true);
183 AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
185 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
186 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
188 // validate tosca structure
189 validateCsarContent(service, toscaModelCsarFile);
191 validateAudit(service);
197 * all files in list(expectedDefinitionFolderFileList) must be found in csar file
199 * @param toscaModelCsarFile
200 * @throws ZipException
201 * @throws IOException
203 public void validateCsarContent(Component resource, File toscaModelCsarFile) throws ZipException, IOException {
204 ZipFile zipFile = new ZipFile(toscaModelCsarFile);
205 List<String> expectedDefinitionFolderFileList = new ArrayList<String>();
206 expectedDefinitionFolderFileList.add("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template.yml");
207 expectedDefinitionFolderFileList.add("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template-interface.yml");
208 expectedDefinitionFolderFileList.add("Definitions/relationships.yml");
209 expectedDefinitionFolderFileList.add("Definitions/policies.yml");
210 expectedDefinitionFolderFileList.add("Definitions/nodes.yml");
211 expectedDefinitionFolderFileList.add("Definitions/interfaces.yml");
212 expectedDefinitionFolderFileList.add("Definitions/groups.yml");
213 expectedDefinitionFolderFileList.add("Definitions/data.yml");
214 expectedDefinitionFolderFileList.add("Definitions/capabilities.yml");
215 expectedDefinitionFolderFileList.add("Definitions/artifacts.yml");
217 Enumeration<? extends ZipEntry> entries = zipFile.entries();
218 while(entries.hasMoreElements()){
219 ZipEntry nextElement = entries.nextElement();
220 if (!(nextElement.getName().contains("Artifacts")||nextElement.getName().contains("csar.meta"))){
221 // assertTrue("missing file in csar template", (nextElement.getName().equals("TOSCA-Metadata/TOSCA.meta") ||
222 // nextElement.getName().equals("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template.yml")) ||
223 // nextElement.getName().equals("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template-interface.yml"));
224 if(expectedDefinitionFolderFileList.contains(nextElement.getName())){
225 expectedDefinitionFolderFileList.remove(nextElement.getName());
230 assertTrue("missing files in csar template definitions folder", expectedDefinitionFolderFileList.size() == 0);
233 public void validateAudit(Component resource) throws Exception {
234 ExpectedExternalAudit expectedAudit = null;
235 if (resource.getComponentType().equals(ComponentTypeEnum.RESOURCE)){
236 expectedAudit = ElementFactory.getDefaultExternalAuditObject(AssetTypeEnum.RESOURCES, AuditingActionEnum.GET_TOSCA_MODEL, ("/" + resource.getUUID() + "/toscaModel"));
238 else expectedAudit = ElementFactory.getDefaultExternalAuditObject(AssetTypeEnum.SERVICES, AuditingActionEnum.GET_TOSCA_MODEL, ("/" + resource.getUUID() + "/toscaModel"));
239 expectedAudit.setRESOURCE_NAME(resource.getName());
240 expectedAudit.setSERVICE_INSTANCE_ID(resource.getUUID());
241 expectedAudit.setRESOURCE_TYPE(resource.getComponentType().getValue());
242 // AuditValidationUtils.validateExternalAudit(expectedAudit, AuditingActionEnum.GET_TOSCA_MODEL.getName(), null);
244 Map <AuditingFieldsKeysEnum, String> body = new HashMap<>();
245 body.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, expectedAudit.getRESOURCE_NAME());
246 AuditValidationUtils.validateExternalAudit(expectedAudit, AuditingActionEnum.GET_TOSCA_MODEL.getName(), body);