9855c8587a93d755ddef16de7d5af4c34a256794
[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         doReturn(MOCK_aaiResourcesClient).when(MOCK_aaiResourcesClient).createIfNotExists(isA(AAIResourceUri.class),
100                 any(Optional.class));
101         aaiConfigurationResources.createConfiguration(configuration);
102
103         assertEquals(OrchestrationStatus.INVENTORIED, configuration.getOrchestrationStatus());
104         verify(MOCK_aaiResourcesClient, times(1)).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
105     }
106
107     @Test
108     public void updateConfigurationTest() {
109         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
110                 isA(org.onap.aai.domain.yang.Configuration.class));
111         configuration.setConfigurationType("VNR");
112         configuration.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
113         aaiConfigurationResources.updateConfiguration(configuration);
114         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
115     }
116
117     @Test
118     public void connectConfigurationToServiceInstanceTest() {
119         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
120         aaiConfigurationResources.connectConfigurationToServiceInstance(configuration.getConfigurationId(),
121                 serviceInstance.getServiceInstanceId());
122         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
123     }
124
125     @Test
126     public void connectConfigurationToServiceInstanceWithEdgeTest() {
127         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class),
128                 any(AAIEdgeLabel.class));
129         aaiConfigurationResources.connectConfigurationToServiceInstance(configuration.getConfigurationId(),
130                 serviceInstance.getServiceInstanceId(), AAIEdgeLabel.USES);
131         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class),
132                 any(AAIEdgeLabel.class));
133     }
134
135     @Test
136     public void disconnectConfigurationToServiceInstanceTest() {
137         doNothing().when(MOCK_aaiResourcesClient).disconnect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
138         aaiConfigurationResources.disconnectConfigurationToServiceInstance("TEST_CONFIGURATION_ID",
139                 "TEST_SERVICE_INSTANCE_ID");
140         verify(MOCK_aaiResourcesClient, times(1)).disconnect(any(AAIResourceUri.class), any(AAIResourceUri.class));
141     }
142
143     @Test
144     public void connectConfigurationToGenericVnfTest() {
145         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
146         aaiConfigurationResources.connectConfigurationToGenericVnf(configuration.getConfigurationId(),
147                 genericVnf.getVnfId());
148         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
149     }
150
151     @Test
152     public void connectConfigurationToVfModuleTest() {
153         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
154         aaiConfigurationResources.connectConfigurationToVfModule(configuration.getConfigurationId(),
155                 vfModule.getVfModuleId(), genericVnf.getVnfId());
156         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
157     }
158
159     @Test
160     public void connectConfigurationToVnfcTest() {
161         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
162         aaiConfigurationResources.connectConfigurationToVnfc(configuration.getConfigurationId(), "vnfcName");
163         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
164     }
165
166     @Test
167     public void connectConfigurationToVpnBindingTest() {
168         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
169         aaiConfigurationResources.connectConfigurationToVpnBinding(configuration.getConfigurationId(),
170                 vpnBinding.getVpnId());
171         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
172     }
173
174     @Test
175     public void getConfigurationFromRelatedLinkTest() {
176         Optional<org.onap.aai.domain.yang.Configuration> configuration =
177                 Optional.of(new org.onap.aai.domain.yang.Configuration());
178         configuration.get().setConfigurationId("config1");
179         doReturn(configuration).when(MOCK_aaiResourcesClient).get(eq(org.onap.aai.domain.yang.Configuration.class),
180                 isA(AAIResourceUri.class));
181         aaiConfigurationResources.getConfigurationFromRelatedLink(
182                 "http://localhost:8090/aai/v12/network/configurations/configuration/config1");
183         verify(MOCK_aaiResourcesClient, times(1)).get(eq(org.onap.aai.domain.yang.Configuration.class),
184                 isA(AAIResourceUri.class));
185     }
186
187     @Test
188     public void connectVrfConfigurationToVnrConfigurationTest() throws Exception {
189         Configuration vrfConfiguration = buildConfiguration();
190         Configuration vnrConfiguration = buildConfiguration();
191         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
192         aaiConfigurationResources.connectVrfConfigurationToVnrConfiguration(vrfConfiguration.getConfigurationId(),
193                 vnrConfiguration.getConfigurationId());
194         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
195     }
196
197     @Test
198     public void connectConfigurationToPnfObjectTest() throws Exception {
199         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
200
201         Pnf primaryPnf = serviceProxy.getServiceInstance().getPnfs().stream().filter(o -> o.getRole().equals("Primary"))
202                 .findFirst().get();
203
204         aaiConfigurationResources.connectConfigurationToPnfObject(primaryPnf.getPnfId(),
205                 configuration.getConfigurationId());
206         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
207     }
208
209     @Test
210     public void getConfigurationTest() {
211         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, "configurationId");
212         doReturn(Optional.of(new org.onap.aai.domain.yang.Configuration())).when(MOCK_aaiResourcesClient)
213                 .get(org.onap.aai.domain.yang.Configuration.class, aaiResourceUri);
214         aaiConfigurationResources.getConfiguration("configurationId");
215         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.Configuration.class, aaiResourceUri);
216     }
217
218     @Test
219     public void deleteConfigurationTest() {
220         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, "configurationId");
221         doNothing().when(MOCK_aaiResourcesClient).delete(aaiResourceUri);
222         aaiConfigurationResources.deleteConfiguration("configurationId");
223         verify(MOCK_aaiResourcesClient, times(1)).delete(aaiResourceUri);
224     }
225
226     @Test
227     public void updateOrchestrationStatusConfigurationTest() throws Exception {
228         configuration.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
229         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
230                 isA(org.onap.aai.domain.yang.Configuration.class));
231         aaiConfigurationResources.updateOrchestrationStatusConfiguration(configuration, OrchestrationStatus.ACTIVE);
232         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
233         assertEquals(OrchestrationStatus.ACTIVE, configuration.getOrchestrationStatus());
234     }
235
236     @Test
237     public void updateConfigurationOrchestrationStatusTest() throws Exception {
238         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
239                 isA(org.onap.aai.domain.yang.Configuration.class));
240         aaiConfigurationResources.updateConfigurationOrchestrationStatus(configuration, OrchestrationStatus.ACTIVE);
241         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class),
242                 any(org.onap.aai.domain.yang.Configuration.class));
243     }
244
245     @Test
246     public void checkConfigurationNameInUseTrueTest() throws Exception {
247         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
248                 .queryParam("configuration-name", "configurationName");
249         doReturn(true).when(MOCK_aaiResourcesClient).exists(eq(uri));
250         boolean nameInUse = aaiConfigurationResources.checkConfigurationNameInUse("configurationName");
251         assertTrue(nameInUse);
252     }
253
254     @Test
255     public void checkConfigurationNameInUseFalseTest() throws Exception {
256         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
257                 .queryParam("configuration-name", "configurationName");
258         doReturn(false).when(MOCK_aaiResourcesClient).exists(eq(uri));
259         boolean nameInUse = aaiConfigurationResources.checkConfigurationNameInUse("configurationName");
260         assertFalse(nameInUse);
261     }
262
263 }