Merge "Fix sql injection vulnerability"
[portal.git] / ecomp-portal-BE-os / 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.domain.EPUser;
58 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
59 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
60 import org.onap.portalapp.portal.ecomp.model.SearchResultItem;
61 import org.onap.portalapp.portal.framework.MockEPUser;
62 import org.onap.portalapp.portal.framework.MockitoTestSuite;
63 import org.onap.portalapp.portal.service.DashboardSearchService;
64 import org.onap.portalapp.portal.transport.CommonWidget;
65 import org.onap.portalapp.portal.transport.CommonWidgetMeta;
66 import org.onap.portalapp.util.EPUserUtils;
67
68 public class DashboardSearchResultControllerTest {
69
70         @Mock
71         DashboardSearchService searchService;
72
73         @Before
74         public void setup() {
75                 MockitoAnnotations.initMocks(this);
76         }
77
78         @InjectMocks
79         DashboardSearchResultController dashboardSearchResultController = new DashboardSearchResultController();
80
81         MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
82
83         HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest();
84         HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse();
85         NullPointerException nullPointerException = new NullPointerException();
86         MockEPUser mockUser = new MockEPUser();
87
88         @Test
89         public void getWidgetDataTest() {
90                 PortalRestResponse<CommonWidgetMeta> ecpectedPortalRestResponse = new PortalRestResponse<CommonWidgetMeta>();
91                 ecpectedPortalRestResponse.setMessage("success");
92                 ecpectedPortalRestResponse.setResponse(new CommonWidgetMeta());
93                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.OK);
94                 CommonWidgetMeta commonWidgetMeta = new CommonWidgetMeta();
95                 Mockito.when(searchService.getWidgetData("test")).thenReturn(commonWidgetMeta);
96                 PortalRestResponse<CommonWidgetMeta> actualPortalRestResponse = dashboardSearchResultController
97                                 .getWidgetData(mockedRequest, "test");
98                 assertEquals(ecpectedPortalRestResponse.getStatus(), actualPortalRestResponse.getStatus());
99         }
100
101         @Test
102         public void getWidgetDataXSSTest() {
103                 String resourceType = "\"<IMG SRC=\\\"jav\\tascript:alert('XSS');\\\">\"";
104                 PortalRestResponse expectedPortalRestResponse = new PortalRestResponse<>();
105                 expectedPortalRestResponse.setMessage("Provided data is invalid");
106                 expectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
107                 Mockito.when(searchService.getWidgetData(resourceType)).thenReturn(null);
108                 PortalRestResponse acutualPoratlRestResponse = dashboardSearchResultController
109                         .getWidgetData(mockedRequest, resourceType);
110                 assertEquals(acutualPoratlRestResponse, expectedPortalRestResponse);
111         }
112
113         @Test
114         public void saveWidgetDataBulkIfCatrgoryNullTest() {
115                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<String>();
116                 ecpectedPortalRestResponse.setMessage("ERROR");
117                 ecpectedPortalRestResponse.setResponse("Category cannot be null or empty");
118                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
119                 CommonWidgetMeta commonWidgetMeta = new CommonWidgetMeta();
120                 commonWidgetMeta.setCategory(null);
121                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
122                                 .saveWidgetDataBulk(commonWidgetMeta);
123                 assertEquals(ecpectedPortalRestResponse, actualPortalRestResponse);
124         }
125
126         @Test
127         public void saveWidgetDataBulkTest() {
128                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<String>();
129                 ecpectedPortalRestResponse.setMessage("success");
130                 ecpectedPortalRestResponse.setResponse(null);
131                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.OK);
132                 CommonWidgetMeta commonWidgetMeta = new CommonWidgetMeta();
133                 commonWidgetMeta.setCategory("test");
134                 List<CommonWidget> items = new ArrayList<>();
135
136                 CommonWidget commonWidget = new CommonWidget();
137                 commonWidget.setId((long) 1);
138                 commonWidget.setEventDate("2017-06-06");
139                 items.add(commonWidget);
140                 commonWidgetMeta.setItems(items);
141                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
142                                 .saveWidgetDataBulk(commonWidgetMeta);
143                 assertEquals(ecpectedPortalRestResponse, actualPortalRestResponse);
144         }
145
146         @Test
147         public void saveWidgetDataBulkExceptionTest() {
148                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<String>();
149                 ecpectedPortalRestResponse.setMessage("java.text.ParseException: Unparseable date: \"date\"");
150                 ecpectedPortalRestResponse.setResponse(null);
151                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
152                 CommonWidgetMeta commonWidgetMeta = new CommonWidgetMeta();
153                 commonWidgetMeta.setCategory("test");
154                 List<CommonWidget> items = new ArrayList<>();
155
156                 CommonWidget commonWidget = new CommonWidget();
157                 commonWidget.setId((long) 1);
158                 commonWidget.setEventDate("date");
159                 items.add(commonWidget);
160                 commonWidgetMeta.setItems(items);
161                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
162                                 .saveWidgetDataBulk(commonWidgetMeta);
163                 assertEquals(ecpectedPortalRestResponse, actualPortalRestResponse);
164         }
165
166         @Test
167         public void saveWidgetDataBulkXSSTest() {
168                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<>();
169                 ecpectedPortalRestResponse.setMessage("ERROR");
170                 ecpectedPortalRestResponse.setResponse("Category is not valid");
171                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
172
173                 CommonWidgetMeta commonWidgetMeta = new CommonWidgetMeta();
174                 commonWidgetMeta.setCategory("test");
175
176                 List<CommonWidget> commonWidgetList = new ArrayList<>();
177                 CommonWidget commonWidget = new CommonWidget();
178                 commonWidget.setId((long) 1);
179                 commonWidget.setCategory("test");
180                 commonWidget.setHref("\"<IMG SRC=\\\"jav\\tascript:alert('XSS');\\\">\"");
181                 commonWidget.setTitle("test_title");
182                 commonWidget.setContent("test_content");
183                 commonWidget.setEventDate(null);
184                 commonWidget.setSortOrder(1);
185
186                 commonWidgetList.add(commonWidget);
187
188                 commonWidgetMeta.setItems(commonWidgetList);
189
190                 Mockito.when(searchService.saveWidgetDataBulk(commonWidgetMeta)).thenReturn(null);
191
192                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
193                         .saveWidgetDataBulk(commonWidgetMeta);
194                 assertEquals(ecpectedPortalRestResponse, actualPortalRestResponse);
195         }
196
197         @Test
198         public void saveWidgetDataXSSTest() {
199                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<>();
200                 expectedPortalRestResponse.setMessage("ERROR");
201                 expectedPortalRestResponse.setResponse("Category is not valid");
202                 expectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
203                 CommonWidget commonWidget = new CommonWidget();
204                 commonWidget.setId((long) 1);
205                 commonWidget.setCategory("test");
206                 commonWidget.setHref("\"<IMG SRC=\"jav\\tascript:alert('XSS');\">\"");
207                 commonWidget.setTitle("test_title");
208                 commonWidget.setContent("test_content");
209                 commonWidget.setEventDate(null);
210                 commonWidget.setSortOrder(1);
211
212                 Mockito.when(searchService.saveWidgetData(commonWidget)).thenReturn(null);
213
214                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
215                         .saveWidgetData(commonWidget);
216                 assertEquals(expectedPortalRestResponse, actualPortalRestResponse);
217
218         }
219
220         @Test
221         public void deleteWidgetDataXSSTest() {
222                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<>();
223                 expectedPortalRestResponse.setMessage("ERROR");
224                 expectedPortalRestResponse.setResponse("Data is not valid");
225                 expectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
226                 CommonWidget commonWidget = new CommonWidget();
227                 commonWidget.setId((long) 1);
228                 commonWidget.setCategory("test");
229                 commonWidget.setHref("test_href");
230                 commonWidget.setTitle("\"<IMG SRC=\"jav\\tascript:alert('XSS');\">\"");
231                 commonWidget.setContent("test_content");
232                 commonWidget.setEventDate(null);
233                 commonWidget.setSortOrder(1);
234                 Mockito.when(searchService.deleteWidgetData(commonWidget)).thenReturn(null);
235
236                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
237                         .deleteWidgetData(commonWidget);
238
239                 assertEquals(expectedPortalRestResponse, actualPortalRestResponse);
240         }
241
242         @Test
243         public void saveWidgetDataIfCatagoryNullTest() {
244                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<String>();
245                 ecpectedPortalRestResponse.setMessage("ERROR");
246                 ecpectedPortalRestResponse.setResponse("Cateogry cannot be null or empty");
247                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
248                 CommonWidget commonWidget = new CommonWidget();
249                 commonWidget.setCategory(null);
250                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
251                                 .saveWidgetData(commonWidget);
252                 assertEquals(ecpectedPortalRestResponse, actualPortalRestResponse);
253         }
254
255         @Test
256         public void saveWidgetDataTest() {
257                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<String>();
258                 ecpectedPortalRestResponse.setMessage("success");
259                 ecpectedPortalRestResponse.setResponse(null);
260                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.OK);
261                 CommonWidget commonWidget = new CommonWidget();
262                 commonWidget.setCategory("test");
263                 commonWidget.setId((long) 1);
264                 commonWidget.setEventDate("2017-06-06");
265                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
266                                 .saveWidgetData(commonWidget);
267                 assertEquals(ecpectedPortalRestResponse, actualPortalRestResponse);
268         }
269
270         @Test
271         public void saveWidgetDataExceptionTest() {
272                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<String>();
273                 ecpectedPortalRestResponse.setMessage("java.text.ParseException: Unparseable date: \"date\"");
274                 ecpectedPortalRestResponse.setResponse(null);
275                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
276                 CommonWidget commonWidget = new CommonWidget();
277                 commonWidget.setCategory("test");
278                 commonWidget.setId((long) 1);
279                 commonWidget.setEventDate("date");
280                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
281                                 .saveWidgetData(commonWidget);
282                 assertEquals(ecpectedPortalRestResponse, actualPortalRestResponse);
283         }
284         
285         @Test
286         public void deleteWidgetDataTest()
287         {
288                 PortalRestResponse<String> ecpectedPortalRestResponse = new PortalRestResponse<String>();
289                 ecpectedPortalRestResponse.setMessage("success");
290                 ecpectedPortalRestResponse.setResponse(null);
291                 ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.OK);
292                 CommonWidget commonWidget = new CommonWidget();
293                 Mockito.when(searchService.deleteWidgetData(commonWidget)).thenReturn("test");
294                 PortalRestResponse<String> actualPortalRestResponse = dashboardSearchResultController
295                                 .deleteWidgetData(commonWidget);
296                 assertEquals(ecpectedPortalRestResponse.getStatus(), actualPortalRestResponse.getStatus());
297         }
298         
299         @Test
300         public void searchPortalIfUserIsTest()
301         {
302                 EPUser user = null;
303                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
304                 String searchString = "test";
305                 PortalRestResponse<Map<String, List<SearchResultItem>>> expectedResult = new PortalRestResponse<Map<String, List<SearchResultItem>>>();
306                 expectedResult.setMessage("searchPortal: User object is null? - check logs");
307                 expectedResult.setResponse(new HashMap<String, List<SearchResultItem>>());
308                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
309                 PortalRestResponse<Map<String, List<SearchResultItem>>> actualResult = dashboardSearchResultController
310                                 .searchPortal(mockedRequest, searchString);
311                 System.out.println(actualResult);
312
313                 assertEquals(expectedResult, actualResult);
314         }
315         
316         
317         @Test
318         public void getActiveUsersTest() {
319                 List<String> expectedActiveUsers = new ArrayList<String>();
320                 EPUser user = mockUser.mockEPUser();
321                 ;
322                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
323                 String userId = user.getOrgUserId();
324                 Mockito.when(searchService.getRelatedUsers(userId)).thenReturn(expectedActiveUsers);
325                 List<String> actualOnlineUsers = dashboardSearchResultController.getActiveUsers(mockedRequest);
326                 assertEquals(expectedActiveUsers, actualOnlineUsers);
327
328         }
329
330         @Test
331         public void getActiveUsersExceptionTest() {
332                 List<String> expectedActiveUsers = new ArrayList<String>();
333                 EPUser user = mockUser.mockEPUser();
334                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
335                 String userId = user.getOrgUserId();
336                 Mockito.when(searchService.getRelatedUsers(userId)).thenThrow(nullPointerException);
337                 List<String> actualOnlineUsers = dashboardSearchResultController.getActiveUsers(mockedRequest);
338                 assertEquals(expectedActiveUsers, actualOnlineUsers);
339
340         }
341
342         @Test
343         public void activeUsersTest() {
344                 EPUser user = mockUser.mockEPUser();
345                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
346                 PortalRestResponse<List<String>> expectedResult = new PortalRestResponse<List<String>>();
347                 expectedResult.setMessage("success");
348                 expectedResult.setResponse(new ArrayList<>());
349                 expectedResult.setStatus(PortalRestStatusEnum.OK);
350                 PortalRestResponse<List<String>> actualResult = dashboardSearchResultController.activeUsers(mockedRequest);
351
352                 assertEquals(actualResult, expectedResult);
353
354         }
355
356         @Test
357         public void activeUsersIfUserNullTest() {
358                 EPUser user = null;
359                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
360                 PortalRestResponse<List<String>> expectedResult = new PortalRestResponse<List<String>>();
361                 expectedResult.setMessage("User object is null? - check logs");
362                 expectedResult.setResponse(new ArrayList<>());
363                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
364                 PortalRestResponse<List<String>> actualResult = dashboardSearchResultController.activeUsers(mockedRequest);
365                 assertEquals(actualResult, expectedResult);
366
367         }
368
369         @Test
370         public void activeUsersExceptionTest() {
371                 EPUser user = mockUser.mockEPUser();
372                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
373                 PortalRestResponse<List<String>> expectedResult = new PortalRestResponse<List<String>>();
374                 expectedResult.setMessage("null - check logs.");
375                 expectedResult.setResponse(new ArrayList<>());
376                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
377                 Mockito.when(searchService.getRelatedUsers(user.getLoginId())).thenThrow(nullPointerException);
378                 PortalRestResponse<List<String>> actualResult = dashboardSearchResultController.activeUsers(mockedRequest);
379                 assertEquals(actualResult, expectedResult);
380
381         }
382         
383         @Test
384         public void searchPortalIfSearchStringNullTest() {
385                 EPUser user = mockUser.mockEPUser();
386                 ;
387                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
388                 String searchString = null;
389
390                 PortalRestResponse<Map<String, List<SearchResultItem>>> expectedResult = new PortalRestResponse<Map<String, List<SearchResultItem>>>();
391                 expectedResult.setMessage("searchPortal: String string is null");
392                 expectedResult.setResponse(new HashMap<String, List<SearchResultItem>>());
393                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
394
395                 PortalRestResponse<Map<String, List<SearchResultItem>>> actualResult = dashboardSearchResultController
396                                 .searchPortal(mockedRequest, searchString);
397                 assertEquals(expectedResult, actualResult);
398         }
399
400         @Test
401         public void searchPortalIfSearchTest() {
402                 EPUser user = mockUser.mockEPUser();
403                 ;
404                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
405                 String searchString = "test";
406                 List<SearchResultItem> searchResultItemList = new ArrayList<SearchResultItem>();
407                 SearchResultItem searchResultItem = new SearchResultItem();
408
409                 searchResultItem.setId((long) 1);
410                 searchResultItem.setCategory("test");
411                 searchResultItem.setName("test_name");
412                 searchResultItem.setTarget("test_target");
413                 searchResultItem.setUuid("test_UUId");
414                 searchResultItemList.add(searchResultItem);
415                 Map<String, List<SearchResultItem>> expectedResultMap = new HashMap<String, List<SearchResultItem>>();
416                 expectedResultMap.put(searchString, searchResultItemList);
417
418                 PortalRestResponse<Map<String, List<SearchResultItem>>> expectedResult = new PortalRestResponse<Map<String, List<SearchResultItem>>>();
419                 expectedResult.setMessage("success");
420                 expectedResult.setResponse(expectedResultMap);
421                 expectedResult.setStatus(PortalRestStatusEnum.OK);
422
423                 Mockito.when(searchService.searchResults(user.getLoginId(), searchString)).thenReturn(expectedResultMap);
424                 PortalRestResponse<Map<String, List<SearchResultItem>>> actualResult = dashboardSearchResultController
425                                 .searchPortal(mockedRequest, searchString);
426                 assertEquals(expectedResult, actualResult);
427
428         }
429
430         @Test
431         public void searchPortalXSS() {
432                 EPUser user = mockUser.mockEPUser();
433                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
434                 String searchString = "<script>alert(“XSS”)</script> ";
435
436                 PortalRestResponse<Map<String, List<SearchResultItem>>> expectedResult = new PortalRestResponse<Map<String, List<SearchResultItem>>>();
437                 expectedResult.setMessage("searchPortal: User object is invalid");
438                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
439
440                 PortalRestResponse<Map<String, List<SearchResultItem>>> actualResult = dashboardSearchResultController
441                         .searchPortal(mockedRequest, searchString);
442                 assertEquals(actualResult, expectedResult);
443
444         }
445
446         @Test
447         public void searchPortalIfSearchExcptionTest() {
448                 EPUser user = mockUser.mockEPUser();
449                 ;
450                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
451                 String searchString = "test";
452
453                 PortalRestResponse<Map<String, List<SearchResultItem>>> expectedResult = new PortalRestResponse<Map<String, List<SearchResultItem>>>();
454                 expectedResult.setMessage("null - check logs.");
455                 expectedResult.setResponse(new HashMap<String, List<SearchResultItem>>());
456                 expectedResult.setStatus(PortalRestStatusEnum.ERROR);
457
458                 Mockito.when(searchService.searchResults(user.getLoginId(), searchString)).thenThrow(nullPointerException);
459                 PortalRestResponse<Map<String, List<SearchResultItem>>> actualResult = dashboardSearchResultController
460                                 .searchPortal(mockedRequest, searchString);
461                 assertEquals(expectedResult, actualResult);
462         }
463
464 }