re base code
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / externalApis / GetCSARofVF.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.openecomp.sdc.externalApis;
22
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;
38
39 import java.io.File;
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;
47
48 import static org.testng.AssertJUnit.assertTrue;
49
50 public class GetCSARofVF extends ComponentBaseTest {
51
52 //      protected User sdncUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
53 //      protected User sdncAdminUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
54 //      protected ConsumerDataDefinition consumerDataDefinition;
55
56         @Rule
57         public static TestName name = new TestName();
58
59         public GetCSARofVF() {
60                 super(name, GetCSARofVF.class.getName());
61         }
62
63 //      Gson gson = new Gson();
64
65         @BeforeMethod
66         public void setup() throws Exception {
67
68 //              AtomicOperationUtils.createDefaultConsumer(true);
69 //              CassandraUtils.truncateAllKeyspaces();
70                 
71
72         }
73         
74         @Test
75         public void getResourceToscaModelCheckOutState() throws Exception {
76
77
78                 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
79                 
80 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
81                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
82                 
83                 // validate tosca structure  
84                 validateCsarContent(resource, toscaModelCsarFile);
85         
86         /*      // Validate audit message
87                 validateAudit(resource);*/
88
89         }
90
91
92         
93         @Test
94         public void getResourceToscaModelCheckInState() throws Exception {
95                 
96                 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
97                 
98                 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
99                 
100 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
101                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
102                 
103                 // validate tosca structure  
104                 validateCsarContent(resource, toscaModelCsarFile);
105         
106                 /*// Validate audit message
107                 validateAudit(resource);*/
108
109         }
110         
111         @Test
112         public void getRsourceToscaModelCertifyState() throws Exception {
113                 
114                 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
115                 
116                 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
117                 
118 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
119                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
120                 
121                 // validate tosca structure  
122                 validateCsarContent(resource, toscaModelCsarFile);
123         
124                 /*// Validate audit message
125                 validateAudit(resource);*/
126
127         }
128         
129         
130         @Test
131         public void getServiceToscaModelCheckOutState() throws Exception {
132
133                 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
134                 
135 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
136                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
137                 
138                 // validate tosca structure  
139                 validateCsarContent(service, toscaModelCsarFile);
140         
141                 /*validateAudit(service);*/
142
143         }
144         
145         @Test
146         public void getServiceToscaModelCheckInState() throws Exception {
147                 
148                 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
149                 
150                 AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
151                 
152 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
153                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
154                 
155                 // validate tosca structure  
156                 validateCsarContent(service, toscaModelCsarFile);
157         
158                 /*validateAudit(service);*/
159
160         }
161         
162         @Test
163         public void getServiceToscaModelCertifyState() throws Exception {
164                 
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);
168                 
169 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
170                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
171                 
172                 // validate tosca structure  
173                 validateCsarContent(service, toscaModelCsarFile);
174         
175                 /*validateAudit(service);*/
176                 
177         }
178         
179
180         /**
181          * all files in list(expectedDefinitionFolderFileList) must be found in csar file 
182          * @param resource
183          * @param toscaModelCsarFile
184          * @throws ZipException
185          * @throws IOException
186          */
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");
200                 expectedDefinitionFolderFileList.add("Definitions/annotations.yml");
201                 
202                 Enumeration<? extends ZipEntry> entries = zipFile.entries();
203                 while(entries.hasMoreElements()){
204                         ZipEntry nextElement = entries.nextElement();
205                         if (!(nextElement.getName().contains("Artifacts")||nextElement.getName().contains("csar.meta"))){
206 //                              assertTrue("missing file in csar template", (nextElement.getName().equals("TOSCA-Metadata/TOSCA.meta") || 
207 //                                              nextElement.getName().equals("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template.yml")) ||
208 //                                              nextElement.getName().equals("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template-interface.yml"));
209                                 if(expectedDefinitionFolderFileList.contains(nextElement.getName())){
210                                         expectedDefinitionFolderFileList.remove(nextElement.getName());
211                                 }
212                         }
213                 }
214                 zipFile.close();
215                 assertTrue("missing files in csar template definitions folder", expectedDefinitionFolderFileList.size() == 0);
216         }
217         
218         /*public void validateAudit(Component resource) throws Exception {
219                 ExpectedExternalAudit expectedAudit = null;
220                 if (resource.getComponentType().equals(ComponentTypeEnum.RESOURCE)){
221                 expectedAudit = ElementFactory.getDefaultExternalAuditObject(AssetTypeEnum.RESOURCES, AuditingActionEnum.GET_TOSCA_MODEL, ("/" + resource.getUUID() + "/toscaModel"));
222                 }
223                 else expectedAudit = ElementFactory.getDefaultExternalAuditObject(AssetTypeEnum.SERVICES, AuditingActionEnum.GET_TOSCA_MODEL, ("/" + resource.getUUID() + "/toscaModel"));
224                 expectedAudit.setRESOURCE_NAME(resource.getName());
225                 expectedAudit.setSERVICE_INSTANCE_ID(resource.getUUID());
226                 expectedAudit.setRESOURCE_TYPE(resource.getComponentType().getValue());
227 //              AuditValidationUtils.validateExternalAudit(expectedAudit, AuditingActionEnum.GET_TOSCA_MODEL.getName(), null);
228
229                 Map <AuditingFieldsKey, String> body = new HashMap<>();
230         body.put(AuditingFieldsKey.AUDIT_RESOURCE_NAME, expectedAudit.getRESOURCE_NAME());
231         AuditValidationUtils.validateExternalAudit(expectedAudit, AuditingActionEnum.GET_TOSCA_MODEL.getName(), body);
232
233         }*/
234         
235 }