1 package org.onap.vid.services;
3 import com.google.common.collect.ImmutableList;
4 import com.google.common.collect.ImmutableMap;
5 import org.mockito.InjectMocks;
6 import org.mockito.Mock;
7 import org.mockito.Mockito;
8 import org.mockito.MockitoAnnotations;
9 import org.onap.vid.aai.AaiClientInterface;
10 import org.onap.vid.exceptions.GenericUncheckedException;
11 import org.onap.vid.mso.model.CloudConfiguration;
12 import org.onap.vid.mso.rest.RequestDetails;
13 import org.onap.vid.properties.Features;
14 import org.testng.annotations.AfterMethod;
15 import org.testng.annotations.BeforeClass;
16 import org.testng.annotations.DataProvider;
17 import org.testng.annotations.Test;
18 import org.togglz.core.manager.FeatureManager;
20 import java.util.HashMap;
23 import static org.hamcrest.MatcherAssert.assertThat;
24 import static org.hamcrest.Matchers.hasKey;
25 import static org.hamcrest.Matchers.not;
26 import static org.mockito.Mockito.when;
27 import static org.testng.Assert.assertEquals;
28 import static org.testng.Assert.assertNull;
30 public class CloudOwnerServiceTest {
33 private AaiClientInterface aaiClient;
36 private FeatureManager featureManager;
39 private CloudOwnerServiceImpl cloudOwnerService;
42 public void initMocks() {
43 MockitoAnnotations.initMocks(this);
47 public void resetMocks() {
48 Mockito.reset(aaiClient);
49 Mockito.reset(featureManager);
53 public static Object[][] testEnrichRequestDataProvider() {
54 return new Object[][]{{true}, {false}};
57 @Test(dataProvider = "testEnrichRequestDataProvider")
58 public void whenCloudConfigurationInAdditionalProperties_cloudConfigurationIsEnrichedWithCloudOwner(boolean isFeatureActive) {
59 when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(isFeatureActive);
60 String lcpCloudRegionId = "lcp1";
61 RequestDetails requestDetails = createRequestDetailsWithCloudConfigurationInAdditionalProperties(lcpCloudRegionId);
62 String aaiCloudOwner = "myCloudOwner";
63 when(aaiClient.getCloudOwnerByCloudRegionId(lcpCloudRegionId)).thenReturn(aaiCloudOwner);
64 cloudOwnerService.enrichRequestWithCloudOwner(requestDetails);
65 if (isFeatureActive) {
66 assertEquals(aaiCloudOwner, requestDetails.extractValueByPathUsingAdditionalProperties(
67 ImmutableList.of("requestDetails", "cloudConfiguration", "cloudOwner"), String.class));
70 Map<String,Object> cloudConfiguration = requestDetails.extractValueByPathUsingAdditionalProperties(
71 ImmutableList.of("requestDetails", "cloudConfiguration"), Map.class);
72 assertThat(cloudConfiguration, not(hasKey("cloudOwner")));
76 @Test(dataProvider = "testEnrichRequestDataProvider")
77 public void whenCloudConfigurationInRequestDetailsField_cloudConfigurationIsEnrichedWithCloudOwner(boolean isFeatureActive) {
78 when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(isFeatureActive);
79 String lcpCloudRegionId = "lcp1";
80 RequestDetails requestDetails = createRequestDetailsWithCloudField(lcpCloudRegionId);
81 String aaiCloudOwner = "myCloudOwner";
82 when(aaiClient.getCloudOwnerByCloudRegionId(lcpCloudRegionId)).thenReturn(aaiCloudOwner);
83 cloudOwnerService.enrichRequestWithCloudOwner(requestDetails);
84 if (isFeatureActive) {
85 assertEquals(aaiCloudOwner, requestDetails.getCloudConfiguration().getCloudOwner());
88 assertNull(requestDetails.getCloudConfiguration().getCloudOwner());
92 private RequestDetails createRequestDetailsWithCloudConfigurationInAdditionalProperties(String lcpCloudRegionId) {
93 RequestDetails requestDetails = new RequestDetails();
94 Map<String, Object> cloudConfiguration = new HashMap<>();
95 cloudConfiguration.put("lcpCloudRegionId", lcpCloudRegionId);
96 requestDetails.setAdditionalProperty("requestDetails",
97 ImmutableMap.of("cloudConfiguration", cloudConfiguration));
98 return requestDetails;
101 private RequestDetails createRequestDetailsWithCloudField(String lcpCloudRegionId) {
102 CloudConfiguration cloudConfiguration = new CloudConfiguration();
103 cloudConfiguration.setLcpCloudRegionId(lcpCloudRegionId);
104 RequestDetails requestDetails = new RequestDetails();
105 requestDetails.setCloudConfiguration(cloudConfiguration);
106 return requestDetails;
109 @Test(expectedExceptions= GenericUncheckedException.class)
110 public void whenAaiClientThrowException_thenExceptionIsPopulatedByEnrichMethod() {
111 when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(true);
112 String lcpCloudRegionId = "lcp1";
113 RequestDetails requestDetails = createRequestDetailsWithCloudConfigurationInAdditionalProperties(lcpCloudRegionId);
114 when(aaiClient.getCloudOwnerByCloudRegionId(lcpCloudRegionId)).thenThrow(new RuntimeException());
115 cloudOwnerService.enrichRequestWithCloudOwner(requestDetails);
119 public void whenThereIsNoCloudConfiguration_enrichmentMethodNotFailed() {
120 when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(true);
121 RequestDetails requestDetails = new RequestDetails();
122 cloudOwnerService.enrichRequestWithCloudOwner(requestDetails);
123 //if no exception was thrown test success