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;
48 public class AaiServiceImplTest {
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);
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);
62 private AaiServiceImpl aaiService = new AaiServiceImpl(
63 aaiClient, aaiSslClient, aaiResponseTranslator, aaiTreeNode, aaiServiceTree
67 public void shouldRetrievePnf() {
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";
77 AaiResponse response = mock(AaiResponse.class);
78 when(aaiClient.getPNFData(
79 globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel
80 )).thenReturn(response);
83 AaiResponse actual = aaiService.getPNFData(
84 globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel
88 assertThat(response).isEqualTo(actual);
92 @SuppressWarnings("unchecked")
93 public void shouldRetrieveSpecificPnf() {
95 String pnfId = "some_pnf_id";
97 AaiResponse response = mock(AaiResponse.class);
98 when(aaiClient.getSpecificPnf(pnfId)).thenReturn(response);
101 AaiResponse actual = aaiService.getSpecificPnf(pnfId);
104 assertThat(response).isEqualTo(actual);
108 public void shouldRetrieveTenantsByInvariantId() {
110 List<String> modelInvariantId = new ArrayList<>();
112 Response response = mock(Response.class);
113 when(aaiClient.getVersionByInvariantId(modelInvariantId)).thenReturn(response);
116 Response actual = aaiService.getVersionByInvariantId(modelInvariantId);
119 assertThat(response).isEqualTo(actual);
123 @SuppressWarnings("unchecked")
124 public void shouldRetrieveTenants() {
126 String globalCustomerId = "global_customer";
127 String serviceType = "service_type";
129 GetTenantsResponse permittedTenant = new GetTenantsResponse(
130 "cloud_region", "cloud_owner", "permitted_tenant", "tenant_id", false
132 GetTenantsResponse unpermittedTenant = new GetTenantsResponse(
133 "cloud_region", "cloud_owner", "unpermitted_tenant", "tenant_id", false
136 AaiResponse<GetTenantsResponse[]> response = mock(AaiResponse.class);
137 when(response.getT()).thenReturn(new GetTenantsResponse[]{ permittedTenant, unpermittedTenant });
138 when(aaiClient.getTenants(globalCustomerId, serviceType)).thenReturn(response);
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);
145 AaiResponse actual = aaiService.getTenants(globalCustomerId, serviceType, roleValidator);
148 assertThat(response).isEqualTo(actual);
149 assertThat(permittedTenant.isPermitted).isTrue();
150 assertThat(unpermittedTenant.isPermitted).isFalse();
154 public void shouldRetrieveVNFs() {
156 String globalSubscriber = "global_subscriber";
157 String serviceType = "service_type";
158 String serviceInstanceId = "service_instance";
160 AaiResponse response = mock(AaiResponse.class);
161 when(aaiClient.getVNFData(globalSubscriber, serviceType, serviceInstanceId)).thenReturn(response);
164 AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType, serviceInstanceId);
167 assertThat(response).isEqualTo(actual);
171 @SuppressWarnings("unchecked")
172 public void shouldRetrieveAndFilterVNFsBySubscriberAndServiceType() {
174 String globalSubscriber = "global_subscriber";
175 String serviceType = "service_type";
177 VnfResult genericVnf = new VnfResult();
178 genericVnf.nodeType = "generic-vnf";
180 VnfResult serviceInstance = new VnfResult();
181 serviceInstance.nodeType = "service-instance";
183 VnfResult someVnf = new VnfResult();
184 someVnf.nodeType = "some-vnf";
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);
191 when(aaiClient.getVNFData(globalSubscriber, serviceType)).thenReturn(response);
194 AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType);
197 assertThat(response).isEqualTo(actual);
198 assertThat(response.getT().results).containsOnly(genericVnf, serviceInstance);
202 @SuppressWarnings("unchecked")
203 public void getServicesShouldMarkAllServicesAsPermitted() {
205 RoleValidator roleValidator = modelGenerator.nextObject(RoleValidator.class);
207 GetServicesAAIRespone inputPayload = modelGenerator.nextObject(GetServicesAAIRespone.class);
208 assertThat(inputPayload.service.stream().allMatch(service -> service.isPermitted)).isFalse();
210 when(aaiClient.getServices()).thenReturn(new AaiResponse<>(inputPayload, "", 200));
213 AaiResponse<GetServicesAAIRespone> result = aaiService.getServices(roleValidator);
214 GetServicesAAIRespone outputPayload = result.getT();
217 assertThat(outputPayload.service.stream().allMatch(service -> service.isPermitted)).isTrue();
221 public void shouldGetNodeTemplateInstances() {
223 String globalCustomerId = "gcid";
224 String serviceType = "st";
225 String modelVersionId = "mvid";
226 String modelInvariantId = "miid";
227 String cloudRegion = "cr";
231 .getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion);
235 .getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion);
239 public void shouldGetNetworkCollectionDetails() {
241 String serviceInstanceId = "siid";
244 aaiService.getNetworkCollectionDetails(serviceInstanceId);
247 verify(aaiClient).getNetworkCollectionDetails(serviceInstanceId);
251 public void shouldGetInstanceGroupsByCloudRegion() {
253 String cloudOwner = "co";
254 String cloudRegionId = "crid";
255 String networkFunction = "nf";
258 aaiService.getInstanceGroupsByCloudRegion(cloudOwner, cloudRegionId, networkFunction);
261 verify(aaiClient).getInstanceGroupsByCloudRegion(cloudOwner, cloudRegionId, networkFunction);
265 public void getAAIServiceTree() {
267 String globalCustomerId = "gcid";
268 String serviceType = "st";
269 String serviceInstanceId = "siid";
272 aaiService.getAAIServiceTree(globalCustomerId, serviceType, serviceInstanceId);
275 verify(aaiServiceTree).getServiceInstanceTopology(globalCustomerId, serviceType, serviceInstanceId);