[SDC] rebase 1710 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 static org.testng.AssertJUnit.assertTrue;
24
25 import java.io.File;
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;
31 import java.util.Map;
32 import java.util.zip.ZipEntry;
33 import java.util.zip.ZipException;
34 import java.util.zip.ZipFile;
35
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;
57
58 public class GetCSARofVF extends ComponentBaseTest {
59
60 //      protected User sdncUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
61 //      protected User sdncAdminUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
62 //      protected ConsumerDataDefinition consumerDataDefinition;
63
64         @Rule
65         public static TestName name = new TestName();
66
67         public GetCSARofVF() {
68                 super(name, GetCSARofVF.class.getName());
69         }
70
71 //      Gson gson = new Gson();
72
73         @BeforeMethod
74         public void setup() throws Exception {
75
76 //              AtomicOperationUtils.createDefaultConsumer(true);
77 //              CassandraUtils.truncateAllKeyspaces();
78                 
79
80         }
81         
82         @Test
83         public void getResourceToscaModelCheckOutState() throws Exception {
84
85
86                 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
87                 
88 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
89                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
90                 
91                 // validate tosca structure  
92                 validateCsarContent(resource, toscaModelCsarFile);
93         
94                 // Validate audit message
95                 validateAudit(resource);
96                 
97                 
98                 
99         }
100
101
102         
103         @Test
104         public void getResourceToscaModelCheckInState() throws Exception {
105                 
106                 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
107                 
108                 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
109                 
110 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
111                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
112                 
113                 // validate tosca structure  
114                 validateCsarContent(resource, toscaModelCsarFile);
115         
116                 // Validate audit message
117                 validateAudit(resource);
118                 
119                 
120                 
121         }
122         
123         @Test
124         public void getRsourceToscaModelCertifyState() throws Exception {
125                 
126                 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
127                 
128                 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
129                 
130 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
131                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
132                 
133                 // validate tosca structure  
134                 validateCsarContent(resource, toscaModelCsarFile);
135         
136                 // Validate audit message
137                 validateAudit(resource);
138                 
139                 
140         }
141         
142         
143         @Test
144         public void getServiceToscaModelCheckOutState() throws Exception {
145
146                 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
147                 
148 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
149                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
150                 
151                 // validate tosca structure  
152                 validateCsarContent(service, toscaModelCsarFile);
153         
154                 validateAudit(service);
155                 
156                 
157                 
158         }
159         
160         @Test
161         public void getServiceToscaModelCheckInState() throws Exception {
162                 
163                 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
164                 
165                 AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
166                 
167 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
168                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
169                 
170                 // validate tosca structure  
171                 validateCsarContent(service, toscaModelCsarFile);
172         
173                 validateAudit(service);
174                 
175                 
176         }
177         
178         @Test
179         public void getServiceToscaModelCertifyState() throws Exception {
180                 
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);
184                 
185 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
186                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
187                 
188                 // validate tosca structure  
189                 validateCsarContent(service, toscaModelCsarFile);
190         
191                 validateAudit(service);
192                 
193         }
194         
195
196         /**
197          * all files in list(expectedDefinitionFolderFileList) must be found in csar file 
198          * @param resource
199          * @param toscaModelCsarFile
200          * @throws ZipException
201          * @throws IOException
202          */
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");
216                 
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());
226                                 }
227                         }
228                 }
229                 zipFile.close();
230                 assertTrue("missing files in csar template definitions folder", expectedDefinitionFolderFileList.size() == 0);
231         }
232         
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"));
237                 }
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);
243
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);
247
248         }
249         
250 }