68f3d20c820b6b56f01cdd65e9b5b13667413a50
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
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 package org.onap.so.client.orchestration;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertFalse;
24 import static org.junit.Assert.assertTrue;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.eq;
27 import static org.mockito.ArgumentMatchers.isA;
28 import static org.mockito.Mockito.doNothing;
29 import static org.mockito.Mockito.doReturn;
30 import static org.mockito.Mockito.times;
31 import static org.mockito.Mockito.verify;
32 import java.util.Optional;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.junit.runner.RunWith;
36 import org.mockito.ArgumentMatchers;
37 import org.mockito.InjectMocks;
38 import org.mockito.Mock;
39 import org.mockito.junit.MockitoJUnitRunner;
40 import org.onap.so.bpmn.common.data.TestDataSetup;
41 import org.onap.so.bpmn.common.InjectionHelper;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceProxy;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.VpnBinding;
49 import org.onap.so.client.aai.AAIObjectPlurals;
50 import org.onap.so.client.aai.AAIObjectType;
51 import org.onap.so.client.aai.AAIResourcesClient;
52 import org.onap.so.client.aai.entities.AAIEdgeLabel;
53 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
54 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
55 import org.onap.so.client.aai.mapper.AAIObjectMapper;
56 import org.onap.so.db.catalog.beans.OrchestrationStatus;
57 import org.onap.so.bpmn.common.data.TestDataSetup;
58
59
60 @RunWith(MockitoJUnitRunner.Silent.class)
61 public class AAIConfigurationResourcesTest extends TestDataSetup {
62
63
64
65     private Configuration configuration;
66     private ServiceProxy serviceProxy;
67     private ServiceInstance serviceInstance;
68     private GenericVnf genericVnf;
69     private VpnBinding vpnBinding;
70     private VfModule vfModule;
71
72     @Mock
73     protected AAIResourcesClient MOCK_aaiResourcesClient;
74
75     @Mock
76     protected AAIObjectMapper MOCK_aaiObjectMapper;
77
78     @Mock
79     protected InjectionHelper MOCK_injectionHelper;
80
81     @InjectMocks
82     private AAIConfigurationResources aaiConfigurationResources = new AAIConfigurationResources();
83
84     @Before
85     public void before() {
86         configuration = buildConfiguration();
87         serviceProxy = buildServiceProxy();
88         serviceInstance = buildServiceInstance();
89         genericVnf = buildGenericVnf();
90         vfModule = buildVfModule();
91         vpnBinding = buildVpnBinding();
92         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
93     }
94
95     @Test
96     public void createConfigurationTest() {
97         doReturn(new org.onap.aai.domain.yang.Configuration()).when(MOCK_aaiObjectMapper)
98                 .mapConfiguration(configuration);
99         doNothing().when(MOCK_aaiResourcesClient).create(isA(AAIResourceUri.class),
100                 isA(org.onap.aai.domain.yang.Configuration.class));
101
102         aaiConfigurationResources.createConfiguration(configuration);
103
104         assertEquals(OrchestrationStatus.INVENTORIED, configuration.getOrchestrationStatus());
105         verify(MOCK_aaiResourcesClient, times(1)).create(any(AAIResourceUri.class),
106                 isA(org.onap.aai.domain.yang.Configuration.class));
107     }
108
109     @Test
110     public void updateConfigurationTest() {
111         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
112                 isA(org.onap.aai.domain.yang.Configuration.class));
113         configuration.setConfigurationType("VNR");
114         configuration.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
115         aaiConfigurationResources.updateConfiguration(configuration);
116         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
117     }
118
119     @Test
120     public void connectConfigurationToServiceInstanceTest() {
121         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
122         aaiConfigurationResources.connectConfigurationToServiceInstance(configuration.getConfigurationId(),
123                 serviceInstance.getServiceInstanceId());
124         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
125     }
126
127     @Test
128     public void connectConfigurationToServiceInstanceWithEdgeTest() {
129         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class),
130                 any(AAIEdgeLabel.class));
131         aaiConfigurationResources.connectConfigurationToServiceInstance(configuration.getConfigurationId(),
132                 serviceInstance.getServiceInstanceId(), AAIEdgeLabel.USES);
133         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class),
134                 any(AAIEdgeLabel.class));
135     }
136
137     @Test
138     public void disconnectConfigurationToServiceInstanceTest() {
139         doNothing().when(MOCK_aaiResourcesClient).disconnect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
140         aaiConfigurationResources.disconnectConfigurationToServiceInstance("TEST_CONFIGURATION_ID",
141                 "TEST_SERVICE_INSTANCE_ID");
142         verify(MOCK_aaiResourcesClient, times(1)).disconnect(any(AAIResourceUri.class), any(AAIResourceUri.class));
143     }
144
145     @Test
146     public void connectConfigurationToGenericVnfTest() {
147         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
148         aaiConfigurationResources.connectConfigurationToGenericVnf(configuration.getConfigurationId(),
149                 genericVnf.getVnfId());
150         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
151     }
152
153     @Test
154     public void connectConfigurationToVfModuleTest() {
155         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
156         aaiConfigurationResources.connectConfigurationToVfModule(configuration.getConfigurationId(),
157                 vfModule.getVfModuleId(), genericVnf.getVnfId());
158         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
159     }
160
161     @Test
162     public void connectConfigurationToVnfcTest() {
163         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
164         aaiConfigurationResources.connectConfigurationToVnfc(configuration.getConfigurationId(), "vnfcName");
165         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
166     }
167
168     @Test
169     public void connectConfigurationToVpnBindingTest() {
170         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
171         aaiConfigurationResources.connectConfigurationToVpnBinding(configuration.getConfigurationId(),
172                 vpnBinding.getVpnId());
173         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
174     }
175
176     @Test
177     public void getConfigurationFromRelatedLinkTest() {
178         Optional<org.onap.aai.domain.yang.Configuration> configuration =
179                 Optional.of(new org.onap.aai.domain.yang.Configuration());
180         configuration.get().setConfigurationId("config1");
181         doReturn(configuration).when(MOCK_aaiResourcesClient).get(eq(org.onap.aai.domain.yang.Configuration.class),
182                 isA(AAIResourceUri.class));
183         aaiConfigurationResources.getConfigurationFromRelatedLink(
184                 "http://localhost:8090/aai/v12/network/configurations/configuration/config1");
185         verify(MOCK_aaiResourcesClient, times(1)).get(eq(org.onap.aai.domain.yang.Configuration.class),
186                 isA(AAIResourceUri.class));
187     }
188
189     @Test
190     public void connectVrfConfigurationToVnrConfigurationTest() throws Exception {
191         Configuration vrfConfiguration = buildConfiguration();
192         Configuration vnrConfiguration = buildConfiguration();
193         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
194         aaiConfigurationResources.connectVrfConfigurationToVnrConfiguration(vrfConfiguration.getConfigurationId(),
195                 vnrConfiguration.getConfigurationId());
196         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
197     }
198
199     @Test
200     public void connectConfigurationToPnfObjectTest() throws Exception {
201         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
202
203         Pnf primaryPnf = serviceProxy.getServiceInstance().getPnfs().stream().filter(o -> o.getRole().equals("Primary"))
204                 .findFirst().get();
205
206         aaiConfigurationResources.connectConfigurationToPnfObject(primaryPnf.getPnfId(),
207                 configuration.getConfigurationId());
208         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
209     }
210
211     @Test
212     public void getConfigurationTest() {
213         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, "configurationId");
214         doReturn(Optional.of(new org.onap.aai.domain.yang.Configuration())).when(MOCK_aaiResourcesClient)
215                 .get(org.onap.aai.domain.yang.Configuration.class, aaiResourceUri);
216         aaiConfigurationResources.getConfiguration("configurationId");
217         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.Configuration.class, aaiResourceUri);
218     }
219
220     @Test
221     public void deleteConfigurationTest() {
222         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, "configurationId");
223         doNothing().when(MOCK_aaiResourcesClient).delete(aaiResourceUri);
224         aaiConfigurationResources.deleteConfiguration("configurationId");
225         verify(MOCK_aaiResourcesClient, times(1)).delete(aaiResourceUri);
226     }
227
228     @Test
229     public void updateOrchestrationStatusConfigurationTest() throws Exception {
230         configuration.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
231         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
232                 isA(org.onap.aai.domain.yang.Configuration.class));
233         aaiConfigurationResources.updateOrchestrationStatusConfiguration(configuration, OrchestrationStatus.ACTIVE);
234         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
235         assertEquals(OrchestrationStatus.ACTIVE, configuration.getOrchestrationStatus());
236     }
237
238     @Test
239     public void updateConfigurationOrchestrationStatusTest() throws Exception {
240         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
241                 isA(org.onap.aai.domain.yang.Configuration.class));
242         aaiConfigurationResources.updateConfigurationOrchestrationStatus(configuration, OrchestrationStatus.ACTIVE);
243         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class),
244                 any(org.onap.aai.domain.yang.Configuration.class));
245     }
246
247     @Test
248     public void checkConfigurationNameInUseTrueTest() throws Exception {
249         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
250                 .queryParam("configuration-name", "configurationName");
251         doReturn(true).when(MOCK_aaiResourcesClient).exists(eq(uri));
252         boolean nameInUse = aaiConfigurationResources.checkConfigurationNameInUse("configurationName");
253         assertTrue(nameInUse);
254     }
255
256     @Test
257     public void checkConfigurationNameInUseFalseTest() throws Exception {
258         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
259                 .queryParam("configuration-name", "configurationName");
260         doReturn(false).when(MOCK_aaiResourcesClient).exists(eq(uri));
261         boolean nameInUse = aaiConfigurationResources.checkConfigurationNameInUse("configurationName");
262         assertFalse(nameInUse);
263     }
264
265 }