Merge "MicroserviceParameter class DB constraints"
[portal.git] / ecomp-portal-BE-common / src / test / java / org / onap / portalapp / portal / controller / DashboardSearchResultControllerTest.java
1 /*-
2  * ============LICENSE_START==========================================
3  * ONAP Portal
4  * ===================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ===================================================================
7  *
8  * Unless otherwise specified, all software contained herein is licensed
9  * under the Apache License, Version 2.0 (the "License");
10  * you may not use this software except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *             http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  * Unless otherwise specified, all documentation contained herein is licensed
22  * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23  * you may not use this documentation except in compliance with the License.
24  * You may obtain a copy of the License at
25  *
26  *             https://creativecommons.org/licenses/by/4.0/
27  *
28  * Unless required by applicable law or agreed to in writing, documentation
29  * distributed under the License is distributed on an "AS IS" BASIS,
30  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31  * See the License for the specific language governing permissions and
32  * limitations under the License.
33  *
34  * ============LICENSE_END============================================
35  *
36  * 
37  */
38 package org.onap.portalapp.portal.controller;
39
40 import static org.junit.Assert.assertEquals;
41
42 import java.util.ArrayList;
43 import java.util.HashMap;
44 import java.util.List;
45 import java.util.Map;
46
47 import javax.servlet.http.HttpServletRequest;
48 import javax.servlet.http.HttpServletResponse;
49
50 import org.junit.Before;
51 import org.junit.Test;
52 import org.mockito.InjectMocks;
53 import org.mockito.Mock;
54 import org.mockito.Mockito;
55 import org.mockito.MockitoAnnotations;
56 import org.onap.portalapp.portal.controller.DashboardSearchResultController;
57 import org.onap.portalapp.portal.core.MockEPUser;
58 import org.onap.portalapp.portal.domain.EPUser;
59 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
60 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
61 import org.onap.portalapp.portal.ecomp.model.SearchResultItem;
62 import org.onap.portalapp.portal.framework.MockitoTestSuite;
63 import org.onap.portalapp.portal.service.DashboardSearchService;
64 import org.onap.portalapp.portal.service.DashboardSearchServiceImpl;
65 import org.onap.portalapp.portal.transport.CommonWidget;
66 import org.onap.portalapp.portal.transport.CommonWidgetMeta;
67 import org.onap.portalapp.util.EPUserUtils;
68
69 public class DashboardSearchResultControllerTest {
70
71         @Mock
72         DashboardSearchService searchService = new DashboardSearchServiceImpl();
73
74         @InjectMocks
75         DashboardSearchResultController dashboardSearchResultController = new DashboardSearchResultController();
76
77         @Before
78         public void setup() {
79                 MockitoAnnotations.initMocks(this);
80         }
81
82         MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
83
84         HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest();
85         HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse();
86         NullPointerException nullPointerException = new NullPointerException();
87
88         @Mock
89         EPUserUtils ePUserUtils = new EPUserUtils();
90
91         MockEPUser mockUser = new MockEPUser();
92
93         @Test
94         public void getWidgetDataTest() {
95                 String resourceType = "test";
96                 PortalRestResponse<CommonWidgetMeta> ecpectedPortalRestResponse = new PortalRestResponse<>();
97                 ecpectedPortalRestResponse.setMessage("success");
98                 ecpectedPortalRestResponse.setResponse(null);
99                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.OK);
100                 Mockito.when(searchService.getWidgetData(resourceType)).thenReturn(null);
101                 PortalRestResponse<CommonWidgetMeta> acutualPoratlRestResponse = dashboardSearchResultController
102                                 .getWidgetData(mockedRequest, resourceType);
103                 assertEquals(acutualPoratlRestResponse, ecpectedPortalRestResponse);
104
105         }
106
107         @Test
108         public void getWidgetDataXSSTest() {
109                 String resourceType = "\"<IMG SRC=\\\"jav\\tascript:alert('XSS');\\\">\"";
110                 PortalRestResponse expectedPortalRestResponse = new PortalRestResponse<>();
111                 expectedPortalRestResponse.setMessage("resourceType: String string is not valid");
112                 expectedPortalRestResponse.setResponse("");
113                 expectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
114                 Mockito.when(searchService.getWidgetData(resourceType)).thenReturn(null);
115                 PortalRestResponse acutualPoratlRestResponse = dashboardSearchResultController
116                         .getWidgetData(mockedRequest, resourceType);
117                 assertEquals(expectedPortalRestResponse,acutualPoratlRestResponse);
118         }
119
120         @Test
121         public void saveWidgetDataBulkTest() {
122                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<>();
123                 ecpectedPortalRestResponse.setMessage("success");
124                 ecpectedPortalRestResponse.setResponse(null);
125                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.OK);
126
127                 CommonWidgetMeta commonWidgetMeta = new CommonWidgetMeta();
128                 commonWidgetMeta.setCategory("test");
129
130                 List<CommonWidget> commonWidgetList = new ArrayList<>();
131                 CommonWidget commonWidget = new CommonWidget();
132                 commonWidget.setId((long) 1);
133                 commonWidget.setCategory("test");
134                 commonWidget.setHref("test_href");
135                 commonWidget.setTitle("test_title");
136                 commonWidget.setContent("test_content");
137                 commonWidget.setEventDate(null);
138                 commonWidget.setSortOrder(1);
139
140                 commonWidgetList.add(commonWidget);
141
142                 commonWidgetMeta.setItems(commonWidgetList);
143
144                 Mockito.when(searchService.saveWidgetDataBulk(commonWidgetMeta)).thenReturn(null);
145
146                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
147                                 .saveWidgetDataBulk(commonWidgetMeta);
148                 assertEquals(actualPortalRestResponse, ecpectedPortalRestResponse);
149         }
150
151         @Test
152         public void saveWidgetDataBulkXSSTest() {
153                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<>();
154                 ecpectedPortalRestResponse.setMessage("ERROR");
155                 ecpectedPortalRestResponse.setResponse("Category is not valid");
156                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
157
158                 CommonWidgetMeta commonWidgetMeta = new CommonWidgetMeta();
159                 commonWidgetMeta.setCategory("test");
160
161                 List<CommonWidget> commonWidgetList = new ArrayList<>();
162                 CommonWidget commonWidget = new CommonWidget();
163                 commonWidget.setId((long) 1);
164                 commonWidget.setCategory("test");
165                 commonWidget.setHref("\"<IMG SRC=\\\"jav\\tascript:alert('XSS');\\\">\"");
166                 commonWidget.setTitle("test_title");
167                 commonWidget.setContent("test_content");
168                 commonWidget.setEventDate(null);
169                 commonWidget.setSortOrder(1);
170
171                 commonWidgetList.add(commonWidget);
172
173                 commonWidgetMeta.setItems(commonWidgetList);
174
175                 Mockito.when(searchService.saveWidgetDataBulk(commonWidgetMeta)).thenReturn(null);
176
177                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
178                         .saveWidgetDataBulk(commonWidgetMeta);
179                 assertEquals(ecpectedPortalRestResponse, actualPortalRestResponse);
180         }
181
182         @Test
183         public void saveWidgetDataBulkIfCategoryNullTest() {
184                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<>();
185                 ecpectedPortalRestResponse.setMessage("java.text.ParseException: Unparseable date: \"1\"");
186                 ecpectedPortalRestResponse.setResponse(null);
187                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
188
189                 CommonWidgetMeta commonWidgetMeta = new CommonWidgetMeta();
190                 commonWidgetMeta.setCategory("test");
191
192                 List<CommonWidget> commonWidgetList = new ArrayList<>();
193                 CommonWidget commonWidget = new CommonWidget();
194                 commonWidget.setId(null);
195                 commonWidget.setCategory(null);
196                 commonWidget.setHref(null);
197                 commonWidget.setTitle(null);
198                 commonWidget.setContent("test_content");
199                 commonWidget.setEventDate("1");
200                 commonWidget.setSortOrder(1);
201                 commonWidgetList.add(commonWidget);
202                 commonWidgetMeta.setItems(commonWidgetList);
203
204                 Mockito.when(searchService.saveWidgetDataBulk(commonWidgetMeta)).thenReturn(null);
205
206                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
207                                 .saveWidgetDataBulk(commonWidgetMeta);
208                 assertEquals(actualPortalRestResponse, ecpectedPortalRestResponse);
209         }
210
211         @Test
212         public void saveWidgetDataTest() {
213                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<>();
214                 ecpectedPortalRestResponse.setMessage("success");
215                 ecpectedPortalRestResponse.setResponse(null);
216                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.OK);
217                 CommonWidget commonWidget = new CommonWidget();
218                 commonWidget.setId((long) 1);
219                 commonWidget.setCategory("test");
220                 commonWidget.setHref("test_href");
221                 commonWidget.setTitle("test_title");
222                 commonWidget.setContent("test_content");
223                 commonWidget.setEventDate(null);
224                 commonWidget.setSortOrder(1);
225
226                 Mockito.when(searchService.saveWidgetData(commonWidget)).thenReturn(null);
227
228                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
229                                 .saveWidgetData(commonWidget);
230                 assertEquals(actualPortalRestResponse, ecpectedPortalRestResponse);
231
232         }
233
234         @Test
235         public void saveWidgetDataXSSTest() {
236                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<>();
237                 expectedPortalRestResponse.setMessage("ERROR");
238                 expectedPortalRestResponse.setResponse("Category is not valid");
239                 expectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
240                 CommonWidget commonWidget = new CommonWidget();
241                 commonWidget.setId((long) 1);
242                 commonWidget.setCategory("test");
243                 commonWidget.setHref("\"<IMG SRC=\"jav\\tascript:alert('XSS');\">\"");
244                 commonWidget.setTitle("test_title");
245                 commonWidget.setContent("test_content");
246                 commonWidget.setEventDate(null);
247                 commonWidget.setSortOrder(1);
248
249                 Mockito.when(searchService.saveWidgetData(commonWidget)).thenReturn(null);
250
251                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
252                         .saveWidgetData(commonWidget);
253                 assertEquals(expectedPortalRestResponse, actualPortalRestResponse);
254
255         }
256
257         @Test
258         public void saveWidgetDataExceptionTest() {
259                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<>();
260                 ecpectedPortalRestResponse.setMessage("ERROR");
261                 ecpectedPortalRestResponse.setResponse("Category cannot be null or empty");
262                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
263                 CommonWidget commonWidget = new CommonWidget();
264                 commonWidget.setId((long) 1);
265                 commonWidget.setCategory("");
266                 commonWidget.setHref("test_href");
267                 commonWidget.setTitle("test_title");
268                 commonWidget.setContent("test_content");
269                 commonWidget.setEventDate(null);
270                 commonWidget.setSortOrder(1);
271
272                 Mockito.when(searchService.saveWidgetData(commonWidget)).thenReturn(null);
273
274                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
275                                 .saveWidgetData(commonWidget);
276                 assertEquals(actualPortalRestResponse, ecpectedPortalRestResponse);
277
278         }
279
280         @Test
281         public void saveWidgetDataDateErrorTest() {
282                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<>();
283                 ecpectedPortalRestResponse.setMessage("java.text.ParseException: Unparseable date: \"1\"");
284                 ecpectedPortalRestResponse.setResponse(null);
285                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
286                 CommonWidget commonWidget = new CommonWidget();
287                 commonWidget.setId((long) 1);
288                 commonWidget.setCategory("test");
289                 commonWidget.setHref("test_href");
290                 commonWidget.setTitle("test_title");
291                 commonWidget.setContent("test_content");
292                 commonWidget.setEventDate("1");
293                 commonWidget.setSortOrder(1);
294
295                 Mockito.when(searchService.saveWidgetData(commonWidget)).thenReturn(null);
296
297                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
298                                 .saveWidgetData(commonWidget);
299                 assertEquals(actualPortalRestResponse, ecpectedPortalRestResponse);
300
301         }
302
303         @Test
304         public void deleteWidgetDataTest() {
305                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<>();
306                 ecpectedPortalRestResponse.setMessage("success");
307                 ecpectedPortalRestResponse.setResponse(null);
308                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.OK);
309                 CommonWidget commonWidget = new CommonWidget();
310                 commonWidget.setId((long) 1);
311                 commonWidget.setCategory("test");
312                 commonWidget.setHref("test_href");
313                 commonWidget.setTitle("test_title");
314                 commonWidget.setContent("test_content");
315                 commonWidget.setEventDate(null);
316                 commonWidget.setSortOrder(1);
317                 Mockito.when(searchService.deleteWidgetData(commonWidget)).thenReturn(null);
318
319                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
320                                 .deleteWidgetData(commonWidget);
321                 System.out.println(actualPortalRestResponse);
322                 assertEquals(actualPortalRestResponse, ecpectedPortalRestResponse);
323         }
324
325         @Test
326         public void deleteWidgetDataXSSTest() {
327                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<>();
328                 expectedPortalRestResponse.setMessage("ERROR");
329                 expectedPortalRestResponse.setResponse("CommonWidget is not valid");
330                 expectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
331                 CommonWidget commonWidget = new CommonWidget();
332                 commonWidget.setId((long) 1);
333                 commonWidget.setCategory("test");
334                 commonWidget.setHref("test_href");
335                 commonWidget.setTitle("\"<IMG SRC=\"jav\\tascript:alert('XSS');\">\"");
336                 commonWidget.setContent("test_content");
337                 commonWidget.setEventDate(null);
338                 commonWidget.setSortOrder(1);
339                 Mockito.when(searchService.deleteWidgetData(commonWidget)).thenReturn(null);
340
341                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
342                         .deleteWidgetData(commonWidget);
343
344                 assertEquals(expectedPortalRestResponse, actualPortalRestResponse);
345         }
346
347         @Test
348         public void searchPortalIfUserIsNull() {
349                 EPUser user = null;
350                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
351                 String searchString = "test";
352
353                 PortalRestResponse<Map<String, List<SearchResultItem>>> expectedResult = new PortalRestResponse<>();
354                 expectedResult.setMessage("searchPortal: User object is null? - check logs");
355                 expectedResult.setResponse(new HashMap<>());
356                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
357                 PortalRestResponse<Map<String, List<SearchResultItem>>> actualResult = dashboardSearchResultController
358                                 .searchPortal(mockedRequest, searchString);
359                 assertEquals(expectedResult, actualResult);
360         }
361
362         @Test
363         public void searchPortalIfSearchStringNullTest() {
364                 EPUser user = mockUser.mockEPUser();
365                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
366                 String searchString = null;
367
368                 PortalRestResponse<Map<String, List<SearchResultItem>>> expectedResult = new PortalRestResponse<>();
369                 expectedResult.setMessage("searchPortal: String string is null");
370                 expectedResult.setResponse(new HashMap<>());
371                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
372
373                 PortalRestResponse<Map<String, List<SearchResultItem>>> actualResult = dashboardSearchResultController
374                                 .searchPortal(mockedRequest, searchString);
375                 assertEquals(expectedResult, actualResult);
376         }
377
378         @Test
379         public void searchPortalIfSearchTest() {
380                 EPUser user = mockUser.mockEPUser();
381                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
382                 String searchString = "test";
383                 List<SearchResultItem> searchResultItemList = new ArrayList<>();
384                 SearchResultItem searchResultItem = new SearchResultItem();
385
386                 searchResultItem.setId((long) 1);
387                 searchResultItem.setCategory("test");
388                 searchResultItem.setName("test_name");
389                 searchResultItem.setTarget("test_target");
390                 searchResultItem.setUuid("test_UUId");
391                 searchResultItemList.add(searchResultItem);
392                 Map<String, List<SearchResultItem>> expectedResultMap = new HashMap<>();
393                 expectedResultMap.put(searchString, searchResultItemList);
394
395                 PortalRestResponse<Map<String, List<SearchResultItem>>> expectedResult = new PortalRestResponse<>();
396                 expectedResult.setMessage("success");
397                 expectedResult.setResponse(expectedResultMap);
398                 expectedResult.setStatus(PortalRestStatusEnum.OK);
399
400                 Mockito.when(searchService.searchResults(user.getLoginId(), searchString)).thenReturn(expectedResultMap);
401                 PortalRestResponse<Map<String, List<SearchResultItem>>> actualResult = dashboardSearchResultController
402                                 .searchPortal(mockedRequest, searchString);
403                 assertEquals(expectedResult, actualResult);
404
405         }
406
407         @Test
408         public void searchPortalIfSearchExcptionTest() {
409                 EPUser user = mockUser.mockEPUser();
410                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
411                 String searchString = "test";
412
413                 PortalRestResponse<Map<String, List<SearchResultItem>>> expectedResult = new PortalRestResponse<>();
414                 expectedResult.setMessage("null - check logs.");
415                 expectedResult.setResponse(new HashMap<>());
416                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
417
418                 Mockito.when(searchService.searchResults(user.getLoginId(), searchString)).thenThrow(nullPointerException);
419                 PortalRestResponse<Map<String, List<SearchResultItem>>> actualResult = dashboardSearchResultController
420                                 .searchPortal(mockedRequest, searchString);
421                 assertEquals(expectedResult, actualResult);
422         }
423
424         @Test
425         public void getActiveUsersTest() {
426                 List<String> expectedActiveUsers = new ArrayList<>();
427                 EPUser user = mockUser.mockEPUser();
428                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
429                 String userId = user.getOrgUserId();
430                 Mockito.when(searchService.getRelatedUsers(userId)).thenReturn(expectedActiveUsers);
431                 List<String> actualOnlineUsers = dashboardSearchResultController.getActiveUsers(mockedRequest);
432                 assertEquals(expectedActiveUsers, actualOnlineUsers);
433
434         }
435
436         @Test
437         public void getActiveUsersExceptionTest() {
438                 List<String> expectedActiveUsers = new ArrayList<>();
439                 EPUser user = mockUser.mockEPUser();
440                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
441                 String userId = user.getOrgUserId();
442                 Mockito.when(searchService.getRelatedUsers(userId)).thenThrow(nullPointerException);
443                 List<String> actualOnlineUsers = dashboardSearchResultController.getActiveUsers(mockedRequest);
444                 assertEquals(expectedActiveUsers, actualOnlineUsers);
445
446         }
447
448         @Test
449         public void activeUsersTest() {
450                 EPUser user = mockUser.mockEPUser();
451                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
452                 PortalRestResponse<List<String>> expectedResult = new PortalRestResponse<>();
453                 expectedResult.setMessage("success");
454                 expectedResult.setResponse(new ArrayList<>());
455                 expectedResult.setStatus(PortalRestStatusEnum.OK);
456                 PortalRestResponse<List<String>> actualResult = dashboardSearchResultController.activeUsers(mockedRequest);
457
458                 assertEquals(actualResult, expectedResult);
459
460         }
461
462         @Test
463         public void activeUsersIfUserNullTest() {
464                 EPUser user = null;
465                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
466                 PortalRestResponse<List<String>> expectedResult = new PortalRestResponse<>();
467                 expectedResult.setMessage("User object is null? - check logs");
468                 expectedResult.setResponse(new ArrayList<>());
469                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
470                 PortalRestResponse<List<String>> actualResult = dashboardSearchResultController.activeUsers(mockedRequest);
471                 assertEquals(actualResult, expectedResult);
472
473         }
474
475         @Test
476         public void activeUsersExceptionTest() {
477                 EPUser user = mockUser.mockEPUser();
478                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
479                 PortalRestResponse<List<String>> expectedResult = new PortalRestResponse<>();
480                 expectedResult.setMessage("null - check logs.");
481                 expectedResult.setResponse(new ArrayList<>());
482                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
483                 Mockito.when(searchService.getRelatedUsers(user.getLoginId())).thenThrow(nullPointerException);
484                 PortalRestResponse<List<String>> actualResult = dashboardSearchResultController.activeUsers(mockedRequest);
485                 assertEquals(actualResult, expectedResult);
486
487         }
488
489 }