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 org.junit.Rule;
24 import org.junit.rules.TestName;
25 import org.openecomp.sdc.be.datatypes.enums.AssetTypeEnum;
26 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
27 import org.openecomp.sdc.be.model.Component;
28 import org.openecomp.sdc.be.model.Resource;
29 import org.openecomp.sdc.be.model.Service;
30 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
31 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
32 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
33 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
34 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
35 import org.openecomp.sdc.ci.tests.utils.rest.AssetRestUtils;
36 import org.testng.annotations.BeforeMethod;
37 import org.testng.annotations.Test;
40 import java.io.IOException;
41 import java.util.ArrayList;
42 import java.util.Enumeration;
43 import java.util.List;
44 import java.util.zip.ZipEntry;
45 import java.util.zip.ZipException;
46 import java.util.zip.ZipFile;
48 import static org.testng.AssertJUnit.assertTrue;
50 public class GetCSARofVF extends ComponentBaseTest {
52 // protected User sdncUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
53 // protected User sdncAdminUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
54 // protected ConsumerDataDefinition consumerDataDefinition;
57 public static TestName name = new TestName();
59 public GetCSARofVF() {
60 super(name, GetCSARofVF.class.getName());
63 // Gson gson = new Gson();
66 public void setup() throws Exception {
68 // AtomicOperationUtils.createDefaultConsumer(true);
69 // CassandraUtils.truncateAllKeyspaces();
75 public void getResourceToscaModelCheckOutState() throws Exception {
78 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
80 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
81 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
83 // validate tosca structure
84 validateCsarContent(resource, toscaModelCsarFile);
86 /* // Validate audit message
87 validateAudit(resource);*/
94 public void getResourceToscaModelCheckInState() throws Exception {
96 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
98 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
100 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
101 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
103 // validate tosca structure
104 validateCsarContent(resource, toscaModelCsarFile);
106 /*// Validate audit message
107 validateAudit(resource);*/
112 public void getRsourceToscaModelCertifyState() throws Exception {
114 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
116 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
118 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
119 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
121 // validate tosca structure
122 validateCsarContent(resource, toscaModelCsarFile);
124 /*// Validate audit message
125 validateAudit(resource);*/
131 public void getServiceToscaModelCheckOutState() throws Exception {
133 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
135 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
136 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
138 // validate tosca structure
139 validateCsarContent(service, toscaModelCsarFile);
141 /*validateAudit(service);*/
146 public void getServiceToscaModelCheckInState() throws Exception {
148 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
150 AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
152 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
153 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
155 // validate tosca structure
156 validateCsarContent(service, toscaModelCsarFile);
158 /*validateAudit(service);*/
163 public void getServiceToscaModelCertifyState() throws Exception {
165 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
166 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.OTHER, service, UserRoleEnum.DESIGNER, true, true);
167 AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
169 // HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
170 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
172 // validate tosca structure
173 validateCsarContent(service, toscaModelCsarFile);
175 /*validateAudit(service);*/
181 * all files in list(expectedDefinitionFolderFileList) must be found in csar file
183 * @param toscaModelCsarFile
184 * @throws ZipException
185 * @throws IOException
187 public void validateCsarContent(Component resource, File toscaModelCsarFile) throws ZipException, IOException {
188 ZipFile zipFile = new ZipFile(toscaModelCsarFile);
189 List<String> expectedDefinitionFolderFileList = new ArrayList<String>();
190 expectedDefinitionFolderFileList.add("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template.yml");
191 expectedDefinitionFolderFileList.add("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template-interface.yml");
192 expectedDefinitionFolderFileList.add("Definitions/relationships.yml");
193 expectedDefinitionFolderFileList.add("Definitions/policies.yml");
194 expectedDefinitionFolderFileList.add("Definitions/nodes.yml");
195 expectedDefinitionFolderFileList.add("Definitions/interfaces.yml");
196 expectedDefinitionFolderFileList.add("Definitions/groups.yml");
197 expectedDefinitionFolderFileList.add("Definitions/data.yml");
198 expectedDefinitionFolderFileList.add("Definitions/capabilities.yml");
199 expectedDefinitionFolderFileList.add("Definitions/artifacts.yml");
201 Enumeration<? extends ZipEntry> entries = zipFile.entries();
202 while(entries.hasMoreElements()){
203 ZipEntry nextElement = entries.nextElement();
204 if (!(nextElement.getName().contains("Artifacts")||nextElement.getName().contains("csar.meta"))){
205 // assertTrue("missing file in csar template", (nextElement.getName().equals("TOSCA-Metadata/TOSCA.meta") ||
206 // nextElement.getName().equals("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template.yml")) ||
207 // nextElement.getName().equals("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template-interface.yml"));
208 if(expectedDefinitionFolderFileList.contains(nextElement.getName())){
209 expectedDefinitionFolderFileList.remove(nextElement.getName());
214 assertTrue("missing files in csar template definitions folder", expectedDefinitionFolderFileList.size() == 0);
217 /*public void validateAudit(Component resource) throws Exception {
218 ExpectedExternalAudit expectedAudit = null;
219 if (resource.getComponentType().equals(ComponentTypeEnum.RESOURCE)){
220 expectedAudit = ElementFactory.getDefaultExternalAuditObject(AssetTypeEnum.RESOURCES, AuditingActionEnum.GET_TOSCA_MODEL, ("/" + resource.getUUID() + "/toscaModel"));
222 else expectedAudit = ElementFactory.getDefaultExternalAuditObject(AssetTypeEnum.SERVICES, AuditingActionEnum.GET_TOSCA_MODEL, ("/" + resource.getUUID() + "/toscaModel"));
223 expectedAudit.setRESOURCE_NAME(resource.getName());
224 expectedAudit.setSERVICE_INSTANCE_ID(resource.getUUID());
225 expectedAudit.setRESOURCE_TYPE(resource.getComponentType().getValue());
226 // AuditValidationUtils.validateExternalAudit(expectedAudit, AuditingActionEnum.GET_TOSCA_MODEL.getName(), null);
228 Map <AuditingFieldsKeysEnum, String> body = new HashMap<>();
229 body.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, expectedAudit.getRESOURCE_NAME());
230 AuditValidationUtils.validateExternalAudit(expectedAudit, AuditingActionEnum.GET_TOSCA_MODEL.getName(), body);