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.junit.Rule;
13 import org.junit.rules.TestName;
14 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
15 import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
16 import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition;
17 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
18 import org.openecomp.sdc.be.model.InputDefinition;
19 import org.openecomp.sdc.be.model.InterfaceDefinition;
20 import org.openecomp.sdc.be.model.Operation;
21 import org.openecomp.sdc.be.model.PropertyDefinition;
22 import org.openecomp.sdc.be.model.Resource;
23 import org.openecomp.sdc.be.model.Service;
24 import org.openecomp.sdc.be.model.User;
25 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
26 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
27 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
28 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
29 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
30 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
31 import org.openecomp.sdc.ci.tests.utils.rest.InterfaceOperationsRestUtils;
32 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
33 import org.testng.Assert;
34 import org.testng.annotations.BeforeClass;
35 import org.testng.annotations.Test;
37 public class InterfaceOperationsTest extends ComponentBaseTest {
40 private static final TestName name = new TestName();
41 private static final String INTERFACES = "interfaces";
42 private static final String TOSCA_PRESENTATION = "toscaPresentation";
43 private static final User user = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
45 private static Service service;
46 private static Resource resource;
47 private static Resource pnfResource;
48 private String resourceInterfaceUniqueId;
49 private String resourceOperationUniqueId;
50 private String pnfResourceInterfaceUniqueId;
51 private String pnfResourceOperationUniqueId;
52 private String serviceInterfaceUniqueId;
53 private String serviceOperationUniqueId;
55 public InterfaceOperationsTest() {
56 super(name, InterfaceOperationsTest.class.getName());
60 public static void init() throws Exception {
61 // Create default service
62 Either<Service, RestResponse> createDefaultServiceEither =
63 AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true);
64 if (createDefaultServiceEither.isRight()) {
65 fail("Error creating default service");
67 service = createDefaultServiceEither.left().value();
69 // Create default resource
70 Either<Resource, RestResponse> createDefaultResourceEither =
71 AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true);
72 if (createDefaultResourceEither.isRight()) {
73 fail("Error creating default resource");
75 resource = createDefaultResourceEither.left().value();
77 // Create default PNF resource
78 Either<Resource, RestResponse> createDefaultPNFResourceEither =
79 AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true);
80 if (createDefaultPNFResourceEither.isRight()) {
81 fail("Error creating default pnf resource");
83 pnfResource = createDefaultPNFResourceEither.left().value();
86 private Map<String, Object> buildInterfaceDefinitionForResource(String resourceInterfaceUniqueId,
87 String resourceOperationUniqueId) {
88 Operation operation = new Operation();
89 operation.setName("TestOperationOnResource");
90 operation.setWorkflowId("WorkflowId");
91 operation.setWorkflowVersionId("workflowVersionId");
92 operation.setWorkflowAssociationType("NONE");
93 PropertyDefinition property =
94 resource.getInputs().stream().filter(a -> a.getName().equalsIgnoreCase("nf_naming")).findFirst()
95 .orElse(new InputDefinition());
96 ListDataDefinition<OperationInputDefinition> operationInputDefinitionList = new ListDataDefinition<>();
97 operationInputDefinitionList.add(createOperationInputDefinition("TestInput1", property.getUniqueId()));
98 operation.setInputs(operationInputDefinitionList);
99 ListDataDefinition<OperationOutputDefinition> operationOutputDefinitionList = new ListDataDefinition<>();
100 operationOutputDefinitionList.add(createOperationOutputDefinition("TestOutput1"));
101 operation.setOutputs(operationOutputDefinitionList);
102 return buildInterfaceDefinitionMap(operation, "TestInterface", resourceInterfaceUniqueId,
103 resourceOperationUniqueId);
106 private Map<String, Object> buildInterfaceDefinitionOfGlobalTypeForResource(Resource resource) {
107 Operation operation = new Operation();
108 operation.setName("create");
109 operation.setWorkflowId("WorkflowId");
110 operation.setWorkflowVersionId("workflowVersionId");
111 operation.setWorkflowAssociationType("NONE");
112 PropertyDefinition property =
113 resource.getInputs().stream().filter(a -> a.getName().equalsIgnoreCase("nf_naming")).findFirst()
114 .orElse(new InputDefinition());
115 ListDataDefinition<OperationInputDefinition> operationInputDefinitionList = new ListDataDefinition<>();
116 operationInputDefinitionList.add(createOperationInputDefinition("TestInput1", property.getUniqueId()));
117 operation.setInputs(operationInputDefinitionList);
118 ListDataDefinition<OperationOutputDefinition> operationOutputDefinitionList = new ListDataDefinition<>();
119 operationOutputDefinitionList.add(createOperationOutputDefinition("TestOutput1"));
120 operation.setOutputs(operationOutputDefinitionList);
121 return buildInterfaceDefinitionMap(operation, "tosca.interfaces.node.lifecycle.Standard",
122 resourceInterfaceUniqueId, resourceOperationUniqueId);
125 private OperationInputDefinition createOperationInputDefinition(String name, String inputId) {
126 OperationInputDefinition operationInputDefinition = new OperationInputDefinition();
127 operationInputDefinition.setName(name);
128 operationInputDefinition.setInputId(inputId);
129 operationInputDefinition.setRequired(true);
130 operationInputDefinition.setType("string");
131 return operationInputDefinition;
134 private OperationOutputDefinition createOperationOutputDefinition(String name) {
135 OperationOutputDefinition operationOutputDefinition = new OperationOutputDefinition();
136 operationOutputDefinition.setName(name);
137 operationOutputDefinition.setRequired(true);
138 operationOutputDefinition.setType("string");
139 return operationOutputDefinition;
142 private Map<String, Object> buildInterfaceDefinitionMap(Operation operation, String interfaceType,
144 String operationId) {
145 if (operationId != null) {
146 operation.setUniqueId(operationId);
148 Map<String, Operation> operationMap = new HashMap<>();
149 operationMap.put(operation.getName(), operation);
151 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
152 interfaceDefinition.setType(interfaceType);
153 interfaceDefinition.setOperationsMap(operationMap);
154 if (interfaceId != null) {
155 interfaceDefinition.setUniqueId(interfaceId);
157 interfaceDefinition.setOperationsMap(operationMap);
159 Map<String, Object> interfaceDefAsMap = getObjectAsMap(interfaceDefinition);
160 Map<String, Object> interfaceMap = new HashMap<>();
161 interfaceMap.put(interfaceDefinition.getType(), interfaceDefAsMap);
162 Map<String, Object> outerMap = new HashMap<>();
163 outerMap.put(INTERFACES, interfaceMap);
167 private static Map<String, Object> getObjectAsMap(Object obj) {
168 ObjectMapper objectMapper = new ObjectMapper();
169 if (obj instanceof InterfaceDefinition) {
170 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
172 Map<String, Object> objectAsMap =
173 obj instanceof Map ? (Map<String, Object>) obj : objectMapper.convertValue(obj, Map.class);
174 objectAsMap.remove(TOSCA_PRESENTATION);
178 private Map<String, Object> buildInterfaceDefinitionForService() {
179 Operation operation = new Operation();
180 operation.setName("TestOperationOnService");
181 operation.setWorkflowId("WorkflowId");
182 operation.setWorkflowVersionId("workflowVersionId");
183 operation.setWorkflowAssociationType("NONE");
184 return buildInterfaceDefinitionMap(operation, "TestInterface", serviceInterfaceUniqueId,
185 serviceOperationUniqueId);
189 public void addInterfaceOperationsOnResource() throws Exception {
190 RestResponse restResponse = InterfaceOperationsRestUtils
191 .addInterfaceOperations(resource,
192 buildInterfaceDefinitionForResource(resourceInterfaceUniqueId, resourceOperationUniqueId),
194 logger.info("addInterfaceOperationsOnResource Response Code:" + restResponse.getErrorCode());
195 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
196 String interfaceDefinitionStr = ResponseParser.getListFromJson(restResponse, INTERFACES).get(0).toString();
197 InterfaceDefinition interfaceDefinition =
198 ResponseParser.convertInterfaceDefinitionResponseToJavaObject(interfaceDefinitionStr);
199 resourceInterfaceUniqueId = interfaceDefinition.getUniqueId();
200 resourceOperationUniqueId = interfaceDefinition.getOperationsMap().keySet().stream().findFirst().orElse(null);
203 @Test(dependsOnMethods = "addInterfaceOperationsOnResource")
204 public void getInterfaceOperationsFromResource() throws Exception {
205 RestResponse restResponse = InterfaceOperationsRestUtils
206 .getInterfaceOperations(resource, resourceInterfaceUniqueId,
207 resourceOperationUniqueId, user);
208 logger.info("getInterfaceOperationsFromResource Response Code:" + restResponse.getErrorCode());
209 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
212 @Test(dependsOnMethods = "getInterfaceOperationsFromResource")
213 public void updateInterfaceOperationsOnResource() throws Exception {
214 RestResponse restResponse = InterfaceOperationsRestUtils
215 .updateInterfaceOperations(resource,
216 buildInterfaceDefinitionForResource(resourceInterfaceUniqueId, resourceOperationUniqueId),
218 logger.info("updateInterfaceOperationsOnResource Response Code:" + restResponse.getErrorCode());
219 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
222 @Test(dependsOnMethods = "updateInterfaceOperationsOnResource")
223 public void deleteInterfaceOperationsFromResource() throws Exception {
224 RestResponse restResponse = InterfaceOperationsRestUtils
225 .deleteInterfaceOperations(resource, resourceInterfaceUniqueId,
226 resourceOperationUniqueId, user);
227 logger.info("deleteInterfaceOperationsFromResource Response Code:" + restResponse.getErrorCode());
228 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
232 public void addInterfaceOperationsOnPNFResource() throws Exception {
233 RestResponse restResponse = InterfaceOperationsRestUtils
234 .addInterfaceOperations(pnfResource, buildInterfaceDefinitionForResource(pnfResourceInterfaceUniqueId,
235 pnfResourceOperationUniqueId), user);
236 logger.info("addInterfaceOperationsOnPNFResource Response Code:" + restResponse.getErrorCode());
237 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
238 String interfaceDefinitionStr = ResponseParser.getListFromJson(restResponse, INTERFACES).get(0).toString();
239 InterfaceDefinition interfaceDefinition =
240 ResponseParser.convertInterfaceDefinitionResponseToJavaObject(interfaceDefinitionStr);
241 pnfResourceInterfaceUniqueId = interfaceDefinition.getUniqueId();
242 pnfResourceOperationUniqueId =
243 interfaceDefinition.getOperationsMap().keySet().stream().findFirst().orElse(null);
246 @Test(dependsOnMethods = "addInterfaceOperationsOnPNFResource")
247 public void getInterfaceOperationsFromPNFResource() throws Exception {
248 RestResponse restResponse = InterfaceOperationsRestUtils
249 .getInterfaceOperations(pnfResource, pnfResourceInterfaceUniqueId,
250 pnfResourceOperationUniqueId, user);
251 logger.info("getInterfaceOperationsFromPNFResource Response Code:" + restResponse.getErrorCode());
252 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
255 @Test(dependsOnMethods = "getInterfaceOperationsFromPNFResource")
256 public void updateInterfaceOperationsOnPNFResource() throws Exception {
257 RestResponse restResponse = InterfaceOperationsRestUtils
258 .updateInterfaceOperations(pnfResource,
259 buildInterfaceDefinitionForResource(pnfResourceInterfaceUniqueId,
260 pnfResourceOperationUniqueId), user);
261 logger.info("updateInterfaceOperationsOnPNFResource Response Code:" + restResponse.getErrorCode());
262 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
265 @Test(dependsOnMethods = "updateInterfaceOperationsOnPNFResource")
266 public void deleteInterfaceOperationsFromPNFResource() throws Exception {
267 RestResponse restResponse = InterfaceOperationsRestUtils
268 .deleteInterfaceOperations(pnfResource, pnfResourceInterfaceUniqueId,
269 pnfResourceOperationUniqueId, user);
270 logger.info("deleteInterfaceOperationsFromPNFResource Response Code:" + restResponse.getErrorCode());
271 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
275 public void addInterfaceOperationsOnService() throws Exception {
276 RestResponse restResponse = InterfaceOperationsRestUtils
277 .addInterfaceOperations(service, buildInterfaceDefinitionForService(),
279 logger.info("addInterfaceOperationsOnService Response Code:" + restResponse.getErrorCode());
280 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
281 String interfaceDefinitionStr = ResponseParser.getListFromJson(restResponse, INTERFACES).get(0).toString();
282 InterfaceDefinition interfaceDefinition =
283 ResponseParser.convertInterfaceDefinitionResponseToJavaObject(interfaceDefinitionStr);
284 serviceInterfaceUniqueId = interfaceDefinition.getUniqueId();
285 serviceOperationUniqueId = interfaceDefinition.getOperationsMap().keySet().stream().findFirst().orElse(null);
288 @Test(dependsOnMethods = "addInterfaceOperationsOnService")
289 public void getInterfaceOperationsFromService() throws Exception {
290 RestResponse restResponse = InterfaceOperationsRestUtils
291 .getInterfaceOperations(service, serviceInterfaceUniqueId,
292 serviceOperationUniqueId, user);
293 logger.info("getInterfaceOperationsFromService Response Code:" + restResponse.getErrorCode());
294 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
297 @Test(dependsOnMethods = "getInterfaceOperationsFromService")
298 public void updateInterfaceOperationsOnService() throws Exception {
299 RestResponse restResponse = InterfaceOperationsRestUtils
300 .updateInterfaceOperations(service, buildInterfaceDefinitionForService(),
302 logger.info("updateInterfaceOperations Response Code:" + restResponse.getErrorCode());
303 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
306 @Test(dependsOnMethods = "updateInterfaceOperationsOnService")
307 public void deleteInterfaceOperationsFromService() throws Exception {
308 RestResponse restResponse = InterfaceOperationsRestUtils
309 .deleteInterfaceOperations(service, serviceInterfaceUniqueId,
310 serviceOperationUniqueId, user);
311 logger.info("deleteInterfaceOperations Response Code:" + restResponse.getErrorCode());
312 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
316 public void addInterfaceOperationsOfGlobalTypeOnResource() throws Exception {
317 RestResponse restResponse =
318 InterfaceOperationsRestUtils.addInterfaceOperations(resource,
319 buildInterfaceDefinitionOfGlobalTypeForResource(resource), user);
321 logger.info("addInterfaceOperationsOnResource Response Code:" + restResponse.getErrorCode());
322 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
323 String interfaceDefinitionStr = ResponseParser.getListFromJson(restResponse, INTERFACES).get(0).toString();
324 InterfaceDefinition interfaceDefinition =
325 ResponseParser.convertInterfaceDefinitionResponseToJavaObject(interfaceDefinitionStr);
329 public void addInterfaceOperationsOfGlobalTypeOnPNFResource() throws Exception {
330 RestResponse restResponse =
331 InterfaceOperationsRestUtils.addInterfaceOperations(pnfResource,
332 buildInterfaceDefinitionOfGlobalTypeForResource(pnfResource), user);
334 logger.info("addInterfaceOperationsOnPNFResource Response Code:" + restResponse.getErrorCode());
335 Assert.assertEquals((int) restResponse.getErrorCode(), BaseRestUtils.STATUS_CODE_SUCCESS);
336 String interfaceDefinitionStr = ResponseParser.getListFromJson(restResponse, INTERFACES).get(0).toString();
337 InterfaceDefinition interfaceDefinition =
338 ResponseParser.convertInterfaceDefinitionResponseToJavaObject(interfaceDefinitionStr);