Implement E2EService activation/deactivation for NetworkSlicing
[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  @Test
299     public void testE2EExecutionTaskActivationSuccess() throws Exception {
300
301         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
302                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.MODIFY);
303         ExecutionTask executionTaskB;
304
305         SoTaskProcessor.processOrderItem(executionTaskA);
306         ServiceOrder serviceOrderChecked = getServiceOrder("test");
307         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
308         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
309             if (serviceOrderItem.getId().equals("A")) {
310                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
311             } else {
312                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
313             }
314         }
315
316         executionTaskB = getExecutionTask("B");
317         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
318         executionTaskA = getExecutionTask("A");
319         assertThat(executionTaskA).isNull();
320
321         SoTaskProcessor.processOrderItem(executionTaskB);
322         serviceOrderChecked = getServiceOrder("test");
323         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
324         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
325             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
326
327         }
328
329         assertThat(executionTaskRepository.count()).isEqualTo(0);
330
331     }
332
333
334     @Test
335     public void testE2EExecutionTaskDeleteSuccess() throws Exception {
336
337         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
338                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.DELETE);
339         ExecutionTask executionTaskB;
340
341         SoTaskProcessor.processOrderItem(executionTaskA);
342         ServiceOrder serviceOrderChecked = getServiceOrder("test");
343         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
344         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
345             if (serviceOrderItem.getId().equals("A")) {
346                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
347             } else {
348                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
349             }
350         }
351
352         executionTaskB = getExecutionTask("B");
353         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
354         executionTaskA = getExecutionTask("A");
355         assertThat(executionTaskA).isNull();
356
357         SoTaskProcessor.processOrderItem(executionTaskB);
358         serviceOrderChecked = getServiceOrder("test");
359         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
360         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
361             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
362
363         }
364
365         assertThat(executionTaskRepository.count()).isEqualTo(0);
366
367     }
368     
369     // Macro Flow Execution Task
370     @Test
371     public void testMacroExecutionTaskSuccess() throws Exception {
372
373         ExecutionTask executionTaskA =
374             ServiceOrderExecutionTaskAssertions.setUpBddForMacroExecutionTaskSucess(
375                 serviceOrderRepository, executionTaskRepository, ActionType.ADD);
376         ExecutionTask executionTaskB;
377
378         SoTaskProcessor.processOrderItem(executionTaskA);
379         ServiceOrder serviceOrderChecked = getServiceOrder("test");
380         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
381         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
382             if (serviceOrderItem.getId().equals("A")) {
383                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
384             } else {
385                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
386             }
387         }
388
389         executionTaskB = getExecutionTask("B");
390         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
391         executionTaskA = getExecutionTask("A");
392         assertThat(executionTaskA).isNull();
393
394         SoTaskProcessor.processOrderItem(executionTaskB);
395         serviceOrderChecked = getServiceOrder("test");
396
397         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
398         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
399             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
400
401         }
402     }
403     
404     @Test
405     public void testExecutionTaskFailed() throws Exception {
406
407         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
408                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
409
410         Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
411
412         SoTaskProcessor.processOrderItem(executionTaskA);
413         ServiceOrder serviceOrderChecked = getServiceOrder("test");
414         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
415         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
416             if (serviceOrderItem.getId().equals("A")) {
417                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
418             } else {
419                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
420             }
421         }
422         executionTaskA = getExecutionTask("A");
423         Date createDate = executionTaskA.getCreateDate();
424         assertThat(executionTaskA.getLastAttemptDate().getTime() > createDate.getTime()).isTrue();
425
426         changeCreationDate(executionTaskA);
427         SoTaskProcessor.processOrderItem(executionTaskA);
428
429         serviceOrderChecked = getServiceOrder("test");
430         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
431         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
432             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
433
434         }
435
436         assertThat(executionTaskRepository.count()).isEqualTo(0);
437
438     }
439
440     private void changeCreationDate(ExecutionTask executionTaskA) {
441         Calendar cal = Calendar.getInstance();
442         cal.setTime(executionTaskA.getCreateDate());
443         cal.add(Calendar.SECOND, -30);
444         executionTaskA.setCreateDate(cal.getTime());
445     }
446
447     @Test
448     public void testE2EExecutionTaskFailed() throws Exception {
449
450         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
451                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
452
453         Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3/serviceId/operations/operationId");
454
455         SoTaskProcessor.processOrderItem(executionTaskA);
456         ServiceOrder serviceOrderChecked = getServiceOrder("test");
457         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
458         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
459             if (serviceOrderItem.getId().equals("A")) {
460                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
461             } else {
462                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
463             }
464         }
465         executionTaskA = getExecutionTask("A");
466         assertThat(executionTaskA.getLastAttemptDate().getTime() > executionTaskA.getCreateDate().getTime()).isTrue();
467         changeCreationDate(executionTaskA);
468         SoTaskProcessor.processOrderItem(executionTaskA);
469
470         serviceOrderChecked = getServiceOrder("test");
471         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
472         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
473             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
474
475         }
476
477         assertThat(executionTaskRepository.count()).isEqualTo(0);
478
479     }
480
481     @Test
482     public void testExecutionTaskFailedNoSoResponse() throws Exception {
483
484         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
485                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
486
487         Context.removeWireMockMapping("/onap/so/infra/serviceInstantiation/v7/serviceInstances");
488
489         SoTaskProcessor.processOrderItem(executionTaskA);
490         ServiceOrder serviceOrderChecked = getServiceOrder("test");
491         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
492         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
493             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
494         }
495
496         assertThat(executionTaskRepository.count()).isEqualTo(0);
497
498     }
499
500     @Test
501     public void testExecutionTaskFailedNoSoAndStatusResponse() throws Exception {
502
503         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
504                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
505
506         Context.removeWireMockMapping("/onap/so/infra/serviceInstantiation/v7/serviceInstances");
507         Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
508
509         SoTaskProcessor.processOrderItem(executionTaskA);
510         ServiceOrder serviceOrderChecked = getServiceOrder("test");
511         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
512         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
513             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
514         }
515
516         assertThat(executionTaskRepository.count()).isEqualTo(0);
517
518     }
519
520     @Test
521     public void testE2EExecutionTaskFailedNoSoAndStatusResponse() throws Exception {
522
523         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
524                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
525
526         Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3");
527         Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3/serviceId/operations/operationId");
528
529         SoTaskProcessor.processOrderItem(executionTaskA);
530         ServiceOrder serviceOrderChecked = getServiceOrder("test");
531         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
532         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
533             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
534         }
535
536         assertThat(executionTaskRepository.count()).isEqualTo(0);
537
538     }
539
540     @Test
541     public void testExecutionTaskFailedBadRequestSo() throws Exception {
542
543         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
544                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
545
546         changeWireMockResponse("/onap/so/infra/serviceInstantiation/v7/serviceInstances", 400,
547                 "\"serviceException\": {\n" + "        \"messageId\": \"SVC0002\",\n"
548                         + "        \"text\": \"Error parsing request.  org.openecomp.mso.apihandler.common.ValidationException: serviceInstance already existsd\"\n"
549                         + "    }");
550
551         SoTaskProcessor.processOrderItem(executionTaskA);
552         ServiceOrder serviceOrderChecked = getServiceOrder("test");
553         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
554         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
555             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
556         }
557
558         assertThat(executionTaskRepository.count()).isEqualTo(0);
559
560         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
561             if (serviceOrderItem.getId().equals("A")) {
562                 assertThat(serviceOrderItem.getOrderItemMessage().size()).isEqualTo(1);
563                 assertThat(serviceOrderItem.getOrderItemMessage().get(0).getCode()).isEqualTo("105");
564                 assertThat(serviceOrderItem.getOrderItemMessage().get(0).getField()).isEqualTo("service.name");
565             }
566         }
567
568     }
569
570     @Test
571     public void testExecutionTaskModifySuccess() throws Exception {
572
573         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
574                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.MODIFY);
575         ExecutionTask executionTaskB;
576
577         SoTaskProcessor.processOrderItem(executionTaskA);
578         ServiceOrder serviceOrderChecked = getServiceOrder("test");
579         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
580         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
581             if (serviceOrderItem.getId().equals("A")) {
582                 // assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
583                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS_MODIFY_ITEM_TO_CREATE);
584             } else {
585                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
586             }
587         }
588         SoTaskProcessor.processOrderItem(executionTaskA);
589         serviceOrderChecked = getServiceOrder("test");
590         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
591         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
592             if (serviceOrderItem.getId().equals("A")) {
593                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
594             } else {
595                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
596             }
597         }
598
599         executionTaskB = getExecutionTask("B");
600         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
601         executionTaskA = getExecutionTask("A");
602         assertThat(executionTaskA).isNull();
603
604         SoTaskProcessor.processOrderItem(executionTaskB);
605         SoTaskProcessor.processOrderItem(executionTaskB);
606
607         serviceOrderChecked = getServiceOrder("test");
608         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
609         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
610             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
611
612         }
613
614         assertThat(executionTaskRepository.count()).isEqualTo(0);
615
616     }
617
618     @Test
619     public void testExecutionTaskModifyFailed() throws Exception {
620
621         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
622                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.MODIFY);
623         ExecutionTask executionTaskB;
624         Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
625
626         SoTaskProcessor.processOrderItem(executionTaskA);
627         ServiceOrder serviceOrderChecked = getServiceOrder("test");
628         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
629         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
630             if (serviceOrderItem.getId().equals("A")) {
631                 // assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
632                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS_MODIFY_REQUEST_DELETE_SEND);
633             } else {
634                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
635             }
636         }
637         executionTaskA = getExecutionTask("A");
638         assertThat(executionTaskA.getLastAttemptDate().getTime() > executionTaskA.getCreateDate().getTime()).isTrue();
639         changeCreationDate(executionTaskA);
640         SoTaskProcessor.processOrderItem(executionTaskA);
641
642         serviceOrderChecked = getServiceOrder("test");
643         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
644         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
645             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
646
647         }
648
649         assertThat(executionTaskRepository.count()).isEqualTo(0);
650
651     }
652
653     @Test
654     public void testExecutionTaskWithoutOnap() throws Exception {
655         Context.stopWiremock();
656         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
657                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
658
659         SoTaskProcessor.processOrderItem(executionTaskA);
660         ServiceOrder serviceOrderChecked = getServiceOrder("test");
661         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
662         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
663             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
664         }
665         assertThat(serviceOrderChecked.getOrderMessage().size()).isGreaterThan(0);
666         assertThat(serviceOrderChecked.getOrderMessage().get(0).getCode()).isEqualTo("502");
667         assertThat(serviceOrderChecked.getOrderMessage().get(0).getMessageInformation())
668                 .isEqualTo("Problem with SO API");
669
670         assertThat(executionTaskRepository.count()).isEqualTo(0);
671         Context.startWiremock();
672
673     }
674
675 }