[SDC-29] rebase continue work to align source
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / imports / ImportUpdateResourseCsarTest.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.ci.tests.execute.imports;
22
23 import static org.testng.AssertJUnit.assertTrue;
24 import static org.testng.AssertJUnit.assertEquals;
25
26 import java.nio.file.Files;
27 import java.nio.file.Path;
28 import java.nio.file.Paths;
29 import java.util.List;
30 import java.util.regex.Pattern;
31
32 import org.apache.commons.codec.binary.Base64;
33 import org.junit.Rule;
34 import org.junit.rules.TestName;
35 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
36 import org.openecomp.sdc.be.model.GroupDefinition;
37 import org.openecomp.sdc.be.model.Resource;
38 import org.openecomp.sdc.be.model.User;
39 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
40 import org.openecomp.sdc.ci.tests.datatypes.ImportReqDetails;
41 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
42 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
43 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
44 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
45 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
46 import org.openecomp.sdc.ci.tests.utils.rest.LifecycleRestUtils;
47 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
48 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
49 import org.openecomp.sdc.common.api.Constants;
50 import org.testng.annotations.Test;
51
52 import com.google.gson.Gson;
53
54 public class ImportUpdateResourseCsarTest extends ComponentBaseTest {
55         @Rule
56         public static TestName name = new TestName();
57
58         Gson gson = new Gson();
59         public static String userDefinedNodeYaml = "mycompute2.yml";
60         public static String rootPath = System.getProperty("user.dir");
61         public static String csarFolderPath = "/src/test/resources/CI/csars/";
62
63         public ImportUpdateResourseCsarTest() {
64                 super(name, ImportUpdateResourseCsarTest.class.getName());
65         }
66
67         @Test
68         public void createUpdateImportResourceFromCsarTest() throws Exception {
69                 User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
70                 ImportReqDetails resourceDetails = ElementFactory.getDefaultImportResource();
71                 RestResponse updateResource = null;
72                 RestResponse createResource = null;
73                 Resource resource = null;
74                 String payloadName = "orig2G.csar";
75                 String rootPath = System.getProperty("user.dir");
76                 Path path = Paths.get(rootPath + csarFolderPath + "orig2G.csar");
77                 byte[] data = Files.readAllBytes(path);
78                 String payloadData = Base64.encodeBase64String(data);
79                 resourceDetails.setPayloadData(payloadData);
80                 resourceDetails.setPayloadName(payloadName);
81                 resourceDetails.setName("TEST01");
82                 resourceDetails.setCsarUUID("orig2G.csar");
83                 resourceDetails.setCsarVersion("1");
84                 resourceDetails.setResourceType(ResourceTypeEnum.VF.name());
85                 // create new resource from Csar
86                 createResource = ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);
87                 BaseRestUtils.checkCreateResponse(createResource);
88                 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
89                 // update scar with new artifacts
90                 path = Paths.get(rootPath + csarFolderPath + "orig2G_update.csar");
91                 data = Files.readAllBytes(path);
92                 payloadData = Base64.encodeBase64String(data);
93                 resourceDetails.setDescription("update");
94                 resourceDetails.setCsarVersion("2");
95                 updateResource = ResourceRestUtils.updateResource(resourceDetails, sdncModifierDetails,
96                                 resourceDetails.getUniqueId());
97                 BaseRestUtils.checkSuccess(updateResource);
98                 resource = ResponseParser.parseToObjectUsingMapper(updateResource.getResponse(), Resource.class);
99         }
100
101         @Test
102         public void createUpdateImportResourceFromCsarWithArtifactsGroupNamingTest() throws Exception {
103                 User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
104                 RestResponse copyRes;
105                 ResourceReqDetails resourceDetails;
106                 RestResponse updateResource;
107                 RestResponse createResource;
108                 Resource resource;
109
110                 // back original scar
111                 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails,
112                                 "VF_RI2_G4_withArtifacts_group_naming_a.csar", "VF_RI2_G4_withArtifacts_group_naming.csar");
113                 BaseRestUtils.checkSuccess(copyRes);
114
115                 resourceDetails = ElementFactory.getDefaultResource();
116                 resourceDetails.setName("TEST01");
117                 resourceDetails.setCsarUUID("VF_RI2_G4_withArtifacts_group_naming.csar");
118                 resourceDetails.setCsarVersion("1");
119                 resourceDetails.setResourceType(ResourceTypeEnum.VF.name());
120                 // create new resource from Csar
121                 createResource = ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);
122                 BaseRestUtils.checkCreateResponse(createResource);
123                 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
124                 List<GroupDefinition> groups = resource.getGroups();
125                 assertTrue(groups != null && groups.size() == 6);
126                 assertTrue(groups.stream()
127                                 .filter(g -> g.getType().equals(Constants.DEFAULT_GROUP_VF_MODULE)
128                                                 && !Pattern.compile(Constants.MODULE_NEW_NAME_PATTERN).matcher(g.getName()).matches())
129                                 .count() == 0);
130                 // update scar
131                 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails,
132                                 "VF_RI2_G4_withArtifacts_group_naming_delete_update.csar", "VF_RI2_G4_withArtifacts_group_naming.csar");
133                 BaseRestUtils.checkSuccess(copyRes);
134                 resourceDetails.setDescription("BLA BLA BLA");
135                 resourceDetails.setCsarVersion("2");
136                 updateResource = ResourceRestUtils.updateResource(resourceDetails, sdncModifierDetails,
137                                 resourceDetails.getUniqueId());
138                 BaseRestUtils.checkSuccess(updateResource);
139                 resource = ResponseParser.parseToObjectUsingMapper(updateResource.getResponse(), Resource.class);
140                 groups = resource.getGroups();
141                 assertTrue(groups != null && groups.size() == 5);
142                 // back original scar
143                 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails,
144                                 "VF_RI2_G4_withArtifacts_group_naming_a.csar", "VF_RI2_G4_withArtifacts_group_naming.csar");
145                 BaseRestUtils.checkSuccess(copyRes);
146                 resourceDetails.setDescription("BLA BLA BLA");
147                 resourceDetails.setCsarVersion("3");
148                 updateResource = ResourceRestUtils.updateResource(resourceDetails, sdncModifierDetails,
149                                 resourceDetails.getUniqueId());
150                 BaseRestUtils.checkSuccess(updateResource);
151                 resource = ResponseParser.parseToObjectUsingMapper(updateResource.getResponse(), Resource.class);
152                 groups = resource.getGroups();
153                 assertTrue(groups != null && groups.size() == 6);
154                 assertTrue(groups.stream()
155                                 .filter(g -> g.getType().equals(Constants.DEFAULT_GROUP_VF_MODULE)
156                                                 && !Pattern.compile(Constants.MODULE_NEW_NAME_PATTERN).matcher(g.getName()).matches())
157                                 .count() == 0);
158         }
159
160         @Test
161         public void createUpdateDeleteAllRequiredArtifactsTest() throws Exception {
162                 User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
163                 RestResponse copyRes;
164                 ResourceReqDetails resourceDetails;
165                 RestResponse updateResource;
166                 RestResponse createResource;
167                 Resource resource;
168                 String artifactName = "heatnested7";
169
170                 ImportReqDetails resourceDetails0 = ElementFactory.getDefaultImportResource();
171                 createResource = importUserDefinedNodeType(userDefinedNodeYaml, sdncModifierDetails, resourceDetails0);
172                 BaseRestUtils.checkCreateResponse(createResource);
173                 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
174
175                 // back original scar
176                 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails, "orig2GV001_a.csar", "orig2GV001.csar");
177                 BaseRestUtils.checkSuccess(copyRes);
178
179                 resourceDetails = ElementFactory.getDefaultResource();
180                 resourceDetails.setName("TEST01");
181                 resourceDetails.setCsarUUID("orig2GV001.csar");
182                 resourceDetails.setCsarVersion("1");
183                 resourceDetails.setResourceType(ResourceTypeEnum.VF.name());
184                 // create new resource from Csar
185                 createResource = ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);
186
187                 BaseRestUtils.checkCreateResponse(createResource);
188                 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
189                 assertTrue(resource.getDeploymentArtifacts().get(artifactName).getRequiredArtifacts().size() == 2);
190                 List<GroupDefinition> groups = resource.getGroups();
191                 // update scar
192                 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails,
193                                 "orig2GV006-remove-all-nested-artifacts.csar", "orig2GV001.csar");
194                 BaseRestUtils.checkSuccess(copyRes);
195                 resourceDetails.setDescription("BLA BLA BLA");
196                 resourceDetails.setCsarVersion("2");
197                 updateResource = ResourceRestUtils.updateResource(resourceDetails, sdncModifierDetails,
198                                 resourceDetails.getUniqueId());
199                 BaseRestUtils.checkSuccess(updateResource);
200                 resource = ResponseParser.parseToObjectUsingMapper(updateResource.getResponse(), Resource.class);
201                 assertTrue(resource.getDeploymentArtifacts().get(artifactName).getRequiredArtifacts().size() == 0);
202                 groups = resource.getGroups();
203                 // back original scar
204                 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails, "orig2GV001_a.csar", "orig2GV001.csar");
205                 BaseRestUtils.checkSuccess(copyRes);
206         }
207
208         // First create from orig2GV006-remove-all-nested-artifacts.csar (without
209         // requiredArtifact)
210         // Submit for testing
211         // Login as tester -> Certification
212         // Login as designer
213         // then update to orig2GV008-change-nested-oam-fileContent.csar (with
214         // requiredArtifact)
215         // Expected: requiredArtifact: ["hot-nimbus-psm_v1.0.yaml",
216         // "hot-nimbus-swift-container_v1.0.yaml"]
217         // Actual: no requiredArtifact
218         @Test
219         public void createUpdateAddRequiredArtifactsTest() throws Exception {
220                 User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
221                 RestResponse copyRes;
222                 ResourceReqDetails resourceDetails;
223                 RestResponse updateResource;
224                 RestResponse createResource;
225                 Resource resource;
226                 String artifactName = "heatnested7";
227
228                 ImportReqDetails resourceDetails0 = ElementFactory.getDefaultImportResource();
229                 createResource = importUserDefinedNodeType(userDefinedNodeYaml, sdncModifierDetails, resourceDetails0);
230                 BaseRestUtils.checkCreateResponse(createResource);
231                 createResource = LifecycleRestUtils.certifyResource(resourceDetails0);
232                 BaseRestUtils.checkSuccess(createResource);
233
234                 // back original scar
235                 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails,
236                                 "orig2GV006-remove-all-nested-artifacts.csar", "orig2GV001.csar");
237                 BaseRestUtils.checkSuccess(copyRes);
238
239                 resourceDetails = ElementFactory.getDefaultResource();
240                 resourceDetails.setName("TEST01");
241                 resourceDetails.setCsarUUID("orig2GV001.csar");
242                 resourceDetails.setCsarVersion("1");
243                 resourceDetails.setResourceType(ResourceTypeEnum.VF.name());
244                 // create new resource from Csar
245                 createResource = ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);
246                 BaseRestUtils.checkCreateResponse(createResource);
247                 createResource = LifecycleRestUtils.certifyResource(resourceDetails);
248                 BaseRestUtils.checkSuccess(createResource);
249
250                 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
251                 assertTrue(resource.getDeploymentArtifacts().get(artifactName).getRequiredArtifacts().size() == 0);
252                 List<GroupDefinition> groups = resource.getGroups();
253                 // update scar
254                 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails,
255                                 "orig2GV008-change-nested-oam-fileContent.csar", "orig2GV001.csar");
256                 BaseRestUtils.checkSuccess(copyRes);
257                 resourceDetails.setDescription("BLA BLA BLA");
258                 resourceDetails.setCsarVersion("2");
259                 updateResource = ResourceRestUtils.updateResource(resourceDetails, sdncModifierDetails,
260                                 resourceDetails.getUniqueId());
261                 BaseRestUtils.checkSuccess(updateResource);
262                 resource = ResponseParser.parseToObjectUsingMapper(updateResource.getResponse(), Resource.class);
263                 assertTrue(resource.getDeploymentArtifacts().get(artifactName).getRequiredArtifacts().size() == 2);
264                 groups = resource.getGroups();
265                 // back original scar
266                 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails, "orig2GV001_a.csar", "orig2GV001.csar");
267                 BaseRestUtils.checkSuccess(copyRes);
268         }
269
270         private RestResponse importUserDefinedNodeType(String payloadName, User sdncModifierDetails,
271                         ImportReqDetails resourceDetails) throws Exception {
272
273                 Path path = Paths.get(rootPath + csarFolderPath + payloadName);
274                 byte[] data = Files.readAllBytes(path);
275                 String payloadData = Base64.encodeBase64String(data);
276                 resourceDetails.setPayloadData(payloadData);
277
278                 resourceDetails.setPayloadName(payloadName);
279                 resourceDetails.setResourceType(ResourceTypeEnum.VFC.name());
280                 return ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);
281         }
282
283 }