ba55dd0365f18036ddcdacb1c5566b08f1e38686
[so.git] /
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.ebb.loader;
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.infrastructure.workflow.tasks.ebb.loader.WorkflowActionExtractResourcesAAI;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
43 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
44
45 @RunWith(MockitoJUnitRunner.class)
46 public class WorkflowActionExtractResourcesAAITest {
47
48     private static final String CONFIGURATION_ID = "configTestId";
49     private static final String VPN_ID = "vpnTestId";
50
51     @Mock
52     private BBInputSetupUtils bbInputSetupUtils;
53     @InjectMocks
54     private WorkflowActionExtractResourcesAAI testedObject;
55
56     @Test
57     public void extractRelationshipsConfigurationSuccess() {
58         // given
59         Relationships relationships = mock(Relationships.class);
60         when(relationships.getByType(Types.CONFIGURATION))
61                 .thenReturn(getConfigurationList("{\"configuration-id\" : \"" + CONFIGURATION_ID + "\"}"));
62         // when
63         Optional<Configuration> resultOpt = testedObject.extractRelationshipsConfiguration(relationships);
64         // then
65         assertThat(resultOpt).isNotEmpty();
66         assertThat(resultOpt.get().getConfigurationId()).isEqualTo(CONFIGURATION_ID);
67     }
68
69     @Test
70     public void extractRelationshipsConfiguration_noConfigurationFoundInList() {
71         // given
72         Relationships relationships = mock(Relationships.class);
73         when(relationships.getByType(Types.CONFIGURATION)).thenReturn(getConfigurationList("noJson"));
74         // when
75         Optional<Configuration> resultOpt = testedObject.extractRelationshipsConfiguration(relationships);
76         // then
77         assertThat(resultOpt).isEmpty();
78     }
79
80     @Test
81     public void extractRelationshipsConfiguration_notFound_listEmpty() {
82         // given
83         Relationships relationships = mock(Relationships.class);
84         when(relationships.getByType(Types.CONFIGURATION)).thenReturn(Collections.emptyList());
85         // when
86         Optional<Configuration> resultOpt = testedObject.extractRelationshipsConfiguration(relationships);
87         // then
88         assertThat(resultOpt).isEmpty();
89     }
90
91     @Test
92     public void extractRelationshipsVpnBindingSuccess() {
93         // given
94         Relationships relationships = mock(Relationships.class);
95         AAIResourceUri aaiResourceUri = mock(AAISimpleUri.class);
96         List<AAIResourceUri> aaiResourceUriList = new ArrayList<>();
97         aaiResourceUriList.add(aaiResourceUri);
98         when(relationships.getRelatedUris(Types.VPN_BINDING)).thenReturn(aaiResourceUriList);
99         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper("{\"vpn-id\" : \"" + VPN_ID + "\"}");
100         when(bbInputSetupUtils.getAAIResourceDepthOne(aaiResourceUri)).thenReturn(aaiResultWrapper);
101         // when
102         Optional<VpnBinding> resultOpt = testedObject.extractRelationshipsVpnBinding(relationships);
103         // then
104         assertThat(resultOpt).isNotEmpty();
105         assertThat(resultOpt.get().getVpnId()).isEqualTo(VPN_ID);
106     }
107
108     @Test
109     public void extractRelationshipsVpnBinding_noVpnBindingFoundInList() {
110         // given
111         Relationships relationships = mock(Relationships.class);
112         AAIResourceUri aaiResourceUri = mock(AAISimpleUri.class);
113         List<AAIResourceUri> aaiResourceUriList = new ArrayList<>();
114         aaiResourceUriList.add(aaiResourceUri);
115         when(relationships.getRelatedUris(Types.VPN_BINDING)).thenReturn(aaiResourceUriList);
116         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper("noJson");
117         when(bbInputSetupUtils.getAAIResourceDepthOne(aaiResourceUri)).thenReturn(aaiResultWrapper);
118         // when
119         Optional<VpnBinding> resultOpt = testedObject.extractRelationshipsVpnBinding(relationships);
120         // then
121         assertThat(resultOpt).isEmpty();
122     }
123
124     @Test
125     public void extractRelationshipsVpnBinding_notFound_listEmpty() {
126         // given
127         Relationships relationships = mock(Relationships.class);
128         when(relationships.getRelatedUris(Types.VPN_BINDING)).thenReturn(Collections.emptyList());
129         // when
130         Optional<VpnBinding> resultOpt = testedObject.extractRelationshipsVpnBinding(relationships);
131         // then
132         assertThat(resultOpt).isEmpty();
133     }
134
135     @Test
136     public void extractRelationshipsVnfcSuccess() {
137         // given
138         Relationships relationships = mock(Relationships.class);
139         when(relationships.getByType(Types.VNFC)).thenReturn(
140                 getConfigurationList("{\"relationship-list\": {\"relationship\": [{\"related-to\": \"tenant\"}]}}"));
141         // when
142         Optional<Relationships> resultOpt = testedObject.extractRelationshipsVnfc(relationships);
143         // then
144         assertThat(resultOpt).isNotEmpty();
145         assertThat(resultOpt.get().getJson()).isEqualTo("{\"relationship\":[{\"related-to\":\"tenant\"}]}");
146     }
147
148     @Test
149     public void extractRelationshipsVnfc_noRelationFoundList() {
150         // given
151         Relationships relationships = mock(Relationships.class);
152         when(relationships.getByType(Types.VNFC)).thenReturn(getConfigurationList("{\"jsonWithNoRelation\": {}}"));
153         // when
154         Optional<Relationships> resultOpt = testedObject.extractRelationshipsVnfc(relationships);
155         // then
156         assertThat(resultOpt).isEmpty();
157     }
158
159     @Test
160     public void extractRelationshipsVnfc_notFound_listEmpty() {
161         // given
162         Relationships relationships = mock(Relationships.class);
163         when(relationships.getByType(Types.VNFC)).thenReturn(Collections.emptyList());
164         // when
165         Optional<Relationships> resultOpt = testedObject.extractRelationshipsVnfc(relationships);
166         // then
167         assertThat(resultOpt).isEmpty();
168     }
169
170     private List<AAIResultWrapper> getConfigurationList(String json) {
171         List<AAIResultWrapper> configurations = new ArrayList<>();
172         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(json);
173         configurations.add(aaiResultWrapper);
174         return configurations;
175     }
176 }