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 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;
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;
50 import static org.testng.AssertJUnit.assertTrue;
52 public class ImportUpdateResourseCsarTest extends ComponentBaseTest {
54 public static TestName name = new TestName();
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/";
61 public ImportUpdateResourseCsarTest() {
62 super(name, ImportUpdateResourseCsarTest.class.getName());
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);
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;
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);
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())
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())
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;
166 String artifactName = "heatnested7";
168 ImportReqDetails resourceDetails0 = ElementFactory.getDefaultImportResource();
169 createResource = importUserDefinedNodeType(userDefinedNodeYaml, sdncModifierDetails, resourceDetails0);
170 BaseRestUtils.checkCreateResponse(createResource);
171 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
173 // back original scar
174 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails, "orig2GV001_a.csar", "orig2GV001.csar");
175 BaseRestUtils.checkSuccess(copyRes);
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);
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();
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);
206 // First create from orig2GV006-remove-all-nested-artifacts.csar (without
208 // Submit for testing
209 // Login as tester -> Certification
211 // then update to orig2GV008-change-nested-oam-fileContent.csar (with
213 // Expected: requiredArtifact: ["hot-nimbus-psm_v1.0.yaml",
214 // "hot-nimbus-swift-container_v1.0.yaml"]
215 // Actual: no requiredArtifact
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;
224 String artifactName = "heatnested7";
226 ImportReqDetails resourceDetails0 = ElementFactory.getDefaultImportResource();
227 createResource = importUserDefinedNodeType(userDefinedNodeYaml, sdncModifierDetails, resourceDetails0);
228 BaseRestUtils.checkCreateResponse(createResource);
229 createResource = LifecycleRestUtils.certifyResource(resourceDetails0);
230 BaseRestUtils.checkSuccess(createResource);
232 // back original scar
233 copyRes = ImportCsarResourceTest.copyCsarRest(sdncModifierDetails,
234 "orig2GV006-remove-all-nested-artifacts.csar", "orig2GV001.csar");
235 BaseRestUtils.checkSuccess(copyRes);
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);
248 resource = ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
249 assertTrue(resource.getDeploymentArtifacts().get(artifactName).getRequiredArtifacts().size() == 0);
250 List<GroupDefinition> groups = resource.getGroups();
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);
268 private RestResponse importUserDefinedNodeType(String payloadName, User sdncModifierDetails,
269 ImportReqDetails resourceDetails) throws Exception {
271 Path path = Paths.get(rootPath + csarFolderPath + payloadName);
272 byte[] data = Files.readAllBytes(path);
273 String payloadData = Base64.encodeBase64String(data);
274 resourceDetails.setPayloadData(payloadData);
276 resourceDetails.setPayloadName(payloadName);
277 resourceDetails.setResourceType(ResourceTypeEnum.VFC.name());
278 return ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);