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