1 package org.onap.nbi.apis;
4 import static org.assertj.core.api.Assertions.assertThat;
5 import java.util.ArrayList;
9 import javax.validation.Validation;
10 import javax.validation.Validator;
11 import javax.validation.ValidatorFactory;
12 import org.junit.After;
13 import org.junit.AfterClass;
14 import org.junit.BeforeClass;
15 import org.junit.Ignore;
16 import org.junit.Test;
17 import org.junit.runner.RunWith;
18 import org.onap.nbi.apis.assertions.ServiceCatalogAssertions;
19 import org.onap.nbi.apis.assertions.ServiceInventoryAssertions;
20 import org.onap.nbi.apis.assertions.ServiceOrderAssertions;
21 import org.onap.nbi.apis.servicecatalog.ServiceSpecificationResource;
22 import org.onap.nbi.apis.serviceinventory.ServiceInventoryResource;
23 import org.onap.nbi.apis.serviceorder.ServiceOrderResource;
24 import org.onap.nbi.apis.serviceorder.model.ActionType;
25 import org.onap.nbi.apis.serviceorder.model.RelatedParty;
26 import org.onap.nbi.apis.serviceorder.model.Service;
27 import org.onap.nbi.apis.serviceorder.model.ServiceOrder;
28 import org.onap.nbi.apis.serviceorder.model.ServiceOrderItem;
29 import org.onap.nbi.apis.serviceorder.model.StateType;
30 import org.onap.nbi.apis.serviceorder.model.orchestrator.ExecutionTask;
31 import org.onap.nbi.apis.serviceorder.repositories.ExecutionTaskRepository;
32 import org.onap.nbi.apis.serviceorder.repositories.ServiceOrderInfoRepository;
33 import org.onap.nbi.apis.serviceorder.repositories.ServiceOrderRepository;
34 import org.onap.nbi.apis.serviceorder.workflow.SOTaskProcessor;
35 import org.springframework.beans.factory.annotation.Autowired;
36 import org.springframework.boot.context.embedded.LocalServerPort;
37 import org.springframework.boot.test.context.SpringBootTest;
38 import org.springframework.http.ResponseEntity;
39 import org.springframework.test.context.junit4.SpringRunner;
40 import org.springframework.util.LinkedMultiValueMap;
41 import org.springframework.util.MultiValueMap;
42 import com.github.tomakehurst.wiremock.WireMockServer;
43 import com.github.tomakehurst.wiremock.stubbing.ListStubMappingsResult;
44 import com.github.tomakehurst.wiremock.stubbing.StubMapping;
46 @RunWith(SpringRunner.class)
47 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
48 public class ApiTest {
53 String realServerPort;
55 static public WireMockServer wireMockServer = new WireMockServer(8091);
58 ServiceSpecificationResource serviceSpecificationResource;
61 ServiceInventoryResource serviceInventoryResource;
64 ServiceOrderResource serviceOrderResource;
67 ServiceOrderRepository serviceOrderRepository;
70 ServiceOrderInfoRepository serviceOrderInfoRepository;
73 ExecutionTaskRepository executionTaskRepository;
76 SOTaskProcessor SoTaskProcessor;
78 static Validator validator;
81 public static void setUp() throws Exception {
82 wireMockServer.start();
83 ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
84 validator = factory.getValidator();
88 public static void tearsDown() throws Exception {
89 wireMockServer.stop();
94 public void tearsDownUpPort() throws Exception {
95 executionTaskRepository.deleteAll();
96 serviceOrderInfoRepository.deleteAll();
97 serviceOrderRepository.deleteAll();
98 wireMockServer.resetToDefaultMappings();
103 public ExecutionTask getExecutionTask(String orderItemId) {
104 for (ExecutionTask executionTask : executionTaskRepository.findAll()) {
105 if (executionTask.getOrderItemId().equalsIgnoreCase(orderItemId)) {
106 return executionTask;
117 public void testServiceResourceGetCatalog() throws Exception {
119 ResponseEntity<Object> resource =
120 serviceSpecificationResource.getServiceSpecification("1e3feeb0-8e36-46c6-862c-236d9c626439", null);
121 ServiceCatalogAssertions.assertGetServiceCatalog(resource);
126 public void testServiceCatalogGetResourceWithoutTosca() throws Exception {
128 ResponseEntity<Object> resource = serviceSpecificationResource
129 .getServiceSpecification("1e3feeb0-8e36-46c6-862c-236d9c626439_withoutTosca", null);
130 ServiceCatalogAssertions.asserGetServiceCatalogWithoutTosca(resource);
135 public void testServiceCatalogFind() throws Exception {
137 ResponseEntity<Object> resource = serviceSpecificationResource.findServiceSpecification(null);
138 ServiceCatalogAssertions.assertFindServiceCatalog(resource);
144 public void testServiceCatalogFindWithFilter() throws Exception {
146 MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
147 params.add("fields", "name");
148 ResponseEntity<Object> resource = serviceSpecificationResource.findServiceSpecification(params);
149 ServiceCatalogAssertions.assertFindServiceCatalogWIthFilter(resource);
156 public void testServiceResourceGetInventory() throws Exception {
158 String serviceName = "vFW";
159 String serviceId = "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb";
160 MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
161 params.add("serviceSpecification.name", serviceName);
162 params.add("relatedParty.id", "6490");
163 ResponseEntity<Object> resource = serviceInventoryResource.getServiceInventory(serviceId, params);
164 ServiceInventoryAssertions.assertServiceInventoryGet(resource);
170 public void testServiceResourceGetInventoryWithServiceSpecId() throws Exception {
172 String serviceId = "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb";
173 MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
174 params.add("serviceSpecification.id", "1e3feeb0-8e36-46c6-862c-236d9c626439");
175 params.add("relatedParty.id", "6490");
176 ResponseEntity<Object> resource = serviceInventoryResource.getServiceInventory(serviceId, params);
177 ServiceInventoryAssertions.assertServiceInventoryGet(resource);
183 public void testServiceInventoryFind() throws Exception {
185 MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
186 String serviceName = "vFW";
187 params.add("serviceSpecification.name", serviceName);
188 params.add("relatedParty.id", "6490");
190 ResponseEntity<Object> resource = serviceInventoryResource.findServiceInventory(params);
191 ServiceInventoryAssertions.assertServiceInventoryFind(resource);
197 public void testServiceInventoryFindWithServiceSpecId() throws Exception {
199 MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
200 params.add("serviceSpecification.id", "1e3feeb0-8e36-46c6-862c-236d9c626439");
201 params.add("relatedParty.id", "6490");
203 ResponseEntity<Object> resource = serviceInventoryResource.findServiceInventory(params);
204 ServiceInventoryAssertions.assertServiceInventoryFind(resource);
210 public void testServiceInventoryFindWithoutParameter() throws Exception {
212 MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
213 params.add("relatedParty.id", "6490");
215 ResponseEntity<Object> resource = serviceInventoryResource.findServiceInventory(params);
216 ServiceInventoryAssertions.assertServiceInventoryFindWithoutParameter(resource);
221 public void testCreateServiceOrderResource() throws Exception {
223 ResponseEntity<Object> serviceOrder = serviceOrderResource
224 .createServiceOrder(ServiceOrderAssertions.createTestServiceOrder(ActionType.ADD), null, null);
225 assertThat(serviceOrder.getStatusCodeValue()).isEqualTo(201);
226 ServiceOrder body = (ServiceOrder) serviceOrder.getBody();
227 assertThat(body.getId()).isNotNull();
228 assertThat(body.getState()).isEqualTo(StateType.ACKNOWLEDGED);
234 public void testCheckServiceOrder() throws Exception {
236 ServiceOrder testServiceOrder = ServiceOrderAssertions.createTestServiceOrder(ActionType.ADD);
237 testServiceOrder.setState(StateType.ACKNOWLEDGED);
238 testServiceOrder.setId("test");
239 serviceOrderRepository.save(testServiceOrder);
241 serviceOrderResource.scheduleCheckServiceOrders();
243 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
244 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.ACKNOWLEDGED);
249 public void testCheckServiceOrderWithGenericCustomer() throws Exception {
251 ServiceOrder testServiceOrder = ServiceOrderAssertions.createTestServiceOrder(ActionType.ADD);
252 testServiceOrder.setRelatedParty(new ArrayList<>());
253 testServiceOrder.setState(StateType.ACKNOWLEDGED);
254 testServiceOrder.setId("test");
255 serviceOrderRepository.save(testServiceOrder);
257 serviceOrderResource.scheduleCheckServiceOrders();
259 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
260 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.ACKNOWLEDGED);
265 public void testCheckServiceOrderWithUnKnonwCustomer() throws Exception {
267 ServiceOrder testServiceOrder = ServiceOrderAssertions.createTestServiceOrder(ActionType.ADD);
268 List<RelatedParty> customers = new ArrayList<>();
269 RelatedParty customer = new RelatedParty();
270 customer.setId("new");
271 customer.setRole("ONAPcustomer");
272 customer.setName("romain");
273 customers.add(customer);
274 testServiceOrder.setRelatedParty(customers);
275 testServiceOrder.setState(StateType.ACKNOWLEDGED);
276 testServiceOrder.setId("test");
277 serviceOrderRepository.save(testServiceOrder);
279 serviceOrderResource.scheduleCheckServiceOrders();
281 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
282 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.ACKNOWLEDGED);
287 public void testCheckServiceOrderDelete() throws Exception {
289 ServiceOrder testServiceOrder = ServiceOrderAssertions.createTestServiceOrder(ActionType.DELETE);
290 testServiceOrder.setState(StateType.ACKNOWLEDGED);
291 testServiceOrder.setId("test");
292 for (ServiceOrderItem serviceOrderItem : testServiceOrder.getOrderItem()) {
293 serviceOrderItem.setState(StateType.ACKNOWLEDGED);
295 serviceOrderRepository.save(testServiceOrder);
297 serviceOrderResource.scheduleCheckServiceOrders();
299 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
300 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.ACKNOWLEDGED);
305 public void testCheckServiceOrderDeleteRejected() throws Exception {
307 ServiceOrder testServiceOrder = ServiceOrderAssertions.createTestServiceOrder(ActionType.DELETE);
308 for (ServiceOrderItem serviceOrderItem : testServiceOrder.getOrderItem()) {
309 serviceOrderItem.getService().setId("no_response");
312 testServiceOrder.setState(StateType.ACKNOWLEDGED);
313 testServiceOrder.setId("test");
314 serviceOrderRepository.save(testServiceOrder);
316 serviceOrderResource.scheduleCheckServiceOrders();
318 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
319 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.REJECTED);
324 public void testCheckServiceOrderNoChange() throws Exception {
326 ServiceOrder testServiceOrder = ServiceOrderAssertions.createTestServiceOrder(ActionType.DELETE);
327 for (ServiceOrderItem serviceOrderItem : testServiceOrder.getOrderItem()) {
328 serviceOrderItem.setAction(ActionType.NOCHANGE);
331 testServiceOrder.setState(StateType.ACKNOWLEDGED);
332 testServiceOrder.setId("test");
333 serviceOrderRepository.save(testServiceOrder);
335 serviceOrderResource.scheduleCheckServiceOrders();
337 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
338 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
339 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
340 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
348 public void testCheckServiceOrderNoChangeAndDelete() throws Exception {
350 ServiceOrder testServiceOrder = ServiceOrderAssertions.createTestServiceOrder(ActionType.DELETE);
351 for (ServiceOrderItem serviceOrderItem : testServiceOrder.getOrderItem()) {
352 if (serviceOrderItem.getId().equals("A")) {
353 serviceOrderItem.setAction(ActionType.NOCHANGE);
355 serviceOrderItem.setState(StateType.ACKNOWLEDGED);
358 testServiceOrder.setState(StateType.ACKNOWLEDGED);
359 testServiceOrder.setId("test");
360 serviceOrderRepository.save(testServiceOrder);
362 serviceOrderResource.scheduleCheckServiceOrders();
364 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
365 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.ACKNOWLEDGED);
366 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
367 if (serviceOrderItem.getId().equals("A"))
368 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
375 public void testCheckServiceOrderRejected() throws Exception {
378 ServiceOrder testServiceOrder = ServiceOrderAssertions.createTestServiceOrderRejected();
379 testServiceOrder.setState(StateType.ACKNOWLEDGED);
380 testServiceOrder.setId("test");
381 serviceOrderRepository.save(testServiceOrder);
383 serviceOrderResource.scheduleCheckServiceOrders();
385 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
386 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.REJECTED);
391 public void validateServiceOrderBeanWithAnnotation() {
392 ServiceOrder serviceOrder = ServiceOrderAssertions.createTestServiceOrder(ActionType.ADD);
393 Set violations = validator.validate(serviceOrder);
394 assertThat(violations).isEmpty();
396 ServiceOrderItem item = new ServiceOrderItem();
397 item.setAction(ActionType.DELETE);
398 item.setService(new Service());
399 serviceOrder.addOrderItemItem(item);
401 violations = validator.validate(serviceOrder);
402 assertThat(violations).isNotEmpty();
408 public void testFindAndGetServiceOrder() throws Exception {
410 ServiceOrder testServiceOrder = ServiceOrderAssertions.createTestServiceOrder(ActionType.ADD);
411 for (ServiceOrderItem serviceOrderItem : testServiceOrder.getOrderItem()) {
412 serviceOrderItem.setState(StateType.ACKNOWLEDGED);
414 testServiceOrder.setExternalId("extid1");
415 testServiceOrder.setOrderDate(new Date());
416 testServiceOrder.setState(StateType.ACKNOWLEDGED);
417 testServiceOrder.setDescription("toto");
418 testServiceOrder.setId("test");
419 serviceOrderRepository.save(testServiceOrder);
422 ServiceOrder testServiceOrder2 = ServiceOrderAssertions.createTestServiceOrder(ActionType.ADD);
423 testServiceOrder2.setState(StateType.ACKNOWLEDGED);
424 testServiceOrder2.setDescription("toto");
425 testServiceOrder2.setId("test2");
426 testServiceOrder2.setExternalId("extid2");
427 testServiceOrder2.setOrderDate(new Date());
429 serviceOrderRepository.save(testServiceOrder2);
432 MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
433 params.add("fields", "id");
435 ResponseEntity<Object> serviceOrdersResponse = serviceOrderResource.findServiceOrder(params);
436 ArrayList serviceOrders = (ArrayList) serviceOrdersResponse.getBody();
437 assertThat(serviceOrders.size()).isEqualTo(2);
439 params.add("externalId", "extid1");
440 params.add("state", "acknowledged");
442 serviceOrdersResponse = serviceOrderResource.findServiceOrder(params);
443 serviceOrders = (ArrayList) serviceOrdersResponse.getBody();
444 assertThat(serviceOrders.size()).isEqualTo(1);
446 MultiValueMap<String, String> paramsDate = new LinkedMultiValueMap<>();
447 paramsDate.add("orderDate.gt", "2017-01-01 00:00:00.000");
448 paramsDate.add("orderDate.lt", "2030-01-01 00:00:00.000");
449 paramsDate.add("offset", "0");
450 paramsDate.add("limit", "2");
452 serviceOrdersResponse = serviceOrderResource.findServiceOrder(paramsDate);
453 serviceOrders = (ArrayList) serviceOrdersResponse.getBody();
454 assertThat(serviceOrders.size()).isEqualTo(2);
457 ResponseEntity<Object> serviceOrderResponse =
458 serviceOrderResource.getServiceOrder("test2", new LinkedMultiValueMap<>());
459 ServiceOrder serviceOrder = (ServiceOrder) serviceOrderResponse.getBody();
460 assertThat(serviceOrder).isNotNull();
466 public void testExecutionTaskSuccess() throws Exception {
468 ExecutionTask executionTaskA = ServiceOrderAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
469 serviceOrderInfoRepository, executionTaskRepository, ActionType.ADD);
470 ExecutionTask executionTaskB;
473 SoTaskProcessor.processOrderItem(executionTaskA);
474 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
475 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
476 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
477 if (serviceOrderItem.getId().equals("A")) {
478 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
480 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
484 executionTaskB = getExecutionTask("B");
485 assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
486 executionTaskA = getExecutionTask("A");
487 assertThat(executionTaskA).isNull();
489 SoTaskProcessor.processOrderItem(executionTaskB);
490 serviceOrderChecked = serviceOrderRepository.findOne("test");
491 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
492 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
493 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
497 executionTaskB = getExecutionTask("B");
498 assertThat(executionTaskB).isNull();
505 public void testExecutionTaskDeleteSuccess() throws Exception {
507 ExecutionTask executionTaskA = ServiceOrderAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
508 serviceOrderInfoRepository, executionTaskRepository, ActionType.DELETE);
509 ExecutionTask executionTaskB;
512 SoTaskProcessor.processOrderItem(executionTaskA);
513 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
514 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
515 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
516 if (serviceOrderItem.getId().equals("A")) {
517 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
519 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
523 executionTaskB = getExecutionTask("B");
524 assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
525 executionTaskA = getExecutionTask("A");
526 assertThat(executionTaskA).isNull();
528 SoTaskProcessor.processOrderItem(executionTaskB);
529 serviceOrderChecked = serviceOrderRepository.findOne("test");
530 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
531 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
532 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
536 executionTaskB = getExecutionTask("B");
537 assertThat(executionTaskB).isNull();
544 public void testExecutionTaskFailed() throws Exception {
546 ExecutionTask executionTaskA = ServiceOrderAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
547 serviceOrderInfoRepository, executionTaskRepository, ActionType.ADD);
549 ListStubMappingsResult listStubMappingsResult = wireMockServer.listAllStubMappings();
550 StubMapping mappingToDelete = null;
551 List<StubMapping> mappings = listStubMappingsResult.getMappings();
552 for (StubMapping mapping : mappings) {
553 if (mapping.getRequest().getUrl().equals("/ecomp/mso/infra/orchestrationRequests/v4/requestId")) {
554 mappingToDelete = mapping;
557 wireMockServer.removeStubMapping(mappingToDelete);
560 SoTaskProcessor.processOrderItem(executionTaskA);
561 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
562 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
563 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
564 if (serviceOrderItem.getId().equals("A")) {
565 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
567 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
570 executionTaskA = getExecutionTask("A");
571 assertThat(executionTaskA.getNbRetries()).isEqualTo(2);
572 SoTaskProcessor.processOrderItem(executionTaskA);
573 executionTaskA = getExecutionTask("A");
574 SoTaskProcessor.processOrderItem(executionTaskA);
575 executionTaskA = getExecutionTask("A");
576 SoTaskProcessor.processOrderItem(executionTaskA);
578 serviceOrderChecked = serviceOrderRepository.findOne("test");
579 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
580 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
581 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
585 ExecutionTask executionTaskB = executionTaskRepository.findOne(Long.parseLong("2"));
586 assertThat(executionTaskB).isNull();