[SDC-29] rebase continue work to align source
[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.assertEquals;
24
25 import java.io.File;
26 import java.io.IOException;
27 import java.io.InputStream;
28 import java.util.ArrayList;
29 import java.util.Enumeration;
30 import java.util.HashMap;
31 import java.util.List;
32 import java.util.Map;
33 import java.util.zip.ZipEntry;
34 import java.util.zip.ZipException;
35 import java.util.zip.ZipFile;
36
37 import org.apache.commons.codec.binary.Base64;
38 import org.apache.commons.io.IOUtils;
39 import org.apache.http.HttpResponse;
40 import org.apache.http.client.methods.HttpGet;
41 import org.apache.http.impl.client.CloseableHttpClient;
42 import org.apache.http.impl.client.HttpClients;
43 import org.codehaus.jackson.map.ObjectMapper;
44 import org.junit.Rule;
45 import org.junit.rules.TestName;
46 import org.openecomp.sdc.be.datatypes.elements.ConsumerDataDefinition;
47 import org.openecomp.sdc.be.datatypes.enums.AssetTypeEnum;
48 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
49 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
50 import org.openecomp.sdc.be.model.ArtifactUiDownloadData;
51 import org.openecomp.sdc.be.model.Component;
52 import org.openecomp.sdc.be.model.Resource;
53 import org.openecomp.sdc.be.model.Service;
54 import org.openecomp.sdc.be.model.User;
55 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
56 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
57 import org.openecomp.sdc.ci.tests.api.Urls;
58 import org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails;
59 import org.openecomp.sdc.ci.tests.datatypes.ResourceAssetStructure;
60 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
61 import org.openecomp.sdc.ci.tests.datatypes.ServiceAssetStructure;
62 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
63 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
64 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
65 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
66 import org.openecomp.sdc.ci.tests.datatypes.expected.ExpectedExternalAudit;
67 import org.openecomp.sdc.ci.tests.datatypes.http.HttpHeaderEnum;
68 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
69 import org.openecomp.sdc.ci.tests.utils.Utils;
70 import org.openecomp.sdc.ci.tests.utils.cassandra.CassandraUtils;
71 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
72 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
73 import org.openecomp.sdc.ci.tests.utils.rest.ArtifactRestUtils;
74 import org.openecomp.sdc.ci.tests.utils.rest.AssetRestUtils;
75 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
76 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
77 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
78 import org.openecomp.sdc.ci.tests.utils.rest.ServiceRestUtils;
79 import org.openecomp.sdc.ci.tests.utils.validation.AuditValidationUtils;
80 import org.openecomp.sdc.common.api.Constants;
81 import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum;
82 import org.testng.annotations.BeforeMethod;
83 import org.testng.annotations.Test;
84 import static org.testng.AssertJUnit.assertTrue;
85
86 import com.google.gson.Gson;
87
88 import fj.data.Either;
89
90 public class GetCSARofVF extends ComponentBaseTest {
91
92 //      protected User sdncUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
93 //      protected User sdncAdminUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
94 //      protected ConsumerDataDefinition consumerDataDefinition;
95
96         @Rule
97         public static TestName name = new TestName();
98
99         public GetCSARofVF() {
100                 super(name, GetCSARofVF.class.getName());
101         }
102
103 //      Gson gson = new Gson();
104
105         @BeforeMethod
106         public void setup() throws Exception {
107
108 //              AtomicOperationUtils.createDefaultConsumer(true);
109 //              CassandraUtils.truncateAllKeyspaces();
110                 
111
112         }
113         
114         @Test
115         public void getResourceToscaModelCheckOutState() throws Exception {
116
117
118                 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
119                 
120 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
121                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
122                 
123                 // validate tosca structure  
124                 validateCsarContent(resource, toscaModelCsarFile);
125         
126                 // Validate audit message
127                 validateAudit(resource);
128                 
129                 
130                 
131         }
132
133
134         
135         @Test
136         public void getResourceToscaModelCheckInState() throws Exception {
137                 
138                 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
139                 
140                 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
141                 
142 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
143                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
144                 
145                 // validate tosca structure  
146                 validateCsarContent(resource, toscaModelCsarFile);
147         
148                 // Validate audit message
149                 validateAudit(resource);
150                 
151                 
152                 
153         }
154         
155         @Test
156         public void getRsourceToscaModelCertifyState() throws Exception {
157                 
158                 Resource resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
159                 
160                 AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
161                 
162 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
163                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.RESOURCES, resource.getUUID());
164                 
165                 // validate tosca structure  
166                 validateCsarContent(resource, toscaModelCsarFile);
167         
168                 // Validate audit message
169                 validateAudit(resource);
170                 
171                 
172         }
173         
174         
175         @Test
176         public void getServiceToscaModelCheckOutState() throws Exception {
177
178                 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
179                 
180 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
181                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
182                 
183                 // validate tosca structure  
184                 validateCsarContent(service, toscaModelCsarFile);
185         
186                 validateAudit(service);
187                 
188                 
189                 
190         }
191         
192         @Test
193         public void getServiceToscaModelCheckInState() throws Exception {
194                 
195                 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
196                 
197                 AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
198                 
199 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
200                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
201                 
202                 // validate tosca structure  
203                 validateCsarContent(service, toscaModelCsarFile);
204         
205                 validateAudit(service);
206                 
207                 
208         }
209         
210         @Test
211         public void getServiceToscaModelCertifyState() throws Exception {
212                 
213                 Service service = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true).left().value();
214                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.OTHER, service, UserRoleEnum.DESIGNER, true, true);
215                 AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
216                 
217 //              HttpResponse componentToscaModel = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.RESOURCES, resource.getUUID());
218                 File toscaModelCsarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
219                 
220                 // validate tosca structure  
221                 validateCsarContent(service, toscaModelCsarFile);
222         
223                 validateAudit(service);
224                 
225         }
226         
227         
228
229         
230         
231
232         public void validateCsarContent(Component resource, File toscaModelCsarFile) throws ZipException, IOException {
233                 ZipFile zipFile = new ZipFile(toscaModelCsarFile);
234                 Enumeration<? extends ZipEntry> entries = zipFile.entries();
235                 while(entries.hasMoreElements()){
236                         ZipEntry nextElement = entries.nextElement();
237                         if (!(nextElement.getName().contains("Artifacts")||nextElement.getName().contains("csar.meta"))){
238                                 assertTrue("missing file in csar template", (nextElement.getName().equals("TOSCA-Metadata/TOSCA.meta") || 
239                                                 nextElement.getName().equals("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template.yml")) ||
240                                                 nextElement.getName().equals("Definitions/"+ resource.getComponentType().getValue().toLowerCase()+"-"+ resource.getSystemName()+"-template-interface.yml"));
241                                 }
242                         }
243         }
244         
245         public void validateAudit(Component resource) throws Exception {
246                 ExpectedExternalAudit expectedAudit = null;
247                 if (resource.getComponentType().equals(ComponentTypeEnum.RESOURCE)){
248                 expectedAudit = ElementFactory.getDefaultExternalAuditObject(AssetTypeEnum.RESOURCES, AuditingActionEnum.GET_TOSCA_MODEL, ("/" + resource.getUUID() + "/toscaModel"));
249                 }
250                 else expectedAudit = ElementFactory.getDefaultExternalAuditObject(AssetTypeEnum.SERVICES, AuditingActionEnum.GET_TOSCA_MODEL, ("/" + resource.getUUID() + "/toscaModel"));
251                 expectedAudit.setRESOURCE_NAME(resource.getName());
252                 expectedAudit.setSERVICE_INSTANCE_ID(resource.getUUID());
253                 expectedAudit.setRESOURCE_TYPE(resource.getComponentType().getValue());
254 //              AuditValidationUtils.validateExternalAudit(expectedAudit, AuditingActionEnum.GET_TOSCA_MODEL.getName(), null);
255
256                 Map <AuditingFieldsKeysEnum, String> body = new HashMap<>();
257         body.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, expectedAudit.getRESOURCE_NAME());
258         AuditValidationUtils.validateExternalAudit(expectedAudit, AuditingActionEnum.GET_TOSCA_MODEL.getName(), body);
259
260         }
261         
262 }