ca33c399078b260cc76c167e2ba2626092158612
[externalapi/nbi.git] / src / test / java / org / onap / nbi / test / ExecutionTaskTest.java
1 /**
2  * Copyright (c) 2018 Orange
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5  * in compliance with the License. You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the License
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11  * or implied. See the License for the specific language governing permissions and limitations under
12  * the License.
13  */
14
15 package org.onap.nbi.test;
16
17 import static org.assertj.core.api.Assertions.assertThat;
18 import java.util.Calendar;
19 import java.util.Date;
20 import java.util.List;
21 import java.util.Optional;
22 import javax.validation.Validation;
23 import javax.validation.Validator;
24 import javax.validation.ValidatorFactory;
25 import org.junit.After;
26 import org.junit.AfterClass;
27 import org.junit.Before;
28 import org.junit.BeforeClass;
29 import org.junit.Test;
30 import org.junit.runner.RunWith;
31 import org.onap.nbi.apis.assertions.ServiceOrderExecutionTaskAssertions;
32 import org.onap.nbi.apis.serviceorder.model.ActionType;
33 import org.onap.nbi.apis.serviceorder.model.ServiceOrder;
34 import org.onap.nbi.apis.serviceorder.model.ServiceOrderItem;
35 import org.onap.nbi.apis.serviceorder.model.StateType;
36 import org.onap.nbi.apis.serviceorder.model.orchestrator.ExecutionTask;
37 import org.onap.nbi.apis.serviceorder.repositories.ExecutionTaskRepository;
38 import org.onap.nbi.apis.serviceorder.repositories.ServiceOrderRepository;
39 import org.onap.nbi.apis.serviceorder.workflow.SOTaskProcessor;
40 import org.springframework.beans.factory.annotation.Autowired;
41 import org.springframework.boot.test.context.SpringBootTest;
42 import org.springframework.mock.web.MockHttpServletRequest;
43 import org.springframework.test.annotation.DirtiesContext;
44 import org.springframework.test.annotation.DirtiesContext.ClassMode;
45 import org.springframework.test.context.ActiveProfiles;
46 import org.springframework.test.context.junit4.SpringRunner;
47 import org.springframework.web.context.request.RequestContextHolder;
48 import org.springframework.web.context.request.ServletRequestAttributes;
49 import com.github.tomakehurst.wiremock.admin.model.ListStubMappingsResult;
50 import com.github.tomakehurst.wiremock.http.ResponseDefinition;
51 import com.github.tomakehurst.wiremock.stubbing.StubMapping;
52
53 @RunWith(SpringRunner.class)
54 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
55 @ActiveProfiles("test")
56 @DirtiesContext(classMode = ClassMode.AFTER_CLASS)
57 public class ExecutionTaskTest {
58
59     @Autowired
60     ServiceOrderRepository serviceOrderRepository;
61
62     @Autowired
63     ExecutionTaskRepository executionTaskRepository;
64
65     @Autowired
66     SOTaskProcessor SoTaskProcessor;
67
68     static Validator validator;
69
70     @Before
71     public void before() {
72         MockHttpServletRequest request = new MockHttpServletRequest();
73         RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
74     }
75
76     @BeforeClass
77     public static void setUp() throws Exception {
78         ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
79         validator = factory.getValidator();
80         Context.startWiremock();
81     }
82
83     @AfterClass
84     public static void tearsDown() throws Exception {
85         Context.stopServers();
86
87     }
88
89     @After
90     public void tearsDownUpPort() throws Exception {
91         executionTaskRepository.deleteAll();
92         serviceOrderRepository.deleteAll();
93         Context.wireMockServer.resetToDefaultMappings();
94
95     }
96
97     public ExecutionTask getExecutionTask(String orderItemId) {
98         for (ExecutionTask executionTask : executionTaskRepository.findAll()) {
99             if (executionTask.getOrderItemId().equalsIgnoreCase(orderItemId)) {
100                 return executionTask;
101             }
102
103         }
104         return null;
105     }
106
107     private void changeWireMockResponse(String s, int statusCode, String bodyContent) {
108         ListStubMappingsResult listStubMappingsResult = Context.wireMockServer.listAllStubMappings();
109         ResponseDefinition responseDefinition = new ResponseDefinition(statusCode, bodyContent);
110         List<StubMapping> mappings = listStubMappingsResult.getMappings();
111         for (StubMapping mapping : mappings) {
112             if (mapping.getRequest().getUrl().equals(s)) {
113                 mapping.setResponse(responseDefinition);
114             }
115         }
116     }
117
118     private ServiceOrder getServiceOrder(String serviceOrderId) {
119         Optional<ServiceOrder> serviceOrderChecked = serviceOrderRepository.findById(serviceOrderId);
120         return serviceOrderChecked.get();
121     }
122
123     @Test
124     public void testExecutionTaskSuccess() throws Exception {
125
126         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
127                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
128         ExecutionTask executionTaskB;
129
130         SoTaskProcessor.processOrderItem(executionTaskA);
131         ServiceOrder serviceOrderChecked = getServiceOrder("test");
132         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
133         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
134             if (serviceOrderItem.getId().equals("A")) {
135                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
136             } else {
137                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
138             }
139         }
140
141         executionTaskB = getExecutionTask("B");
142         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
143         executionTaskA = getExecutionTask("A");
144         assertThat(executionTaskA).isNull();
145
146         SoTaskProcessor.processOrderItem(executionTaskB);
147         serviceOrderChecked = getServiceOrder("test");
148         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
149         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
150             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
151
152         }
153
154         assertThat(executionTaskRepository.count()).isEqualTo(0);
155
156     }
157
158     @Test
159     public void testE2EExecutionTaskSuccess() throws Exception {
160
161         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
162                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
163         ExecutionTask executionTaskB;
164
165         SoTaskProcessor.processOrderItem(executionTaskA);
166         ServiceOrder serviceOrderChecked = getServiceOrder("test");
167         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
168         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
169             if (serviceOrderItem.getId().equals("A")) {
170                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
171             } else {
172                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
173             }
174         }
175
176         executionTaskB = getExecutionTask("B");
177         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
178         executionTaskA = getExecutionTask("A");
179         assertThat(executionTaskA).isNull();
180
181         SoTaskProcessor.processOrderItem(executionTaskB);
182         serviceOrderChecked = getServiceOrder("test");
183         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
184         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
185             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
186
187         }
188
189         assertThat(executionTaskRepository.count()).isEqualTo(0);
190
191     }
192
193     @Test
194     public void testE2EExecutionTaskSuccessWithObject() throws Exception {
195
196         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForE2EExecutionTaskSucessWithObject(
197                 serviceOrderRepository, executionTaskRepository, ActionType.ADD);
198         ExecutionTask executionTaskB;
199
200         SoTaskProcessor.processOrderItem(executionTaskA);
201         ServiceOrder serviceOrderChecked = getServiceOrder("test");
202         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
203         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
204             if (serviceOrderItem.getId().equals("A")) {
205                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
206             } else {
207                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
208             }
209         }
210
211         executionTaskB = getExecutionTask("B");
212         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
213         executionTaskA = getExecutionTask("A");
214         assertThat(executionTaskA).isNull();
215
216         SoTaskProcessor.processOrderItem(executionTaskB);
217         serviceOrderChecked = getServiceOrder("test");
218         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
219         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
220             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
221
222         }
223
224         assertThat(executionTaskRepository.count()).isEqualTo(0);
225
226     }
227
228     @Test
229     public void testE2EExecutionTaskSuccessWithComplexObject() throws Exception {
230         // A Service Order with complex object including arrays
231         ExecutionTask executionTaskA =
232                 ServiceOrderExecutionTaskAssertions.setUpBddForE2EExecutionTaskSucessWithComplexObject(
233                         serviceOrderRepository, executionTaskRepository, ActionType.ADD);
234         ExecutionTask executionTaskB;
235
236         SoTaskProcessor.processOrderItem(executionTaskA);
237         ServiceOrder serviceOrderChecked = getServiceOrder("test");
238         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
239         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
240             if (serviceOrderItem.getId().equals("A")) {
241                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
242             } else {
243                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
244             }
245         }
246
247         executionTaskB = getExecutionTask("B");
248         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
249         executionTaskA = getExecutionTask("A");
250         assertThat(executionTaskA).isNull();
251
252         SoTaskProcessor.processOrderItem(executionTaskB);
253         serviceOrderChecked = getServiceOrder("test");
254         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
255         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
256             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
257
258         }
259
260         assertThat(executionTaskRepository.count()).isEqualTo(0);
261
262     }
263
264     @Test
265     public void testExecutionTaskDeleteSuccess() throws Exception {
266
267         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
268                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.DELETE);
269         ExecutionTask executionTaskB;
270
271         SoTaskProcessor.processOrderItem(executionTaskA);
272         ServiceOrder serviceOrderChecked = getServiceOrder("test");
273         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
274         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
275             if (serviceOrderItem.getId().equals("A")) {
276                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
277             } else {
278                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
279             }
280         }
281
282         executionTaskB = getExecutionTask("B");
283         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
284         executionTaskA = getExecutionTask("A");
285         assertThat(executionTaskA).isNull();
286
287         SoTaskProcessor.processOrderItem(executionTaskB);
288         serviceOrderChecked = getServiceOrder("test");
289         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
290         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
291             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
292
293         }
294
295         assertThat(executionTaskRepository.count()).isEqualTo(0);
296
297     }
298
299     @Test
300     public void testE2EExecutionTaskDeleteSuccess() throws Exception {
301
302         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
303                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.DELETE);
304         ExecutionTask executionTaskB;
305
306         SoTaskProcessor.processOrderItem(executionTaskA);
307         ServiceOrder serviceOrderChecked = getServiceOrder("test");
308         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
309         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
310             if (serviceOrderItem.getId().equals("A")) {
311                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
312             } else {
313                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
314             }
315         }
316
317         executionTaskB = getExecutionTask("B");
318         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
319         executionTaskA = getExecutionTask("A");
320         assertThat(executionTaskA).isNull();
321
322         SoTaskProcessor.processOrderItem(executionTaskB);
323         serviceOrderChecked = getServiceOrder("test");
324         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
325         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
326             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
327
328         }
329
330         assertThat(executionTaskRepository.count()).isEqualTo(0);
331
332     }
333
334     @Test
335     public void testExecutionTaskFailed() throws Exception {
336
337         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
338                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
339
340         Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
341
342         SoTaskProcessor.processOrderItem(executionTaskA);
343         ServiceOrder serviceOrderChecked = getServiceOrder("test");
344         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
345         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
346             if (serviceOrderItem.getId().equals("A")) {
347                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
348             } else {
349                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
350             }
351         }
352         executionTaskA = getExecutionTask("A");
353         Date createDate = executionTaskA.getCreateDate();
354         assertThat(executionTaskA.getLastAttemptDate().getTime() > createDate.getTime()).isTrue();
355
356         changeCreationDate(executionTaskA);
357         SoTaskProcessor.processOrderItem(executionTaskA);
358
359         serviceOrderChecked = getServiceOrder("test");
360         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
361         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
362             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
363
364         }
365
366         assertThat(executionTaskRepository.count()).isEqualTo(0);
367
368     }
369
370     private void changeCreationDate(ExecutionTask executionTaskA) {
371         Calendar cal = Calendar.getInstance();
372         cal.setTime(executionTaskA.getCreateDate());
373         cal.add(Calendar.SECOND, -30);
374         executionTaskA.setCreateDate(cal.getTime());
375     }
376
377     @Test
378     public void testE2EExecutionTaskFailed() throws Exception {
379
380         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
381                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
382
383         Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3/serviceId/operations/operationId");
384
385         SoTaskProcessor.processOrderItem(executionTaskA);
386         ServiceOrder serviceOrderChecked = getServiceOrder("test");
387         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
388         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
389             if (serviceOrderItem.getId().equals("A")) {
390                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
391             } else {
392                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
393             }
394         }
395         executionTaskA = getExecutionTask("A");
396         assertThat(executionTaskA.getLastAttemptDate().getTime() > executionTaskA.getCreateDate().getTime()).isTrue();
397         changeCreationDate(executionTaskA);
398         SoTaskProcessor.processOrderItem(executionTaskA);
399
400         serviceOrderChecked = getServiceOrder("test");
401         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
402         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
403             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
404
405         }
406
407         assertThat(executionTaskRepository.count()).isEqualTo(0);
408
409     }
410
411     @Test
412     public void testExecutionTaskFailedNoSoResponse() throws Exception {
413
414         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
415                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
416
417         Context.removeWireMockMapping("/onap/so/infra/serviceInstantiation/v7/serviceInstances/");
418
419         SoTaskProcessor.processOrderItem(executionTaskA);
420         ServiceOrder serviceOrderChecked = getServiceOrder("test");
421         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
422         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
423             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
424         }
425
426         assertThat(executionTaskRepository.count()).isEqualTo(0);
427
428     }
429
430     @Test
431     public void testExecutionTaskFailedNoSoAndStatusResponse() throws Exception {
432
433         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
434                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
435
436         Context.removeWireMockMapping("/onap/so/infra/serviceInstantiation/v7/serviceInstances/");
437         Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
438
439         SoTaskProcessor.processOrderItem(executionTaskA);
440         ServiceOrder serviceOrderChecked = getServiceOrder("test");
441         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
442         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
443             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
444         }
445
446         assertThat(executionTaskRepository.count()).isEqualTo(0);
447
448     }
449
450     @Test
451     public void testE2EExecutionTaskFailedNoSoAndStatusResponse() throws Exception {
452
453         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
454                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
455
456         Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3");
457         Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3/serviceId/operations/operationId");
458
459         SoTaskProcessor.processOrderItem(executionTaskA);
460         ServiceOrder serviceOrderChecked = getServiceOrder("test");
461         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
462         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
463             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
464         }
465
466         assertThat(executionTaskRepository.count()).isEqualTo(0);
467
468     }
469
470     @Test
471     public void testExecutionTaskFailedBadRequestSo() throws Exception {
472
473         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
474                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
475
476         changeWireMockResponse("/onap/so/infra/serviceInstantiation/v7/serviceInstances/", 400,
477                 "\"serviceException\": {\n" + "        \"messageId\": \"SVC0002\",\n"
478                         + "        \"text\": \"Error parsing request.  org.openecomp.mso.apihandler.common.ValidationException: serviceInstance already existsd\"\n"
479                         + "    }");
480
481         SoTaskProcessor.processOrderItem(executionTaskA);
482         ServiceOrder serviceOrderChecked = getServiceOrder("test");
483         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
484         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
485             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
486         }
487
488         assertThat(executionTaskRepository.count()).isEqualTo(0);
489
490         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
491             if (serviceOrderItem.getId().equals("A")) {
492                 assertThat(serviceOrderItem.getOrderItemMessage().size()).isEqualTo(1);
493                 assertThat(serviceOrderItem.getOrderItemMessage().get(0).getCode()).isEqualTo("105");
494                 assertThat(serviceOrderItem.getOrderItemMessage().get(0).getField()).isEqualTo("service.name");
495             }
496         }
497
498     }
499
500     @Test
501     public void testExecutionTaskModifySuccess() throws Exception {
502
503         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
504                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.MODIFY);
505         ExecutionTask executionTaskB;
506
507         SoTaskProcessor.processOrderItem(executionTaskA);
508         ServiceOrder serviceOrderChecked = getServiceOrder("test");
509         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
510         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
511             if (serviceOrderItem.getId().equals("A")) {
512                 // assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
513                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS_MODIFY_ITEM_TO_CREATE);
514             } else {
515                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
516             }
517         }
518         SoTaskProcessor.processOrderItem(executionTaskA);
519         serviceOrderChecked = getServiceOrder("test");
520         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
521         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
522             if (serviceOrderItem.getId().equals("A")) {
523                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
524             } else {
525                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
526             }
527         }
528
529         executionTaskB = getExecutionTask("B");
530         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
531         executionTaskA = getExecutionTask("A");
532         assertThat(executionTaskA).isNull();
533
534         SoTaskProcessor.processOrderItem(executionTaskB);
535         SoTaskProcessor.processOrderItem(executionTaskB);
536
537         serviceOrderChecked = getServiceOrder("test");
538         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
539         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
540             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
541
542         }
543
544         assertThat(executionTaskRepository.count()).isEqualTo(0);
545
546     }
547
548     @Test
549     public void testExecutionTaskModifyFailed() throws Exception {
550
551         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
552                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.MODIFY);
553         ExecutionTask executionTaskB;
554         Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
555
556         SoTaskProcessor.processOrderItem(executionTaskA);
557         ServiceOrder serviceOrderChecked = getServiceOrder("test");
558         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
559         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
560             if (serviceOrderItem.getId().equals("A")) {
561                 // assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
562                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS_MODIFY_REQUEST_DELETE_SEND);
563             } else {
564                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
565             }
566         }
567         executionTaskA = getExecutionTask("A");
568         assertThat(executionTaskA.getLastAttemptDate().getTime() > executionTaskA.getCreateDate().getTime()).isTrue();
569         changeCreationDate(executionTaskA);
570         SoTaskProcessor.processOrderItem(executionTaskA);
571
572         serviceOrderChecked = getServiceOrder("test");
573         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
574         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
575             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
576
577         }
578
579         assertThat(executionTaskRepository.count()).isEqualTo(0);
580
581     }
582
583     @Test
584     public void testExecutionTaskWithoutOnap() throws Exception {
585         Context.stopWiremock();
586         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
587                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
588
589         SoTaskProcessor.processOrderItem(executionTaskA);
590         ServiceOrder serviceOrderChecked = getServiceOrder("test");
591         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
592         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
593             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
594         }
595         assertThat(serviceOrderChecked.getOrderMessage().size()).isGreaterThan(0);
596         assertThat(serviceOrderChecked.getOrderMessage().get(0).getCode()).isEqualTo("502");
597         assertThat(serviceOrderChecked.getOrderMessage().get(0).getMessageInformation())
598                 .isEqualTo("Problem with SO API");
599
600         assertThat(executionTaskRepository.count()).isEqualTo(0);
601         Context.startWiremock();
602
603     }
604
605 }