Merge "Support for SO to ExtAPI"
[so.git] / bpmn / mso-infrastructure-bpmn / src / test / java / org / onap / so / bpmn / infrastructure / pnf / delegate / CreateAndActivatePnfResourceTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright 2018 Nokia
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.so.bpmn.infrastructure.pnf.delegate;
24
25 import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareAssertions.assertThat;
26 import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID;
27 import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_UUID;
28 import java.util.HashMap;
29 import java.util.Map;
30 import java.util.UUID;
31 import org.assertj.core.api.Assertions;
32 import org.assertj.core.data.MapEntry;
33 import org.camunda.bpm.engine.runtime.ProcessInstance;
34 import org.junit.Before;
35 import org.junit.Test;
36 import org.onap.so.BaseIntegrationTest;
37 import org.springframework.beans.factory.annotation.Autowired;
38
39 public class CreateAndActivatePnfResourceTest extends BaseIntegrationTest {
40
41     private static final String VALID_UUID = UUID.nameUUIDFromBytes("testUuid".getBytes()).toString();
42     private static final String SERVICE_INSTANCE_ID = "serviceForInstance";
43
44     private Map<String, Object> variables;
45
46     @Autowired
47     private PnfManagementTestImpl pnfManagementTest;
48
49     @Autowired
50     private DmaapClientTestImpl dmaapClientTestImpl;
51
52     @Before
53     public void setup() {
54         pnfManagementTest.reset();
55         variables = new HashMap<>();
56         variables.put("serviceInstanceId", SERVICE_INSTANCE_ID);
57         variables.put(PNF_UUID, VALID_UUID);
58     }
59
60     @Test
61     public void shouldWaitForMessageFromDmaapAndUpdateAaiEntryWhenAaiEntryExists() {
62         // given
63         variables.put(PNF_CORRELATION_ID, PnfManagementTestImpl.ID_WITH_ENTRY);
64         // when
65         ProcessInstance instance =
66                 runtimeService.startProcessInstanceByKey("CreateAndActivatePnfResource", "businessKey", variables);
67         assertThat(instance).isWaitingAt("WaitForDmaapPnfReadyNotification").isWaitingFor("WorkflowMessage");
68         dmaapClientTestImpl.sendMessage();
69
70         // then
71         assertThat(instance).isEnded().hasPassedInOrder("CreateAndActivatePnf_StartEvent", "CheckInputs",
72                 "CheckAiiForPnfCorrelationId", "DoesAaiContainInfoAboutPnf", "AaiEntryExists", "InformDmaapClient",
73                 "WaitForDmaapPnfReadyNotification", "CreateRelationId", "AaiEntryUpdated");
74         Assertions.assertThat(pnfManagementTest.getServiceAndPnfRelationMap())
75                 .containsOnly(MapEntry.entry(SERVICE_INSTANCE_ID, PnfManagementTestImpl.ID_WITH_ENTRY));
76     }
77
78     @Test
79     public void shouldCreateAaiEntryWaitForMessageFromDmaapAndUpdateAaiEntryWhenNoAaiEntryExists() {
80         // given
81         variables.put(PNF_CORRELATION_ID, PnfManagementTestImpl.ID_WITHOUT_ENTRY);
82         // when
83         ProcessInstance instance =
84                 runtimeService.startProcessInstanceByKey("CreateAndActivatePnfResource", "businessKey", variables);
85         assertThat(instance).isWaitingAt("WaitForDmaapPnfReadyNotification").isWaitingFor("WorkflowMessage");
86         dmaapClientTestImpl.sendMessage();
87
88         // then
89         assertThat(instance).isEnded().hasPassedInOrder("CreateAndActivatePnf_StartEvent", "CheckInputs",
90                 "CheckAiiForPnfCorrelationId", "DoesAaiContainInfoAboutPnf", "CreatePnfEntryInAai", "AaiEntryExists",
91                 "InformDmaapClient", "WaitForDmaapPnfReadyNotification", "CreateRelationId", "AaiEntryUpdated");
92         Assertions.assertThat(pnfManagementTest.getCreated()).containsOnlyKeys(PnfManagementTestImpl.ID_WITHOUT_ENTRY);
93         Assertions.assertThat(pnfManagementTest.getServiceAndPnfRelationMap())
94                 .containsOnly(MapEntry.entry(SERVICE_INSTANCE_ID, PnfManagementTestImpl.ID_WITHOUT_ENTRY));
95     }
96 }