Merge "Add controller which create error reports"
[vid.git] / vid-app-common / src / test / java / org / onap / vid / reports / BasicReportGeneratorTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2019 Nokia Intellectual Property. All rights reserved.
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20 package org.onap.vid.reports;
21
22 import com.google.common.collect.ImmutableMap;
23 import io.joshworks.restclient.http.Headers;
24 import io.joshworks.restclient.http.HttpResponse;
25 import io.joshworks.restclient.http.exceptions.RestClientException;
26 import nu.xom.jaxen.util.SingletonList;
27 import org.junit.Test;
28 import org.junit.runner.RunWith;
29 import org.mockito.Answers;
30 import org.mockito.InjectMocks;
31 import org.mockito.Mock;
32 import org.mockito.junit.MockitoJUnitRunner;
33 import org.onap.portalsdk.core.domain.User;
34 import org.onap.portalsdk.core.util.SystemProperties;
35 import org.onap.vid.aai.AaiClient;
36 import org.onap.vid.model.SubscriberList;
37 import org.onap.vid.model.errorReport.ReportCreationParameters;
38 import org.onap.vid.model.probes.ExternalComponentStatus;
39 import org.onap.vid.model.probes.StatusMetadata;
40 import org.onap.vid.roles.RoleProvider;
41 import org.onap.vid.scheduler.SchedulerService;
42 import org.onap.vid.services.AaiService;
43 import org.onap.vid.services.ProbeService;
44 import org.onap.vid.utils.SystemPropertiesWrapper;
45 import org.springframework.http.HttpStatus;
46
47 import javax.servlet.http.HttpServletRequest;
48 import java.util.Arrays;
49 import java.util.Collections;
50 import java.util.List;
51
52 import static org.assertj.core.api.Assertions.assertThat;
53 import static org.mockito.Mockito.mock;
54 import static org.mockito.Mockito.when;
55
56 @RunWith(MockitoJUnitRunner.class)
57 public class BasicReportGeneratorTest {
58
59         private static final String USER_ATTRIBUTE = "userAttribute";
60         private ReportCreationParameters creationParameters = new ReportCreationParameters();
61
62         @Mock(answer = Answers.RETURNS_DEEP_STUBS)
63         private HttpServletRequest request;
64         @Mock
65         private HttpResponse<SubscriberList> subscriberListResponse;
66         @Mock
67         private ProbeService probeService;
68
69         @Mock
70         private AaiClient aaiClient;
71         @Mock
72         private SchedulerService schedulerService;
73         @Mock
74         private AaiService aaiService;
75         @Mock
76         private RoleProvider roleProvider;
77         @Mock
78         private SystemPropertiesWrapper systemPropertiesWrapper;
79
80         @InjectMocks
81         private BasicReportGenerator basicReportGenerator;
82
83         @Test
84         public void shouldAlwaysReturnTrueAsConditionOfGeneration() {
85                 //given
86                 //when
87                 //then
88                 assertThat(basicReportGenerator.canGenerate(creationParameters)).isTrue();
89         }
90
91         @Test
92         public void shouldGetUserIDFromSystemProperties() {
93                 //given
94                 final String expectedUserID = "user_id";
95                 User user = new User();
96                 user.setLoginId(expectedUserID);
97
98                 when(systemPropertiesWrapper.getProperty(SystemProperties.USER_ATTRIBUTE_NAME)).thenReturn(USER_ATTRIBUTE);
99                 when(request.getSession().getAttribute(USER_ATTRIBUTE)).thenReturn(user);
100
101                 //when
102                 String actualUserID = basicReportGenerator.getUserIDFromSystemProperties(request);
103
104                 //then
105                 assertThat(actualUserID).isEqualTo(expectedUserID);
106         }
107
108         @Test
109         public void shouldGetProbes() {
110                 //given
111                 ExternalComponentStatus status = new ExternalComponentStatus(
112                                                 ExternalComponentStatus.Component.MSO,
113                                                 true,
114                                                 mock(StatusMetadata.class));
115                 List<ExternalComponentStatus> expectedProbes = Collections.singletonList(status);
116
117                 when(probeService.getProbe()).thenReturn(expectedProbes);
118
119                 //when
120                 List<ExternalComponentStatus> actualProbes = basicReportGenerator.getProbe();
121
122                 //then
123                 assertThat(actualProbes).isEqualTo(expectedProbes);
124         }
125
126         @Test
127         public void shouldGetFullSubscriberList() {
128                 //given
129                 SubscriberList subscriberList = new SubscriberList();
130                 Headers headers = new Headers();
131                 int status = HttpStatus.OK.value();
132
133                 ImmutableMap<String, Object> expectedSubscriberList = ImmutableMap.<String, Object>builder()
134                                 .put("status", status)
135                                 .put("body", subscriberList)
136                                 .put("headers", headers)
137                                 .build();
138
139                 when(aaiService.getFullSubscriberList()).thenReturn(subscriberListResponse);
140                 when(subscriberListResponse.getStatus()).thenReturn(status);
141                 when(subscriberListResponse.getBody()).thenReturn(subscriberList);
142                 when(subscriberListResponse.getHeaders()).thenReturn(headers);
143
144                 //when
145                 ImmutableMap<String, Object> actualSubscriberList = basicReportGenerator.getFullSubscriberList();
146
147                 //then
148                 assertThat(actualSubscriberList).isEqualTo(expectedSubscriberList);
149         }
150
151         @Test
152         public void shouldReturnExceptionInfoWhileGettingFullSubscriberList() {
153                 //given
154                 RestClientException expectedException = mock(RestClientException.class);
155                 ImmutableMap<String, Object> expectedResult = ImmutableMap.of("exception", expectedException.toString());
156
157                 when(aaiService.getFullSubscriberList()).thenThrow(expectedException);
158
159                 //when
160                 ImmutableMap<String, Object> actualResult = basicReportGenerator.getFullSubscriberList();
161
162                 //then
163                 assertThat(actualResult).isEqualTo(expectedResult);
164         }
165 }