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;
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;
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;
51 import com.google.gson.Gson;
53 public class ImportUpdateResourseCsarTest extends ComponentBaseTest {
55 public static TestName name = new TestName();
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/";
62 public ImportUpdateResourseCsarTest() {
63 super(name, ImportUpdateResourseCsarTest.class.getName());
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);
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;
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);
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())
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())
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;
167 String artifactName = "heatnested7";
169 ImportReqDetails resourceDetails0 = ElementFactory.getDefaultImportResource();
170 createResource = importUserDefinedNodeType(userDefinedNodeYaml, sdncModifierDetails, resourceDetails0);
171 BaseRestUtils.checkCreateResponse(createResource);
172 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
174 // back original scar
175 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails, "orig2GV001_a.csar", "orig2GV001.csar");
176 BaseRestUtils.checkSuccess(copyRes);
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);
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();
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);
207 // First create from orig2GV006-remove-all-nested-artifacts.csar (without
209 // Submit for testing
210 // Login as tester -> Certification
212 // then update to orig2GV008-change-nested-oam-fileContent.csar (with
214 // Expected: requiredArtifact: ["hot-nimbus-psm_v1.0.yaml",
215 // "hot-nimbus-swift-container_v1.0.yaml"]
216 // Actual: no requiredArtifact
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;
225 String artifactName = "heatnested7";
227 ImportReqDetails resourceDetails0 = ElementFactory.getDefaultImportResource();
228 createResource = importUserDefinedNodeType(userDefinedNodeYaml, sdncModifierDetails, resourceDetails0);
229 BaseRestUtils.checkCreateResponse(createResource);
230 createResource = LifecycleRestUtils.certifyResource(resourceDetails0);
231 BaseRestUtils.checkSuccess(createResource);
233 // back original scar
234 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails,
235 "orig2GV006-remove-all-nested-artifacts.csar", "orig2GV001.csar");
236 BaseRestUtils.checkSuccess(copyRes);
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);
249 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
250 assertTrue(resource.getDeploymentArtifacts().get(artifactName).getRequiredArtifacts().size() == 0);
251 List<GroupDefinition> groups = resource.getGroups();
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);
269 private RestResponse importUserDefinedNodeType(String payloadName, User sdncModifierDetails,
270 ImportReqDetails resourceDetails) throws Exception {
272 Path path = Paths.get(rootPath + csarFolderPath + payloadName);
273 byte[] data = Files.readAllBytes(path);
274 String payloadData = Base64.encodeBase64String(data);
275 resourceDetails.setPayloadData(payloadData);
277 resourceDetails.setPayloadName(payloadName);
278 resourceDetails.setResourceType(ResourceTypeEnum.VFC.name());
279 return ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);