Merge "Preset for Workflows action:EQUALS:scaleOut"
[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
48 public class AaiServiceImplTest {
49
50     private static final long STATIC_SEED = 5336L;
51     private EasyRandomParameters parameters = new EasyRandomParameters()
52         .randomize(String.class, new StringRandomizer(4, 4, STATIC_SEED))
53         .randomize(Boolean.class, new BooleanRandomizer(STATIC_SEED));
54     private EasyRandom modelGenerator = new EasyRandom(parameters);
55
56     private AaiClientInterface aaiClient = mock(AaiClientInterface.class);
57     private AaiOverTLSClientInterface aaiSslClient = mock(AaiOverTLSClientInterface.class);
58     private AaiResponseTranslator aaiResponseTranslator = mock(AaiResponseTranslator.class);
59     private AAITreeNodeBuilder aaiTreeNode = mock(AAITreeNodeBuilder.class);
60     private AAIServiceTree aaiServiceTree = mock(AAIServiceTree.class);
61
62     private AaiServiceImpl aaiService = new AaiServiceImpl(
63         aaiClient, aaiSslClient, aaiResponseTranslator, aaiTreeNode, aaiServiceTree
64     );
65
66     @Test
67     public void shouldRetrievePnf() {
68         // given
69         String globalCustomerId = "global_customer";
70         String serviceType = "service_type";
71         String modelVersionId = "model_version";
72         String modelInvariantId = "model_invariant_id";
73         String cloudRegion = "cloud_region";
74         String equipVendor = "equip_vendor";
75         String equipModel = "equip_model";
76
77         AaiResponse response = mock(AaiResponse.class);
78         when(aaiClient.getPNFData(
79             globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel
80         )).thenReturn(response);
81
82         // when
83         AaiResponse actual = aaiService.getPNFData(
84             globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel
85         );
86
87         // then
88         assertThat(response).isEqualTo(actual);
89     }
90
91     @Test
92     @SuppressWarnings("unchecked")
93     public void shouldRetrieveSpecificPnf() {
94         // given
95         String pnfId = "some_pnf_id";
96
97         AaiResponse response = mock(AaiResponse.class);
98         when(aaiClient.getSpecificPnf(pnfId)).thenReturn(response);
99
100         // when
101         AaiResponse actual = aaiService.getSpecificPnf(pnfId);
102
103         // then
104         assertThat(response).isEqualTo(actual);
105     }
106
107     @Test
108     public void shouldRetrieveTenantsByInvariantId() {
109         // given
110         List<String> modelInvariantId = new ArrayList<>();
111
112         Response response = mock(Response.class);
113         when(aaiClient.getVersionByInvariantId(modelInvariantId)).thenReturn(response);
114
115         // when
116         Response actual = aaiService.getVersionByInvariantId(modelInvariantId);
117
118         // then
119         assertThat(response).isEqualTo(actual);
120     }
121
122     @Test
123     @SuppressWarnings("unchecked")
124     public void shouldRetrieveTenants() {
125         // given
126         String globalCustomerId = "global_customer";
127         String serviceType = "service_type";
128
129         GetTenantsResponse permittedTenant = new GetTenantsResponse(
130             "cloud_region", "cloud_owner", "permitted_tenant", "tenant_id", false
131         );
132         GetTenantsResponse unpermittedTenant = new GetTenantsResponse(
133             "cloud_region", "cloud_owner", "unpermitted_tenant", "tenant_id", false
134         );
135
136         AaiResponse<GetTenantsResponse[]> response = mock(AaiResponse.class);
137         when(response.getT()).thenReturn(new GetTenantsResponse[]{ permittedTenant, unpermittedTenant });
138         when(aaiClient.getTenants(globalCustomerId, serviceType)).thenReturn(response);
139
140         RoleValidator roleValidator = mock(RoleValidator.class);
141         when(roleValidator.isTenantPermitted(globalCustomerId, serviceType, "permitted_tenant")).thenReturn(true);
142         when(roleValidator.isTenantPermitted(globalCustomerId, serviceType, "unpermitted_tenant")).thenReturn(false);
143
144         // when
145         AaiResponse actual = aaiService.getTenants(globalCustomerId, serviceType, roleValidator);
146
147         // then
148         assertThat(response).isEqualTo(actual);
149         assertThat(permittedTenant.isPermitted).isTrue();
150         assertThat(unpermittedTenant.isPermitted).isFalse();
151     }
152
153     @Test
154     public void shouldRetrieveVNFs() {
155         // given
156         String globalSubscriber = "global_subscriber";
157         String serviceType = "service_type";
158         String serviceInstanceId = "service_instance";
159
160         AaiResponse response = mock(AaiResponse.class);
161         when(aaiClient.getVNFData(globalSubscriber, serviceType, serviceInstanceId)).thenReturn(response);
162
163         // when
164         AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType, serviceInstanceId);
165
166         // then
167         assertThat(response).isEqualTo(actual);
168     }
169
170     @Test
171     @SuppressWarnings("unchecked")
172     public void shouldRetrieveAndFilterVNFsBySubscriberAndServiceType() {
173         // given
174         String globalSubscriber = "global_subscriber";
175         String serviceType = "service_type";
176
177         VnfResult genericVnf = new VnfResult();
178         genericVnf.nodeType = "generic-vnf";
179
180         VnfResult serviceInstance = new VnfResult();
181         serviceInstance.nodeType = "service-instance";
182
183         VnfResult someVnf = new VnfResult();
184         someVnf.nodeType = "some-vnf";
185
186         AaiResponse<AaiGetVnfResponse> response = mock(AaiResponse.class);
187         AaiGetVnfResponse vnfs = new AaiGetVnfResponse();
188         vnfs.results = Arrays.asList(genericVnf, serviceInstance, someVnf);
189         when(response.getT()).thenReturn(vnfs);
190
191         when(aaiClient.getVNFData(globalSubscriber, serviceType)).thenReturn(response);
192
193         // when
194         AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType);
195
196         // then
197         assertThat(response).isEqualTo(actual);
198         assertThat(response.getT().results).containsOnly(genericVnf, serviceInstance);
199     }
200
201     @Test
202     @SuppressWarnings("unchecked")
203     public void getServicesShouldMarkAllServicesAsPermitted() {
204         // given
205         RoleValidator roleValidator = modelGenerator.nextObject(RoleValidator.class);
206
207         GetServicesAAIRespone inputPayload = modelGenerator.nextObject(GetServicesAAIRespone.class);
208         assertThat(inputPayload.service.stream().allMatch(service -> service.isPermitted)).isFalse();
209
210         when(aaiClient.getServices()).thenReturn(new AaiResponse<>(inputPayload, "", 200));
211
212         // when
213         AaiResponse<GetServicesAAIRespone> result = aaiService.getServices(roleValidator);
214         GetServicesAAIRespone outputPayload = result.getT();
215
216         // then
217         assertThat(outputPayload.service.stream().allMatch(service -> service.isPermitted)).isTrue();
218     }
219
220     @Test
221     public void shouldGetNodeTemplateInstances() {
222         // given
223         String globalCustomerId = "gcid";
224         String serviceType = "st";
225         String modelVersionId = "mvid";
226         String modelInvariantId = "miid";
227         String cloudRegion = "cr";
228
229         // when
230         aaiService
231             .getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion);
232
233         // then
234         verify(aaiClient)
235             .getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion);
236     }
237
238     @Test
239     public void shouldGetNetworkCollectionDetails() {
240         // given
241         String serviceInstanceId = "siid";
242
243         // when
244         aaiService.getNetworkCollectionDetails(serviceInstanceId);
245
246         // then
247         verify(aaiClient).getNetworkCollectionDetails(serviceInstanceId);
248     }
249
250     @Test
251     public void shouldGetInstanceGroupsByCloudRegion() {
252         // given
253         String cloudOwner = "co";
254         String cloudRegionId = "crid";
255         String networkFunction = "nf";
256
257         // when
258         aaiService.getInstanceGroupsByCloudRegion(cloudOwner, cloudRegionId, networkFunction);
259
260         // then
261         verify(aaiClient).getInstanceGroupsByCloudRegion(cloudOwner, cloudRegionId, networkFunction);
262     }
263
264     @Test
265     public void getAAIServiceTree() {
266         // given
267         String globalCustomerId = "gcid";
268         String serviceType = "st";
269         String serviceInstanceId = "siid";
270
271         // when
272         aaiService.getAAIServiceTree(globalCustomerId, serviceType, serviceInstanceId);
273
274         // then
275         verify(aaiServiceTree).getServiceInstanceTopology(globalCustomerId, serviceType, serviceInstanceId);
276     }
277 }