Merge "align logic to new so api"
[vid.git] / vid-app-common / src / test / java / org / onap / vid / services / AaiServiceImplTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6  * Modifications Copyright (C) 2018 - 2019 Nokia. All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.vid.services;
23
24 import static org.assertj.core.api.Assertions.assertThat;
25 import static org.mockito.Mockito.mock;
26 import static org.mockito.Mockito.verify;
27 import static org.mockito.Mockito.when;
28
29 import java.util.ArrayList;
30 import java.util.Arrays;
31 import java.util.List;
32 import javax.ws.rs.core.Response;
33 import org.jeasy.random.EasyRandom;
34 import org.jeasy.random.EasyRandomParameters;
35 import org.jeasy.random.randomizers.misc.BooleanRandomizer;
36 import org.jeasy.random.randomizers.text.StringRandomizer;
37 import org.junit.Test;
38 import org.onap.vid.aai.AaiClientInterface;
39 import org.onap.vid.aai.AaiGetVnfResponse;
40 import org.onap.vid.aai.AaiOverTLSClientInterface;
41 import org.onap.vid.aai.AaiResponse;
42 import org.onap.vid.aai.AaiResponseTranslator;
43 import org.onap.vid.aai.model.AaiGetServicesRequestModel.GetServicesAAIRespone;
44 import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse;
45 import org.onap.vid.aai.model.VnfResult;
46 import org.onap.vid.roles.RoleValidator;
47 import org.onap.vid.roles.RoleValidatorByRoles;
48
49 public class AaiServiceImplTest {
50
51     private static final long STATIC_SEED = 5336L;
52     private EasyRandomParameters parameters = new EasyRandomParameters()
53         .randomize(String.class, new StringRandomizer(4, 4, STATIC_SEED))
54         .randomize(Boolean.class, new BooleanRandomizer(STATIC_SEED));
55     private EasyRandom modelGenerator = new EasyRandom(parameters);
56
57     private AaiClientInterface aaiClient = mock(AaiClientInterface.class);
58     private AaiOverTLSClientInterface aaiSslClient = mock(AaiOverTLSClientInterface.class);
59     private AaiResponseTranslator aaiResponseTranslator = mock(AaiResponseTranslator.class);
60     private AAITreeNodeBuilder aaiTreeNode = mock(AAITreeNodeBuilder.class);
61     private AAIServiceTree aaiServiceTree = mock(AAIServiceTree.class);
62
63     private AaiServiceImpl aaiService = new AaiServiceImpl(
64         aaiClient, aaiSslClient, aaiResponseTranslator, aaiTreeNode, aaiServiceTree
65     );
66
67     @Test
68     public void shouldRetrievePnf() {
69         // given
70         String globalCustomerId = "global_customer";
71         String serviceType = "service_type";
72         String modelVersionId = "model_version";
73         String modelInvariantId = "model_invariant_id";
74         String cloudRegion = "cloud_region";
75         String equipVendor = "equip_vendor";
76         String equipModel = "equip_model";
77
78         AaiResponse response = mock(AaiResponse.class);
79         when(aaiClient.getPNFData(
80             globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel
81         )).thenReturn(response);
82
83         // when
84         AaiResponse actual = aaiService.getPNFData(
85             globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel
86         );
87
88         // then
89         assertThat(response).isEqualTo(actual);
90     }
91
92     @Test
93     @SuppressWarnings("unchecked")
94     public void shouldRetrieveSpecificPnf() {
95         // given
96         String pnfId = "some_pnf_id";
97
98         AaiResponse response = mock(AaiResponse.class);
99         when(aaiClient.getSpecificPnf(pnfId)).thenReturn(response);
100
101         // when
102         AaiResponse actual = aaiService.getSpecificPnf(pnfId);
103
104         // then
105         assertThat(response).isEqualTo(actual);
106     }
107
108     @Test
109     public void shouldRetrieveTenantsByInvariantId() {
110         // given
111         List<String> modelInvariantId = new ArrayList<>();
112
113         Response response = mock(Response.class);
114         when(aaiClient.getVersionByInvariantId(modelInvariantId)).thenReturn(response);
115
116         // when
117         Response actual = aaiService.getVersionByInvariantId(modelInvariantId);
118
119         // then
120         assertThat(response).isEqualTo(actual);
121     }
122
123     @Test
124     @SuppressWarnings("unchecked")
125     public void shouldRetrieveTenants() {
126         // given
127         String globalCustomerId = "global_customer";
128         String serviceType = "service_type";
129
130         GetTenantsResponse permittedTenant = new GetTenantsResponse(
131             "cloud_region", "cloud_owner", "permitted_tenant", "tenant_id", false
132         );
133         GetTenantsResponse unpermittedTenant = new GetTenantsResponse(
134             "cloud_region", "cloud_owner", "unpermitted_tenant", "tenant_id", false
135         );
136
137         AaiResponse<GetTenantsResponse[]> response = mock(AaiResponse.class);
138         when(response.getT()).thenReturn(new GetTenantsResponse[]{ permittedTenant, unpermittedTenant });
139         when(aaiClient.getTenants(globalCustomerId, serviceType)).thenReturn(response);
140
141         RoleValidator roleValidator = mock(RoleValidatorByRoles.class);
142         when(roleValidator.isTenantPermitted(globalCustomerId, serviceType, "permitted_tenant")).thenReturn(true);
143         when(roleValidator.isTenantPermitted(globalCustomerId, serviceType, "unpermitted_tenant")).thenReturn(false);
144
145         // when
146         AaiResponse actual = aaiService.getTenants(globalCustomerId, serviceType, roleValidator);
147
148         // then
149         assertThat(response).isEqualTo(actual);
150         assertThat(permittedTenant.isPermitted).isTrue();
151         assertThat(unpermittedTenant.isPermitted).isFalse();
152     }
153
154     @Test
155     public void shouldRetrieveVNFs() {
156         // given
157         String globalSubscriber = "global_subscriber";
158         String serviceType = "service_type";
159         String serviceInstanceId = "service_instance";
160
161         AaiResponse response = mock(AaiResponse.class);
162         when(aaiClient.getVNFData(globalSubscriber, serviceType, serviceInstanceId)).thenReturn(response);
163
164         // when
165         AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType, serviceInstanceId);
166
167         // then
168         assertThat(response).isEqualTo(actual);
169     }
170
171     @Test
172     @SuppressWarnings("unchecked")
173     public void shouldRetrieveAndFilterVNFsBySubscriberAndServiceType() {
174         // given
175         String globalSubscriber = "global_subscriber";
176         String serviceType = "service_type";
177
178         VnfResult genericVnf = new VnfResult();
179         genericVnf.nodeType = "generic-vnf";
180
181         VnfResult serviceInstance = new VnfResult();
182         serviceInstance.nodeType = "service-instance";
183
184         VnfResult someVnf = new VnfResult();
185         someVnf.nodeType = "some-vnf";
186
187         AaiResponse<AaiGetVnfResponse> response = mock(AaiResponse.class);
188         AaiGetVnfResponse vnfs = new AaiGetVnfResponse();
189         vnfs.results = Arrays.asList(genericVnf, serviceInstance, someVnf);
190         when(response.getT()).thenReturn(vnfs);
191
192         when(aaiClient.getVNFData(globalSubscriber, serviceType)).thenReturn(response);
193
194         // when
195         AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType);
196
197         // then
198         assertThat(response).isEqualTo(actual);
199         assertThat(response.getT().results).containsOnly(genericVnf, serviceInstance);
200     }
201
202     @Test
203     @SuppressWarnings("unchecked")
204     public void getServicesShouldMarkAllServicesAsPermitted() {
205         // given
206         RoleValidator roleValidator = modelGenerator.nextObject(RoleValidatorByRoles.class);
207
208         GetServicesAAIRespone inputPayload = modelGenerator.nextObject(GetServicesAAIRespone.class);
209         assertThat(inputPayload.service.stream().allMatch(service -> service.isPermitted)).isFalse();
210
211         when(aaiClient.getServices()).thenReturn(new AaiResponse<>(inputPayload, "", 200));
212
213         // when
214         AaiResponse<GetServicesAAIRespone> result = aaiService.getServices(roleValidator);
215         GetServicesAAIRespone outputPayload = result.getT();
216
217         // then
218         assertThat(outputPayload.service.stream().allMatch(service -> service.isPermitted)).isTrue();
219     }
220
221     @Test
222     public void shouldGetNodeTemplateInstances() {
223         // given
224         String globalCustomerId = "gcid";
225         String serviceType = "st";
226         String modelVersionId = "mvid";
227         String modelInvariantId = "miid";
228         String cloudRegion = "cr";
229
230         // when
231         aaiService
232             .getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion);
233
234         // then
235         verify(aaiClient)
236             .getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion);
237     }
238
239     @Test
240     public void shouldGetNetworkCollectionDetails() {
241         // given
242         String serviceInstanceId = "siid";
243
244         // when
245         aaiService.getNetworkCollectionDetails(serviceInstanceId);
246
247         // then
248         verify(aaiClient).getNetworkCollectionDetails(serviceInstanceId);
249     }
250
251     @Test
252     public void shouldGetInstanceGroupsByCloudRegion() {
253         // given
254         String cloudOwner = "co";
255         String cloudRegionId = "crid";
256         String networkFunction = "nf";
257
258         // when
259         aaiService.getInstanceGroupsByCloudRegion(cloudOwner, cloudRegionId, networkFunction);
260
261         // then
262         verify(aaiClient).getInstanceGroupsByCloudRegion(cloudOwner, cloudRegionId, networkFunction);
263     }
264
265     @Test
266     public void getAAIServiceTree() {
267         // given
268         String globalCustomerId = "gcid";
269         String serviceType = "st";
270         String serviceInstanceId = "siid";
271
272         // when
273         aaiService.getAAIServiceTree(globalCustomerId, serviceType, serviceInstanceId);
274
275         // then
276         verify(aaiServiceTree).getServiceInstanceTopology(globalCustomerId, serviceType, serviceInstanceId);
277     }
278 }