2 * ============LICENSE_START=======================================================
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
22 package org.onap.vid.services;
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;
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;
49 public class AaiServiceImplTest {
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);
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);
63 private AaiServiceImpl aaiService = new AaiServiceImpl(
64 aaiClient, aaiSslClient, aaiResponseTranslator, aaiTreeNode, aaiServiceTree
68 public void shouldRetrievePnf() {
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";
78 AaiResponse response = mock(AaiResponse.class);
79 when(aaiClient.getPNFData(
80 globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel
81 )).thenReturn(response);
84 AaiResponse actual = aaiService.getPNFData(
85 globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel
89 assertThat(response).isEqualTo(actual);
93 @SuppressWarnings("unchecked")
94 public void shouldRetrieveSpecificPnf() {
96 String pnfId = "some_pnf_id";
98 AaiResponse response = mock(AaiResponse.class);
99 when(aaiClient.getSpecificPnf(pnfId)).thenReturn(response);
102 AaiResponse actual = aaiService.getSpecificPnf(pnfId);
105 assertThat(response).isEqualTo(actual);
109 public void shouldRetrieveTenantsByInvariantId() {
111 List<String> modelInvariantId = new ArrayList<>();
113 Response response = mock(Response.class);
114 when(aaiClient.getVersionByInvariantId(modelInvariantId)).thenReturn(response);
117 Response actual = aaiService.getVersionByInvariantId(modelInvariantId);
120 assertThat(response).isEqualTo(actual);
124 @SuppressWarnings("unchecked")
125 public void shouldRetrieveTenants() {
127 String globalCustomerId = "global_customer";
128 String serviceType = "service_type";
130 GetTenantsResponse permittedTenant = new GetTenantsResponse(
131 "cloud_region", "cloud_owner", "permitted_tenant", "tenant_id", false
133 GetTenantsResponse unpermittedTenant = new GetTenantsResponse(
134 "cloud_region", "cloud_owner", "unpermitted_tenant", "tenant_id", false
137 AaiResponse<GetTenantsResponse[]> response = mock(AaiResponse.class);
138 when(response.getT()).thenReturn(new GetTenantsResponse[]{ permittedTenant, unpermittedTenant });
139 when(aaiClient.getTenants(globalCustomerId, serviceType)).thenReturn(response);
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);
146 AaiResponse actual = aaiService.getTenants(globalCustomerId, serviceType, roleValidator);
149 assertThat(response).isEqualTo(actual);
150 assertThat(permittedTenant.isPermitted).isTrue();
151 assertThat(unpermittedTenant.isPermitted).isFalse();
155 public void shouldRetrieveVNFs() {
157 String globalSubscriber = "global_subscriber";
158 String serviceType = "service_type";
159 String serviceInstanceId = "service_instance";
161 AaiResponse response = mock(AaiResponse.class);
162 when(aaiClient.getVNFData(globalSubscriber, serviceType, serviceInstanceId)).thenReturn(response);
165 AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType, serviceInstanceId);
168 assertThat(response).isEqualTo(actual);
172 @SuppressWarnings("unchecked")
173 public void shouldRetrieveAndFilterVNFsBySubscriberAndServiceType() {
175 String globalSubscriber = "global_subscriber";
176 String serviceType = "service_type";
178 VnfResult genericVnf = new VnfResult();
179 genericVnf.nodeType = "generic-vnf";
181 VnfResult serviceInstance = new VnfResult();
182 serviceInstance.nodeType = "service-instance";
184 VnfResult someVnf = new VnfResult();
185 someVnf.nodeType = "some-vnf";
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);
192 when(aaiClient.getVNFData(globalSubscriber, serviceType)).thenReturn(response);
195 AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType);
198 assertThat(response).isEqualTo(actual);
199 assertThat(response.getT().results).containsOnly(genericVnf, serviceInstance);
203 @SuppressWarnings("unchecked")
204 public void getServicesShouldMarkAllServicesAsPermitted() {
206 RoleValidator roleValidator = modelGenerator.nextObject(RoleValidatorByRoles.class);
208 GetServicesAAIRespone inputPayload = modelGenerator.nextObject(GetServicesAAIRespone.class);
209 assertThat(inputPayload.service.stream().allMatch(service -> service.isPermitted)).isFalse();
211 when(aaiClient.getServices()).thenReturn(new AaiResponse<>(inputPayload, "", 200));
214 AaiResponse<GetServicesAAIRespone> result = aaiService.getServices(roleValidator);
215 GetServicesAAIRespone outputPayload = result.getT();
218 assertThat(outputPayload.service.stream().allMatch(service -> service.isPermitted)).isTrue();
222 public void shouldGetNodeTemplateInstances() {
224 String globalCustomerId = "gcid";
225 String serviceType = "st";
226 String modelVersionId = "mvid";
227 String modelInvariantId = "miid";
228 String cloudRegion = "cr";
232 .getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion);
236 .getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion);
240 public void shouldGetNetworkCollectionDetails() {
242 String serviceInstanceId = "siid";
245 aaiService.getNetworkCollectionDetails(serviceInstanceId);
248 verify(aaiClient).getNetworkCollectionDetails(serviceInstanceId);
252 public void shouldGetInstanceGroupsByCloudRegion() {
254 String cloudOwner = "co";
255 String cloudRegionId = "crid";
256 String networkFunction = "nf";
259 aaiService.getInstanceGroupsByCloudRegion(cloudOwner, cloudRegionId, networkFunction);
262 verify(aaiClient).getInstanceGroupsByCloudRegion(cloudOwner, cloudRegionId, networkFunction);
266 public void getAAIServiceTree() {
268 String globalCustomerId = "gcid";
269 String serviceType = "st";
270 String serviceInstanceId = "siid";
273 aaiService.getAAIServiceTree(globalCustomerId, serviceType, serviceInstanceId);
276 verify(aaiServiceTree).getServiceInstanceTopology(globalCustomerId, serviceType, serviceInstanceId);