Merge "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 = ServiceOrderExecutionTaskAssertions
374                                 .setUpBddForMacroExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
375                 ExecutionTask executionTaskB;
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.COMPLETED);
383                         } else {
384                                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
385                         }
386                 }
387
388                 executionTaskB = getExecutionTask("B");
389                 assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
390                 executionTaskA = getExecutionTask("A");
391                 assertThat(executionTaskA).isNull();
392
393                 SoTaskProcessor.processOrderItem(executionTaskB);
394                 serviceOrderChecked = getServiceOrder("test");
395
396                 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
397                 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
398                         assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
399
400                 }
401         }
402         
403         // Macro Flow Execution Task for VNF with Service and VNF level Params
404          @Test
405             public void testMacroExecutionTaskSuccessForVNFWithServceAndVnfLevelParams() throws Exception {
406
407                 ExecutionTask executionTaskA =
408                     ServiceOrderExecutionTaskAssertions.setUpBddForMacroExecutionTaskSucessVnf(
409                         serviceOrderRepository, executionTaskRepository, ActionType.ADD);
410                 ExecutionTask executionTaskB;
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.COMPLETED);
418                     } else {
419                         assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
420                     }
421                 }
422
423                 executionTaskB = getExecutionTask("B");
424                 assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
425                 executionTaskA = getExecutionTask("A");
426                 assertThat(executionTaskA).isNull();
427
428                 SoTaskProcessor.processOrderItem(executionTaskB);
429                 serviceOrderChecked = getServiceOrder("test");
430
431                 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
432                 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
433                     assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
434
435                 }
436             }
437         
438         // Macro Flow Execution Task with CNF with InstanceParams
439                 @Test
440                 public void testMacroExecutionTaskSuccessforCNFWithServiceAndVNFLevelParams() throws Exception {
441
442                         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
443                                         .setUpBddForMacroExecutionTaskSucessForCNF(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
444                         ExecutionTask executionTaskB;
445
446                         SoTaskProcessor.processOrderItem(executionTaskA);
447                         ServiceOrder serviceOrderChecked = getServiceOrder("test");
448                         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
449                         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
450                                 if (serviceOrderItem.getId().equals("A")) {
451                                         assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
452                                 } else {
453                                         assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
454                                 }
455                         }
456
457                         executionTaskB = getExecutionTask("B");
458                         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
459                         executionTaskA = getExecutionTask("A");
460                         assertThat(executionTaskA).isNull();
461
462                         SoTaskProcessor.processOrderItem(executionTaskB);
463                         serviceOrderChecked = getServiceOrder("test");
464
465                         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
466                         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
467                                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
468
469                         }
470                 }
471     
472     @Test
473     public void testExecutionTaskFailed() throws Exception {
474
475         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
476                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
477
478         Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
479
480         SoTaskProcessor.processOrderItem(executionTaskA);
481         ServiceOrder serviceOrderChecked = getServiceOrder("test");
482         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
483         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
484             if (serviceOrderItem.getId().equals("A")) {
485                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
486             } else {
487                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
488             }
489         }
490         executionTaskA = getExecutionTask("A");
491         Date createDate = executionTaskA.getCreateDate();
492         assertThat(executionTaskA.getLastAttemptDate().getTime() > createDate.getTime()).isTrue();
493
494         changeCreationDate(executionTaskA);
495         SoTaskProcessor.processOrderItem(executionTaskA);
496
497         serviceOrderChecked = getServiceOrder("test");
498         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
499         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
500             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
501
502         }
503
504         assertThat(executionTaskRepository.count()).isEqualTo(0);
505
506     }
507
508     private void changeCreationDate(ExecutionTask executionTaskA) {
509         Calendar cal = Calendar.getInstance();
510         cal.setTime(executionTaskA.getCreateDate());
511         cal.add(Calendar.SECOND, -30);
512         executionTaskA.setCreateDate(cal.getTime());
513     }
514
515     @Test
516     public void testE2EExecutionTaskFailed() throws Exception {
517
518         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
519                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
520
521         Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3/serviceId/operations/operationId");
522
523         SoTaskProcessor.processOrderItem(executionTaskA);
524         ServiceOrder serviceOrderChecked = getServiceOrder("test");
525         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
526         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
527             if (serviceOrderItem.getId().equals("A")) {
528                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
529             } else {
530                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
531             }
532         }
533         executionTaskA = getExecutionTask("A");
534         assertThat(executionTaskA.getLastAttemptDate().getTime() > executionTaskA.getCreateDate().getTime()).isTrue();
535         changeCreationDate(executionTaskA);
536         SoTaskProcessor.processOrderItem(executionTaskA);
537
538         serviceOrderChecked = getServiceOrder("test");
539         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
540         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
541             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
542
543         }
544
545         assertThat(executionTaskRepository.count()).isEqualTo(0);
546
547     }
548
549     @Test
550     public void testExecutionTaskFailedNoSoResponse() throws Exception {
551
552         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
553                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
554
555         Context.removeWireMockMapping("/onap/so/infra/serviceInstantiation/v7/serviceInstances");
556
557         SoTaskProcessor.processOrderItem(executionTaskA);
558         ServiceOrder serviceOrderChecked = getServiceOrder("test");
559         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
560         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
561             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
562         }
563
564         assertThat(executionTaskRepository.count()).isEqualTo(0);
565
566     }
567
568     @Test
569     public void testExecutionTaskFailedNoSoAndStatusResponse() throws Exception {
570
571         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
572                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
573
574         Context.removeWireMockMapping("/onap/so/infra/serviceInstantiation/v7/serviceInstances");
575         Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
576
577         SoTaskProcessor.processOrderItem(executionTaskA);
578         ServiceOrder serviceOrderChecked = getServiceOrder("test");
579         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
580         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
581             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
582         }
583
584         assertThat(executionTaskRepository.count()).isEqualTo(0);
585
586     }
587
588     @Test
589     public void testE2EExecutionTaskFailedNoSoAndStatusResponse() throws Exception {
590
591         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
592                 .setUpBddForE2EExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
593
594         Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3");
595         Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3/serviceId/operations/operationId");
596
597         SoTaskProcessor.processOrderItem(executionTaskA);
598         ServiceOrder serviceOrderChecked = getServiceOrder("test");
599         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
600         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
601             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
602         }
603
604         assertThat(executionTaskRepository.count()).isEqualTo(0);
605
606     }
607
608     @Test
609     public void testExecutionTaskFailedBadRequestSo() throws Exception {
610
611         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
612                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
613
614         changeWireMockResponse("/onap/so/infra/serviceInstantiation/v7/serviceInstances", 400,
615                 "\"serviceException\": {\n" + "        \"messageId\": \"SVC0002\",\n"
616                         + "        \"text\": \"Error parsing request.  org.openecomp.mso.apihandler.common.ValidationException: serviceInstance already existsd\"\n"
617                         + "    }");
618
619         SoTaskProcessor.processOrderItem(executionTaskA);
620         ServiceOrder serviceOrderChecked = getServiceOrder("test");
621         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
622         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
623             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
624         }
625
626         assertThat(executionTaskRepository.count()).isEqualTo(0);
627
628         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
629             if (serviceOrderItem.getId().equals("A")) {
630                 assertThat(serviceOrderItem.getOrderItemMessage().size()).isEqualTo(1);
631                 assertThat(serviceOrderItem.getOrderItemMessage().get(0).getCode()).isEqualTo("105");
632                 assertThat(serviceOrderItem.getOrderItemMessage().get(0).getField()).isEqualTo("service.name");
633             }
634         }
635
636     }
637
638     @Test
639     public void testExecutionTaskModifySuccess() throws Exception {
640
641         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
642                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.MODIFY);
643         ExecutionTask executionTaskB;
644
645         SoTaskProcessor.processOrderItem(executionTaskA);
646         ServiceOrder serviceOrderChecked = getServiceOrder("test");
647         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
648         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
649             if (serviceOrderItem.getId().equals("A")) {
650                 // assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
651                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS_MODIFY_ITEM_TO_CREATE);
652             } else {
653                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
654             }
655         }
656         SoTaskProcessor.processOrderItem(executionTaskA);
657         serviceOrderChecked = getServiceOrder("test");
658         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
659         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
660             if (serviceOrderItem.getId().equals("A")) {
661                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
662             } else {
663                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
664             }
665         }
666
667         executionTaskB = getExecutionTask("B");
668         assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
669         executionTaskA = getExecutionTask("A");
670         assertThat(executionTaskA).isNull();
671
672         SoTaskProcessor.processOrderItem(executionTaskB);
673         SoTaskProcessor.processOrderItem(executionTaskB);
674
675         serviceOrderChecked = getServiceOrder("test");
676         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
677         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
678             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
679
680         }
681
682         assertThat(executionTaskRepository.count()).isEqualTo(0);
683
684     }
685
686     @Test
687     public void testExecutionTaskModifyFailed() throws Exception {
688
689         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
690                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.MODIFY);
691         ExecutionTask executionTaskB;
692         Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
693
694         SoTaskProcessor.processOrderItem(executionTaskA);
695         ServiceOrder serviceOrderChecked = getServiceOrder("test");
696         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
697         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
698             if (serviceOrderItem.getId().equals("A")) {
699                 // assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
700                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS_MODIFY_REQUEST_DELETE_SEND);
701             } else {
702                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
703             }
704         }
705         executionTaskA = getExecutionTask("A");
706         assertThat(executionTaskA.getLastAttemptDate().getTime() > executionTaskA.getCreateDate().getTime()).isTrue();
707         changeCreationDate(executionTaskA);
708         SoTaskProcessor.processOrderItem(executionTaskA);
709
710         serviceOrderChecked = getServiceOrder("test");
711         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
712         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
713             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
714
715         }
716
717         assertThat(executionTaskRepository.count()).isEqualTo(0);
718
719     }
720
721     @Test
722     public void testExecutionTaskWithoutOnap() throws Exception {
723         Context.stopWiremock();
724         ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions
725                 .setUpBddForExecutionTaskSucess(serviceOrderRepository, executionTaskRepository, ActionType.ADD);
726
727         SoTaskProcessor.processOrderItem(executionTaskA);
728         ServiceOrder serviceOrderChecked = getServiceOrder("test");
729         assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
730         for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
731             assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
732         }
733         assertThat(serviceOrderChecked.getOrderMessage().size()).isGreaterThan(0);
734         assertThat(serviceOrderChecked.getOrderMessage().get(0).getCode()).isEqualTo("502");
735         assertThat(serviceOrderChecked.getOrderMessage().get(0).getMessageInformation())
736                 .isEqualTo("Problem with SO API");
737
738         assertThat(executionTaskRepository.count()).isEqualTo(0);
739         Context.startWiremock();
740
741     }
742
743 }