2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.ci.tests.execute.imports;
23 import static org.testng.AssertJUnit.assertTrue;
24 import static org.testng.AssertJUnit.assertEquals;
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;
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;
52 import com.google.gson.Gson;
54 public class ImportUpdateResourseCsarTest extends ComponentBaseTest {
56 public static TestName name = new TestName();
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/";
63 public ImportUpdateResourseCsarTest() {
64 super(name, ImportUpdateResourseCsarTest.class.getName());
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);
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;
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);
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())
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())
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;
168 String artifactName = "heatnested7";
170 ImportReqDetails resourceDetails0 = ElementFactory.getDefaultImportResource();
171 createResource = importUserDefinedNodeType(userDefinedNodeYaml, sdncModifierDetails, resourceDetails0);
172 BaseRestUtils.checkCreateResponse(createResource);
173 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
175 // back original scar
176 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails, "orig2GV001_a.csar", "orig2GV001.csar");
177 BaseRestUtils.checkSuccess(copyRes);
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);
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();
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);
208 // First create from orig2GV006-remove-all-nested-artifacts.csar (without
210 // Submit for testing
211 // Login as tester -> Certification
213 // then update to orig2GV008-change-nested-oam-fileContent.csar (with
215 // Expected: requiredArtifact: ["hot-nimbus-psm_v1.0.yaml",
216 // "hot-nimbus-swift-container_v1.0.yaml"]
217 // Actual: no requiredArtifact
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;
226 String artifactName = "heatnested7";
228 ImportReqDetails resourceDetails0 = ElementFactory.getDefaultImportResource();
229 createResource = importUserDefinedNodeType(userDefinedNodeYaml, sdncModifierDetails, resourceDetails0);
230 BaseRestUtils.checkCreateResponse(createResource);
231 createResource = LifecycleRestUtils.certifyResource(resourceDetails0);
232 BaseRestUtils.checkSuccess(createResource);
234 // back original scar
235 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails,
236 "orig2GV006-remove-all-nested-artifacts.csar", "orig2GV001.csar");
237 BaseRestUtils.checkSuccess(copyRes);
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);
250 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
251 assertTrue(resource.getDeploymentArtifacts().get(artifactName).getRequiredArtifacts().size() == 0);
252 List<GroupDefinition> groups = resource.getGroups();
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);
270 private RestResponse importUserDefinedNodeType(String payloadName, User sdncModifierDetails,
271 ImportReqDetails resourceDetails) throws Exception {
273 Path path = Paths.get(rootPath + csarFolderPath + payloadName);
274 byte[] data = Files.readAllBytes(path);
275 String payloadData = Base64.encodeBase64String(data);
276 resourceDetails.setPayloadData(payloadData);
278 resourceDetails.setPayloadName(payloadName);
279 resourceDetails.setResourceType(ResourceTypeEnum.VFC.name());
280 return ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);