add junit coverage
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / workflow / tasks / WorkflowActionExtractResourcesAAITest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Modifications Copyright (c) 2020 Nokia
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.bpmn.infrastructure.workflow.tasks;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.mockito.Mockito.mock;
25 import static org.mockito.Mockito.when;
26 import java.util.ArrayList;
27 import java.util.Collections;
28 import java.util.List;
29 import java.util.Optional;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.InjectMocks;
33 import org.mockito.Mock;
34 import org.mockito.junit.MockitoJUnitRunner;
35 import org.onap.aai.domain.yang.VpnBinding;
36 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
37 import org.onap.aaiclient.client.aai.entities.Relationships;
38 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
39 import org.onap.aaiclient.client.aai.entities.uri.AAISimpleUri;
40 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
42 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
43
44 @RunWith(MockitoJUnitRunner.class)
45 public class WorkflowActionExtractResourcesAAITest {
46
47     private static final String CONFIGURATION_ID = "configTestId";
48     private static final String VPN_ID = "vpnTestId";
49
50     @Mock
51     private BBInputSetupUtils bbInputSetupUtils;
52     @InjectMocks
53     private WorkflowActionExtractResourcesAAI testedObject;
54
55     @Test
56     public void extractRelationshipsConfigurationSuccess() {
57         // given
58         Relationships relationships = mock(Relationships.class);
59         when(relationships.getByType(Types.CONFIGURATION))
60                 .thenReturn(getConfigurationList("{\"configuration-id\" : \"" + CONFIGURATION_ID + "\"}"));
61         // when
62         Optional<Configuration> resultOpt = testedObject.extractRelationshipsConfiguration(relationships);
63         // then
64         assertThat(resultOpt).isNotEmpty();
65         assertThat(resultOpt.get().getConfigurationId()).isEqualTo(CONFIGURATION_ID);
66     }
67
68     @Test
69     public void extractRelationshipsConfiguration_noConfigurationFoundInList() {
70         // given
71         Relationships relationships = mock(Relationships.class);
72         when(relationships.getByType(Types.CONFIGURATION)).thenReturn(getConfigurationList("noJson"));
73         // when
74         Optional<Configuration> resultOpt = testedObject.extractRelationshipsConfiguration(relationships);
75         // then
76         assertThat(resultOpt).isEmpty();
77     }
78
79     @Test
80     public void extractRelationshipsConfiguration_notFound_listEmpty() {
81         // given
82         Relationships relationships = mock(Relationships.class);
83         when(relationships.getByType(Types.CONFIGURATION)).thenReturn(Collections.emptyList());
84         // when
85         Optional<Configuration> resultOpt = testedObject.extractRelationshipsConfiguration(relationships);
86         // then
87         assertThat(resultOpt).isEmpty();
88     }
89
90     @Test
91     public void extractRelationshipsVpnBindingSuccess() {
92         // given
93         Relationships relationships = mock(Relationships.class);
94         AAIResourceUri aaiResourceUri = mock(AAISimpleUri.class);
95         List<AAIResourceUri> aaiResourceUriList = new ArrayList<>();
96         aaiResourceUriList.add(aaiResourceUri);
97         when(relationships.getRelatedUris(Types.VPN_BINDING)).thenReturn(aaiResourceUriList);
98         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper("{\"vpn-id\" : \"" + VPN_ID + "\"}");
99         when(bbInputSetupUtils.getAAIResourceDepthOne(aaiResourceUri)).thenReturn(aaiResultWrapper);
100         // when
101         Optional<VpnBinding> resultOpt = testedObject.extractRelationshipsVpnBinding(relationships);
102         // then
103         assertThat(resultOpt).isNotEmpty();
104         assertThat(resultOpt.get().getVpnId()).isEqualTo(VPN_ID);
105     }
106
107     @Test
108     public void extractRelationshipsVpnBinding_noVpnBindingFoundInList() {
109         // given
110         Relationships relationships = mock(Relationships.class);
111         AAIResourceUri aaiResourceUri = mock(AAISimpleUri.class);
112         List<AAIResourceUri> aaiResourceUriList = new ArrayList<>();
113         aaiResourceUriList.add(aaiResourceUri);
114         when(relationships.getRelatedUris(Types.VPN_BINDING)).thenReturn(aaiResourceUriList);
115         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper("noJson");
116         when(bbInputSetupUtils.getAAIResourceDepthOne(aaiResourceUri)).thenReturn(aaiResultWrapper);
117         // when
118         Optional<VpnBinding> resultOpt = testedObject.extractRelationshipsVpnBinding(relationships);
119         // then
120         assertThat(resultOpt).isEmpty();
121     }
122
123     @Test
124     public void extractRelationshipsVpnBinding_notFound_listEmpty() {
125         // given
126         Relationships relationships = mock(Relationships.class);
127         when(relationships.getRelatedUris(Types.VPN_BINDING)).thenReturn(Collections.emptyList());
128         // when
129         Optional<VpnBinding> resultOpt = testedObject.extractRelationshipsVpnBinding(relationships);
130         // then
131         assertThat(resultOpt).isEmpty();
132     }
133
134     @Test
135     public void extractRelationshipsVnfcSuccess() {
136         // given
137         Relationships relationships = mock(Relationships.class);
138         when(relationships.getByType(Types.VNFC)).thenReturn(
139                 getConfigurationList("{\"relationship-list\": {\"relationship\": [{\"related-to\": \"tenant\"}]}}"));
140         // when
141         Optional<Relationships> resultOpt = testedObject.extractRelationshipsVnfc(relationships);
142         // then
143         assertThat(resultOpt).isNotEmpty();
144         assertThat(resultOpt.get().getJson()).isEqualTo("{\"relationship\":[{\"related-to\":\"tenant\"}]}");
145     }
146
147     @Test
148     public void extractRelationshipsVnfc_noRelationFoundList() {
149         // given
150         Relationships relationships = mock(Relationships.class);
151         when(relationships.getByType(Types.VNFC)).thenReturn(getConfigurationList("{\"jsonWithNoRelation\": {}}"));
152         // when
153         Optional<Relationships> resultOpt = testedObject.extractRelationshipsVnfc(relationships);
154         // then
155         assertThat(resultOpt).isEmpty();
156     }
157
158     @Test
159     public void extractRelationshipsVnfc_notFound_listEmpty() {
160         // given
161         Relationships relationships = mock(Relationships.class);
162         when(relationships.getByType(Types.VNFC)).thenReturn(Collections.emptyList());
163         // when
164         Optional<Relationships> resultOpt = testedObject.extractRelationshipsVnfc(relationships);
165         // then
166         assertThat(resultOpt).isEmpty();
167     }
168
169     private List<AAIResultWrapper> getConfigurationList(String json) {
170         List<AAIResultWrapper> configurations = new ArrayList<>();
171         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(json);
172         configurations.add(aaiResultWrapper);
173         return configurations;
174     }
175 }