Merge from ECOMP's repository
[vid.git] / vid-app-common / src / test / java / org / onap / vid / services / CloudOwnerServiceTest.java
1 package org.onap.vid.services;
2
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;
19
20 import java.util.HashMap;
21 import java.util.Map;
22
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;
29
30 public class CloudOwnerServiceTest {
31
32     @Mock
33     private AaiClientInterface aaiClient;
34
35     @Mock
36     private FeatureManager featureManager;
37
38     @InjectMocks
39     private CloudOwnerServiceImpl cloudOwnerService;
40
41     @BeforeClass
42     public void initMocks() {
43         MockitoAnnotations.initMocks(this);
44     }
45
46     @AfterMethod
47     public void resetMocks() {
48         Mockito.reset(aaiClient);
49         Mockito.reset(featureManager);
50     }
51
52     @DataProvider
53     public static Object[][] testEnrichRequestDataProvider() {
54         return new Object[][]{{true}, {false}};
55     }
56
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));
68         }
69         else {
70             Map<String,Object> cloudConfiguration = requestDetails.extractValueByPathUsingAdditionalProperties(
71                     ImmutableList.of("requestDetails", "cloudConfiguration"), Map.class);
72             assertThat(cloudConfiguration, not(hasKey("cloudOwner")));
73         }
74     }
75
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());
86         }
87         else {
88             assertNull(requestDetails.getCloudConfiguration().getCloudOwner());
89         }
90     }
91
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;
99     }
100
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;
107     }
108
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);
116     }
117
118     @Test
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
124     }
125 }