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