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