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