1 package org.openecomp.sdc.ci.tests.execute.interfaceoperation;
3 import static org.testng.AssertJUnit.fail;
5 import com.fasterxml.jackson.annotation.JsonInclude;
6 import com.fasterxml.jackson.databind.ObjectMapper;
8 import java.util.HashMap;
11 import fj.data.Either;
12 import org.apache.commons.collections4.CollectionUtils;
13 import org.junit.Rule;
14 import org.junit.rules.TestName;
15 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
16 import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
17 import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition;
18 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
19 import org.openecomp.sdc.be.model.InputDefinition;
20 import org.openecomp.sdc.be.model.InterfaceDefinition;
21 import org.openecomp.sdc.be.model.Operation;
22 import org.openecomp.sdc.be.model.PropertyDefinition;
23 import org.openecomp.sdc.be.model.Resource;
24 import org.openecomp.sdc.be.model.Service;
25 import org.openecomp.sdc.be.model.User;
26 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
27 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
28 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
29 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
30 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
31 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
32 import org.openecomp.sdc.ci.tests.utils.rest.InterfaceOperationsRestUtils;
33 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
34 import org.testng.Assert;
35 import org.testng.annotations.BeforeClass;
36 import org.testng.annotations.Test;
38 public class InterfaceOperationsTest extends ComponentBaseTest {
41 private static final TestName name = new TestName();
42 private static final String INTERFACES = "interfaces";
43 private static final String TOSCA_PRESENTATION = "toscaPresentation";
44 private static final User user = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
45 private static final String WORKFLOW_ID_STR = "WorkflowId";
46 private static final String WORKFLOW_VERSION_ID_STR = "workflowVersionId";
47 private static final String WORKFLOW_ASSOCIATION_TYPE_NONE_STR = "NONE";
49 private static Service service;
50 private static Resource resource;
51 private static Resource pnfResource;
52 private String resourceInterfaceUniqueId;
53 private String resourceOperationUniqueId;
54 private String pnfResourceInterfaceUniqueId;
55 private String pnfResourceOperationUniqueId;
56 private String serviceInterfaceUniqueId;
57 private String serviceOperationUniqueId;
59 public InterfaceOperationsTest() {
60 super(name, InterfaceOperationsTest.class.getName());
64 public static void init() throws Exception {
65 // Create default service
66 Either<Service, RestResponse> createDefaultServiceEither =
67 AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true);
68 if (createDefaultServiceEither.isRight()) {
69 fail("Error creating default service");
71 service = createDefaultServiceEither.left().value();
73 // Create default resource
74 Either<Resource, RestResponse> createDefaultResourceEither =
75 AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true);
76 if (createDefaultResourceEither.isRight()) {
77 fail("Error creating default resource");
79 resource = createDefaultResourceEither.left().value();
81 // Create default PNF resource
82 Either<Resource, RestResponse> createDefaultPNFResourceEither =
83 AtomicOperationUtils.createResourceByType(ResourceTypeEnum.PNF, UserRoleEnum.DESIGNER, true);
84 if (createDefaultPNFResourceEither.isRight()) {
85 fail("Error creating default pnf resource");
87 pnfResource = createDefaultPNFResourceEither.left().value();
90 public Map<String, Object> buildInterfaceDefinitionForResource(Resource resource,
91 String resourceInterfaceUniqueId,
92 String resourceOperationUniqueId) {
93 Operation operation = new Operation();
94 operation.setName("TestOperationOnResource");
95 operation.setWorkflowId(WORKFLOW_ID_STR);
96 operation.setWorkflowVersionId(WORKFLOW_VERSION_ID_STR);
97 operation.setWorkflowAssociationType(WORKFLOW_ASSOCIATION_TYPE_NONE_STR);
98 if(CollectionUtils.isNotEmpty(resource.getInputs())){
99 PropertyDefinition property =
100 resource.getInputs().stream().filter(a -> a.getName().equalsIgnoreCase("nf_naming")).findFirst()
101 .orElse(new InputDefinition());
102 ListDataDefinition<OperationInputDefinition> operationInputDefinitionList = new ListDataDefinition<>();
103 operationInputDefinitionList.add(createOperationInputDefinition("TestInput1", property.getUniqueId()));
104 operation.setInputs(operationInputDefinitionList);
106 ListDataDefinition<OperationOutputDefinition> operationOutputDefinitionList = new ListDataDefinition<>();
107 operationOutputDefinitionList.add(createOperationOutputDefinition("TestOutput1"));
108 operation.setOutputs(operationOutputDefinitionList);
109 return buildInterfaceDefinitionMap(operation, "TestInterface", resourceInterfaceUniqueId,
110 resourceOperationUniqueId);
113 private Map<String, Object> buildInterfaceDefinitionOfGlobalTypeForResource(Resource resource) {
114 Operation operation = new Operation();
115 operation.setName("create");
116 operation.setWorkflowId(WORKFLOW_ID_STR);
117 operation.setWorkflowVersionId(WORKFLOW_VERSION_ID_STR);
118 operation.setWorkflowAssociationType("NONE");
119 if(CollectionUtils.isNotEmpty(resource.getInputs())){
120 PropertyDefinition property =
121 resource.getInputs().stream().filter(a -> a.getName().equalsIgnoreCase("nf_naming")).findFirst()
122 .orElse(new InputDefinition());
123 ListDataDefinition<OperationInputDefinition> operationInputDefinitionList = new ListDataDefinition<>();
124 operationInputDefinitionList.add(createOperationInputDefinition("TestInput1", property.getUniqueId()));
125 operation.setInputs(operationInputDefinitionList);
127 ListDataDefinition<OperationOutputDefinition> operationOutputDefinitionList = new ListDataDefinition<>();
128 operationOutputDefinitionList.add(createOperationOutputDefinition("TestOutput1"));
129 operation.setOutputs(operationOutputDefinitionList);
130 return buildInterfaceDefinitionMap(operation, "tosca.interfaces.node.lifecycle.Standard",
131 resourceInterfaceUniqueId, resourceOperationUniqueId);
134 private OperationInputDefinition createOperationInputDefinition(String name, String inputId) {
135 OperationInputDefinition operationInputDefinition = new OperationInputDefinition();
136 operationInputDefinition.setName(name);
137 operationInputDefinition.setInputId(inputId);
138 operationInputDefinition.setRequired(true);
139 operationInputDefinition.setType("string");
140 return operationInputDefinition;
143 private OperationOutputDefinition createOperationOutputDefinition(String name) {
144 OperationOutputDefinition operationOutputDefinition = new OperationOutputDefinition();
145 operationOutputDefinition.setName(name);
146 operationOutputDefinition.setRequired(true);
147 operationOutputDefinition.setType("string");
148 return operationOutputDefinition;
151 private Map<String, Object> buildInterfaceDefinitionMap(Operation operation, String interfaceType,
153 String operationId) {
154 if (operationId != null) {
155 operation.setUniqueId(operationId);
157 Map<String, Operation> operationMap = new HashMap<>();
158 operationMap.put(operation.getName(), operation);
160 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
161 interfaceDefinition.setType(interfaceType);
162 interfaceDefinition.setOperationsMap(operationMap);
163 if (interfaceId != null) {
164 interfaceDefinition.setUniqueId(interfaceId);
166 interfaceDefinition.setOperationsMap(operationMap);
168 Map<String, Object> interfaceDefAsMap = getObjectAsMap(interfaceDefinition);
169 Map<String, Object> interfaceMap = new HashMap<>();
170 interfaceMap.put(interfaceDefinition.getType(), interfaceDefAsMap);
171 Map<String, Object> outerMap = new HashMap<>();
172 outerMap.put(INTERFACES, interfaceMap);
176 private static Map<String, Object> getObjectAsMap(Object obj) {
177 ObjectMapper objectMapper = new ObjectMapper();
178 if (obj instanceof InterfaceDefinition) {
179 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
181 Map<String, Object> objectAsMap =
182 obj instanceof Map ? (Map<String, Object>) obj : objectMapper.convertValue(obj, Map.class);
183 objectAsMap.remove(TOSCA_PRESENTATION);
187 public Map<String, Object> buildInterfaceDefinitionForService() {
188 Operation operation = new Operation();
189 operation.setName("TestOperationOnService");
190 operation.setWorkflowId(WORKFLOW_ID_STR);
191 operation.setWorkflowVersionId(WORKFLOW_VERSION_ID_STR);
192 operation.setWorkflowAssociationType("NONE");
193 return buildInterfaceDefinitionMap(operation, "TestInterface", serviceInterfaceUniqueId,
194 serviceOperationUniqueId);
198 public void addInterfaceOperationsOnResource() throws Exception {
199 RestResponse restResponse = InterfaceOperationsRestUtils
200 .addInterfaceOperations(resource,
201 buildInterfaceDefinitionForResource(resource, resourceInterfaceUniqueId,
202 resourceOperationUniqueId), user);
203 logger.info("addInterfaceOperationsOnResource Response Code:" + restResponse.getErrorCode());
204 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
205 String interfaceDefinitionStr = ResponseParser.getListFromJson(restResponse, INTERFACES).get(0).toString();
206 InterfaceDefinition interfaceDefinition =
207 ResponseParser.convertInterfaceDefinitionResponseToJavaObject(interfaceDefinitionStr);
208 resourceInterfaceUniqueId = interfaceDefinition.getUniqueId();
209 resourceOperationUniqueId = interfaceDefinition.getOperationsMap().keySet().stream().findFirst().orElse(null);
212 @Test(dependsOnMethods = "addInterfaceOperationsOnResource")
213 public void getInterfaceOperationsFromResource() throws Exception {
214 RestResponse restResponse = InterfaceOperationsRestUtils
215 .getInterfaceOperations(resource, resourceInterfaceUniqueId,
216 resourceOperationUniqueId, user);
217 logger.info("getInterfaceOperationsFromResource Response Code:" + restResponse.getErrorCode());
218 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
221 @Test(dependsOnMethods = "getInterfaceOperationsFromResource")
222 public void updateInterfaceOperationsOnResource() throws Exception {
223 RestResponse restResponse = InterfaceOperationsRestUtils
224 .updateInterfaceOperations(resource,
225 buildInterfaceDefinitionForResource(resource, resourceInterfaceUniqueId, resourceOperationUniqueId),
227 logger.info("updateInterfaceOperationsOnResource Response Code:" + restResponse.getErrorCode());
228 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
231 @Test(dependsOnMethods = "updateInterfaceOperationsOnResource")
232 public void deleteInterfaceOperationsFromResource() throws Exception {
233 RestResponse restResponse = InterfaceOperationsRestUtils
234 .deleteInterfaceOperations(resource, resourceInterfaceUniqueId,
235 resourceOperationUniqueId, user);
236 logger.info("deleteInterfaceOperationsFromResource Response Code:" + restResponse.getErrorCode());
237 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
241 public void addInterfaceOperationsOnPNFResource() throws Exception {
242 RestResponse restResponse = InterfaceOperationsRestUtils
243 .addInterfaceOperations(pnfResource, buildInterfaceDefinitionForResource(pnfResource, pnfResourceInterfaceUniqueId,
244 pnfResourceOperationUniqueId), user);
245 logger.info("addInterfaceOperationsOnPNFResource Response Code:" + restResponse.getErrorCode());
246 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
247 String interfaceDefinitionStr = ResponseParser.getListFromJson(restResponse, INTERFACES).get(0).toString();
248 InterfaceDefinition interfaceDefinition =
249 ResponseParser.convertInterfaceDefinitionResponseToJavaObject(interfaceDefinitionStr);
250 pnfResourceInterfaceUniqueId = interfaceDefinition.getUniqueId();
251 pnfResourceOperationUniqueId =
252 interfaceDefinition.getOperationsMap().keySet().stream().findFirst().orElse(null);
255 @Test(dependsOnMethods = "addInterfaceOperationsOnPNFResource")
256 public void getInterfaceOperationsFromPNFResource() throws Exception {
257 RestResponse restResponse = InterfaceOperationsRestUtils
258 .getInterfaceOperations(pnfResource, pnfResourceInterfaceUniqueId,
259 pnfResourceOperationUniqueId, user);
260 logger.info("getInterfaceOperationsFromPNFResource Response Code:" + restResponse.getErrorCode());
261 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
264 @Test(dependsOnMethods = "getInterfaceOperationsFromPNFResource")
265 public void updateInterfaceOperationsOnPNFResource() throws Exception {
266 RestResponse restResponse = InterfaceOperationsRestUtils
267 .updateInterfaceOperations(pnfResource,
268 buildInterfaceDefinitionForResource(pnfResource, pnfResourceInterfaceUniqueId,
269 pnfResourceOperationUniqueId), user);
270 logger.info("updateInterfaceOperationsOnPNFResource Response Code:" + restResponse.getErrorCode());
271 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
274 @Test(dependsOnMethods = "updateInterfaceOperationsOnPNFResource")
275 public void deleteInterfaceOperationsFromPNFResource() throws Exception {
276 RestResponse restResponse = InterfaceOperationsRestUtils
277 .deleteInterfaceOperations(pnfResource, pnfResourceInterfaceUniqueId,
278 pnfResourceOperationUniqueId, user);
279 logger.info("deleteInterfaceOperationsFromPNFResource Response Code:" + restResponse.getErrorCode());
280 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
284 public void addInterfaceOperationsOnService() throws Exception {
285 RestResponse restResponse = InterfaceOperationsRestUtils
286 .addInterfaceOperations(service, buildInterfaceDefinitionForService(),
288 logger.info("addInterfaceOperationsOnService Response Code:" + restResponse.getErrorCode());
289 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
290 String interfaceDefinitionStr = ResponseParser.getListFromJson(restResponse, INTERFACES).get(0).toString();
291 InterfaceDefinition interfaceDefinition =
292 ResponseParser.convertInterfaceDefinitionResponseToJavaObject(interfaceDefinitionStr);
293 serviceInterfaceUniqueId = interfaceDefinition.getUniqueId();
294 serviceOperationUniqueId = interfaceDefinition.getOperationsMap().keySet().stream().findFirst().orElse(null);
297 @Test(dependsOnMethods = "addInterfaceOperationsOnService")
298 public void getInterfaceOperationsFromService() throws Exception {
299 RestResponse restResponse = InterfaceOperationsRestUtils
300 .getInterfaceOperations(service, serviceInterfaceUniqueId,
301 serviceOperationUniqueId, user);
302 logger.info("getInterfaceOperationsFromService Response Code:" + restResponse.getErrorCode());
303 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
306 @Test(dependsOnMethods = "getInterfaceOperationsFromService")
307 public void updateInterfaceOperationsOnService() throws Exception {
308 RestResponse restResponse = InterfaceOperationsRestUtils
309 .updateInterfaceOperations(service, buildInterfaceDefinitionForService(),
311 logger.info("updateInterfaceOperations Response Code:" + restResponse.getErrorCode());
312 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
315 @Test(dependsOnMethods = "updateInterfaceOperationsOnService")
316 public void deleteInterfaceOperationsFromService() throws Exception {
317 RestResponse restResponse = InterfaceOperationsRestUtils
318 .deleteInterfaceOperations(service, serviceInterfaceUniqueId,
319 serviceOperationUniqueId, user);
320 logger.info("deleteInterfaceOperations Response Code:" + restResponse.getErrorCode());
321 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
325 public void addInterfaceOperationsOfGlobalTypeOnResource() throws Exception {
326 RestResponse restResponse =
327 InterfaceOperationsRestUtils.addInterfaceOperations(resource,
328 buildInterfaceDefinitionOfGlobalTypeForResource(resource), user);
330 logger.info("addInterfaceOperationsOnResource Response Code:" + restResponse.getErrorCode());
331 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
335 public void addInterfaceOperationsOfGlobalTypeOnPNFResource() throws Exception {
336 RestResponse restResponse =
337 InterfaceOperationsRestUtils.addInterfaceOperations(pnfResource,
338 buildInterfaceDefinitionOfGlobalTypeForResource(pnfResource), user);
340 logger.info("addInterfaceOperationsOnPNFResource Response Code:" + restResponse.getErrorCode());
341 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
342 String interfaceDefinitionStr = ResponseParser.getListFromJson(restResponse, INTERFACES).get(0).toString();
343 InterfaceDefinition interfaceDefinition =
344 ResponseParser.convertInterfaceDefinitionResponseToJavaObject(interfaceDefinitionStr);