1 /*******************************************************************************
 
   2  *  ============LICENSE_START=======================================================
 
   4  *  ================================================================================
 
   5  *   Copyright (C) 2021-2022 Wipro Limited.
 
   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
 
  11  *          http://www.apache.org/licenses/LICENSE-2.0
 
  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=========================================================
 
  20  *******************************************************************************/
 
  22 package org.onap.slice.analysis.ms.aai;
 
  24 import static org.junit.Assert.assertEquals;
 
  26 import java.nio.file.Files;
 
  27 import java.nio.file.Paths;
 
  28 import java.util.ArrayList;
 
  29 import java.util.HashMap;
 
  30 import java.util.List;
 
  33 import org.junit.Test;
 
  34 import org.junit.runner.RunWith;
 
  35 import org.mockito.InjectMocks;
 
  36 import org.mockito.Mock;
 
  37 import org.mockito.Mockito;
 
  38 import org.onap.slice.analysis.ms.models.Configuration;
 
  39 import org.onap.slice.analysis.ms.restclients.AaiRestClient;
 
  40 import org.powermock.api.mockito.PowerMockito;
 
  41 import org.powermock.core.classloader.annotations.PowerMockIgnore;
 
  42 import org.powermock.core.classloader.annotations.PrepareForTest;
 
  43 import org.powermock.modules.junit4.PowerMockRunner;
 
  44 import org.powermock.modules.junit4.PowerMockRunnerDelegate;
 
  45 import org.springframework.boot.test.context.SpringBootTest;
 
  46 import org.springframework.http.HttpStatus;
 
  47 import org.springframework.http.ResponseEntity;
 
  48 import org.springframework.test.context.junit4.SpringRunner;
 
  50 @RunWith(PowerMockRunner.class)
 
  51 @PowerMockRunnerDelegate(SpringRunner.class)
 
  52 @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"})
 
  53 @PrepareForTest({AaiService.class, Configuration.class})
 
  54 @SpringBootTest(classes = AaiInterfaceServiceTest.class)
 
  55 public class AaiInterfaceServiceTest {
 
  57     Configuration configuration = Configuration.getInstance();
 
  60     AaiService aaiService;
 
  63     AaiRestClient restClient;
 
  66     public void fetchCurrentConfigurationOfSlice() {
 
  67         configuration.setAaiUrl("http://aai:30233/aai/v21/business/customers/customer/");
 
  68         PowerMockito.mockStatic(AaiService.class);
 
  69         PowerMockito.mockStatic(Configuration.class);
 
  70         PowerMockito.when(Configuration.getInstance()).thenReturn(configuration);
 
  71         Map<String, Integer> responsemap = new HashMap<>();
 
  72         responsemap.put("dLThptPerSlice", 60);
 
  73         responsemap.put("uLThptPerSlice", 54);
 
  75             String serviceInstance =
 
  76                     new String(Files.readAllBytes(Paths.get("src/test/resources/aaiDetailsList.json")));
 
  77             Mockito.when(restClient.sendGetRequest(Mockito.anyString(), Mockito.any()))
 
  78                     .thenReturn(new ResponseEntity<Object>(serviceInstance, HttpStatus.OK));
 
  80         } catch (Exception e) {
 
  84         assertEquals(responsemap, aaiService.fetchCurrentConfigurationOfSlice("001-010000"));
 
  88     public void fetchServiceProfile() {
 
  89         Map<String, String> responseMap = new HashMap<String, String>();
 
  90         responseMap.put("sNSSAI", "001-00110");
 
  91         responseMap.put("ranNFNSSIId", "4b889f2b-8ee4-4ec7-881f-5b1af8a74039");
 
  92         responseMap.put("sliceProfileId", "ab9af40f13f7219099333");
 
  93         responseMap.put("globalSubscriberId", "5GCustomer");
 
  94         responseMap.put("subscriptionServiceType", "5G");
 
  97             String serviceInstance =
 
  98                     new String(Files.readAllBytes(Paths.get("src/test/resources/aaiDetailsList.json")));
 
  99             Mockito.when(restClient.sendGetRequest(Mockito.anyString(), Mockito.any()))
 
 100                     .thenReturn(new ResponseEntity<Object>(serviceInstance, HttpStatus.OK));
 
 102         } catch (Exception e) {
 
 107         assertEquals(responseMap, aaiService.fetchServiceDetails("001-00110"));
 
 111     public void fetchSubscriberAndSubscriptionServiceTypeTest() throws Exception {
 
 113         configuration.setAaiUrl("http://aai:30233/aai/v21");
 
 114         Map<String, String> expectedResponse = new HashMap<String, String>();
 
 115         expectedResponse.put("globalSubscriberId", "5GCustomer");
 
 116         expectedResponse.put("subscriptionServiceType", "5G");
 
 117         PowerMockito.mockStatic(AaiService.class);
 
 118         PowerMockito.mockStatic(Configuration.class);
 
 119         PowerMockito.when(Configuration.getInstance()).thenReturn(configuration);
 
 123             String serviceInstance =
 
 124                     new String(Files.readAllBytes(Paths.get("src/test/resources/aaiDetailsList.json")));
 
 125             Mockito.when(restClient.sendGetRequest(Mockito.anyString(), Mockito.any()))
 
 126                     .thenReturn(new ResponseEntity<Object>(serviceInstance, HttpStatus.OK));
 
 128         } catch (Exception e) {
 
 132         Map<String, String> actualResponse = aaiService.fetchSubscriberAndSubscriptionServiceType();
 
 133         assertEquals(expectedResponse, actualResponse);
 
 137     public void fetchSliceProfilesOfAllotedResourceDataTest() throws Exception {
 
 138         configuration.setAaiUrl("http://aai:30233/aai/v21");
 
 139         List<String> allotedResourceList = new ArrayList<>();
 
 140         allotedResourceList.add("530d188d-9087-49af-a44a-90c40e0c2d47");
 
 141         List<String> expectedResponse = new ArrayList<>();
 
 142         expectedResponse.add("b2ae730f-1d5f-495a-8112-dac017a7348c");
 
 143         expectedResponse.add("cad8fa36-2d55-4c12-a92e-1bd551517a0c");
 
 144         expectedResponse.add("8d0d698e-77f4-4453-8c09-ae2cbe6a9a04");
 
 145         PowerMockito.mockStatic(AaiService.class);
 
 146         PowerMockito.mockStatic(Configuration.class);
 
 147         PowerMockito.when(Configuration.getInstance()).thenReturn(configuration);
 
 151             String serviceInstance =
 
 152                     new String(Files.readAllBytes(Paths.get("src/test/resources/alloted-resource.json")));
 
 153             Mockito.when(restClient.sendGetRequest(Mockito.anyString(), Mockito.any()))
 
 154                     .thenReturn(new ResponseEntity<Object>(serviceInstance, HttpStatus.OK));
 
 156         } catch (Exception e) {
 
 160         List<String> actualResponse = aaiService.fetchSliceProfilesOfAllotedResourceData(allotedResourceList);
 
 161         assertEquals(expectedResponse, actualResponse);
 
 165     public void fetchSnssaiOfSliceProfileTest() throws Exception {
 
 166         configuration.setAaiUrl("http://aai:30233/aai/v21");
 
 167         List<String> sliceProfileList = new ArrayList<>();
 
 168         sliceProfileList.add("b2ae730f-1d5f-495a-8112-dac017a7348c");
 
 169         sliceProfileList.add("cad8fa36-2d55-4c12-a92e-1bd551517a0c");
 
 170         sliceProfileList.add("8d0d698e-77f4-4453-8c09-ae2cbe6a9a04");
 
 171         List<String> expectedResponse = new ArrayList<>();
 
 172         expectedResponse.add("01-06E442");
 
 173         expectedResponse.add("01-B989BD");
 
 175         PowerMockito.mockStatic(AaiService.class);
 
 176         PowerMockito.mockStatic(Configuration.class);
 
 177         PowerMockito.when(Configuration.getInstance()).thenReturn(configuration);
 
 178         String serviceInstanceUrlAn = "b2ae730f-1d5f-495a-8112-dac017a7348c";
 
 179         String serviceInstanceUrlCn = "cad8fa36-2d55-4c12-a92e-1bd551517a0c";
 
 180         String serviceInstanceUrlTn = "8d0d698e-77f4-4453-8c09-ae2cbe6a9a04";
 
 184             String serviceInstanceAn =
 
 185                     new String(Files.readAllBytes(Paths.get("src/test/resources/sliceprofile_an_sa1.json")));
 
 186             Mockito.when(restClient.sendGetRequest(Mockito.contains(serviceInstanceUrlAn), Mockito.any()))
 
 187                     .thenReturn(new ResponseEntity<Object>(serviceInstanceAn, HttpStatus.OK));
 
 189             String serviceInstanceCn =
 
 190                     new String(Files.readAllBytes(Paths.get("src/test/resources/sliceprofile_cn_sa1.json")));
 
 191             Mockito.when(restClient.sendGetRequest(Mockito.contains(serviceInstanceUrlCn), Mockito.any()))
 
 192                     .thenReturn(new ResponseEntity<Object>(serviceInstanceCn, HttpStatus.OK));
 
 194             String serviceInstanceTn =
 
 195                     new String(Files.readAllBytes(Paths.get("src/test/resources/sliceprofile_tn_sa1.json")));
 
 196             Mockito.when(restClient.sendGetRequest(Mockito.contains(serviceInstanceUrlTn), Mockito.any()))
 
 197                     .thenReturn(new ResponseEntity<Object>(serviceInstanceTn, HttpStatus.OK));
 
 199         } catch (Exception e) {
 
 203         List<String> actualResponse = aaiService.fetchSnssaiOfSliceProfile(sliceProfileList);
 
 204         assertEquals(expectedResponse, actualResponse);
 
 208     public void getSnssaiListForNsiTest() throws Exception {
 
 209         configuration.setAaiUrl("http://aai:30233/aai/v21");
 
 210         List<String> expectedResponse = new ArrayList<>();
 
 211         expectedResponse.add("01-06E442");
 
 212         expectedResponse.add("01-B989BD");
 
 213         PowerMockito.mockStatic(AaiService.class);
 
 214         PowerMockito.mockStatic(Configuration.class);
 
 215         PowerMockito.when(Configuration.getInstance()).thenReturn(configuration);
 
 219             String allotedResource =
 
 220                     new String(Files.readAllBytes(Paths.get("src/test/resources/alloted-resource.json")));
 
 222                     restClient.sendGetRequest(Mockito.contains("0835fd19-6726-4081-befb-cc8932c47767"), Mockito.any()))
 
 223                     .thenReturn(new ResponseEntity<Object>(allotedResource, HttpStatus.OK));
 
 225             String serviceInstance = new String(Files.readAllBytes(Paths.get("src/test/resources/nsi.json")));
 
 227                     restClient.sendGetRequest(Mockito.contains("09cad94e-fbb8-4c70-9c4d-74ec75e97683"), Mockito.any()))
 
 228                     .thenReturn(new ResponseEntity<Object>(serviceInstance, HttpStatus.OK));
 
 230             String serviceInstanceAn =
 
 231                     new String(Files.readAllBytes(Paths.get("src/test/resources/sliceprofile_an_sa1.json")));
 
 233                     restClient.sendGetRequest(Mockito.contains("b2ae730f-1d5f-495a-8112-dac017a7348c"), Mockito.any()))
 
 234                     .thenReturn(new ResponseEntity<Object>(serviceInstanceAn, HttpStatus.OK));
 
 236             String serviceInstanceCn =
 
 237                     new String(Files.readAllBytes(Paths.get("src/test/resources/sliceprofile_cn_sa1.json")));
 
 239                     restClient.sendGetRequest(Mockito.contains("cad8fa36-2d55-4c12-a92e-1bd551517a0c"), Mockito.any()))
 
 240                     .thenReturn(new ResponseEntity<Object>(serviceInstanceCn, HttpStatus.OK));
 
 242             String serviceInstanceTn =
 
 243                     new String(Files.readAllBytes(Paths.get("src/test/resources/sliceprofile_tn_sa1.json")));
 
 245                     restClient.sendGetRequest(Mockito.contains("8d0d698e-77f4-4453-8c09-ae2cbe6a9a04"), Mockito.any()))
 
 246                     .thenReturn(new ResponseEntity<Object>(serviceInstanceTn, HttpStatus.OK));
 
 248         } catch (Exception e) {
 
 252         List<String> actualResponse = aaiService.getSnssaiList("09cad94e-fbb8-4c70-9c4d-74ec75e97683");
 
 253         assertEquals(expectedResponse, actualResponse);
 
 257     public void getSnssaiListForNssiTest() throws Exception {
 
 258         configuration.setAaiUrl("http://aai:30233/aai/v21");
 
 259         List<String> expectedResponse = new ArrayList<>();
 
 260         expectedResponse.add("01-06E442");
 
 261         PowerMockito.mockStatic(AaiService.class);
 
 262         PowerMockito.mockStatic(Configuration.class);
 
 263         PowerMockito.when(Configuration.getInstance()).thenReturn(configuration);
 
 266             String nssi = new String(Files.readAllBytes(Paths.get("src/test/resources/nssi.json")));
 
 268                     restClient.sendGetRequest(Mockito.contains("50f418a6-804f-4453-bf70-21f0efaf6fcd"), Mockito.any()))
 
 269                     .thenReturn(new ResponseEntity<Object>(nssi, HttpStatus.OK));
 
 271             String serviceInstanceAn =
 
 272                     new String(Files.readAllBytes(Paths.get("src/test/resources/sliceprofile_an_sa1.json")));
 
 274                     restClient.sendGetRequest(Mockito.contains("b2ae730f-1d5f-495a-8112-dac017a7348c"), Mockito.any()))
 
 275                     .thenReturn(new ResponseEntity<Object>(serviceInstanceAn, HttpStatus.OK));
 
 277         } catch (Exception e) {
 
 281         List<String> actualResponse = aaiService.getSnssaiList("50f418a6-804f-4453-bf70-21f0efaf6fcd");
 
 282         assertEquals(expectedResponse, actualResponse);