[PORTAL-7] Rebase
[portal.git] / ecomp-portal-BE-common-test / src / main / java / org / openecomp / portalapp / portal / test / controller / UserNotificationControllerTest.java
1 /*-\r
2  * ================================================================================\r
3  * ECOMP Portal\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ================================================================================\r
19  */\r
20 package org.openecomp.portalapp.portal.test.controller;\r
21 \r
22 import static org.junit.Assert.assertTrue;\r
23 \r
24 import java.util.ArrayList;\r
25 import java.util.Calendar;\r
26 import java.util.Date;\r
27 import java.util.List;\r
28 \r
29 import javax.servlet.http.HttpServletRequest;\r
30 import javax.servlet.http.HttpServletResponse;\r
31 import javax.servlet.http.HttpSession;\r
32 \r
33 import org.junit.Before;\r
34 import org.junit.Test;\r
35 import org.junit.runner.RunWith;\r
36 import org.mockito.InjectMocks;\r
37 import org.mockito.Mock;\r
38 import org.mockito.Mockito;\r
39 import org.mockito.MockitoAnnotations;\r
40 import org.openecomp.portalapp.portal.controller.UserNotificationController;\r
41 import org.openecomp.portalapp.portal.domain.EPUser;\r
42 import org.openecomp.portalapp.portal.ecomp.model.PortalRestResponse;\r
43 import org.openecomp.portalapp.portal.ecomp.model.PortalRestStatusEnum;\r
44 import org.openecomp.portalapp.portal.service.FunctionalMenuService;\r
45 import org.openecomp.portalapp.portal.service.FunctionalMenuServiceImpl;\r
46 import org.openecomp.portalapp.portal.service.UserNotificationService;\r
47 import org.openecomp.portalapp.portal.service.UserNotificationServiceImpl;\r
48 import org.openecomp.portalapp.portal.test.core.MockEPUser;\r
49 import org.openecomp.portalapp.portal.test.framework.MockitoTestSuite;\r
50 import org.openecomp.portalapp.portal.transport.EpNotificationItem;\r
51 import org.openecomp.portalapp.portal.transport.EpNotificationItemVO;\r
52 import org.openecomp.portalapp.portal.transport.FunctionalMenuRole;\r
53 import org.openecomp.portalapp.util.EPUserUtils;\r
54 import org.openecomp.portalsdk.core.util.SystemProperties;\r
55 import org.openecomp.portalsdk.core.web.support.UserUtils;\r
56 import org.powermock.api.mockito.PowerMockito;\r
57 import org.powermock.core.classloader.annotations.PrepareForTest;\r
58 import org.powermock.modules.junit4.PowerMockRunner;\r
59 \r
60 @RunWith(PowerMockRunner.class)\r
61 @PrepareForTest(UserUtils.class)\r
62 public class UserNotificationControllerTest {\r
63 \r
64         @Mock\r
65         FunctionalMenuService functionalMenuService = new FunctionalMenuServiceImpl();\r
66 \r
67         @Mock\r
68         UserNotificationService userNotificationService = new UserNotificationServiceImpl();\r
69 \r
70         @InjectMocks\r
71         UserNotificationController userNotificationController = new UserNotificationController();\r
72 \r
73         @Before\r
74         public void setup() {\r
75                 MockitoAnnotations.initMocks(this);\r
76         }\r
77 \r
78         MockEPUser mockUser = new MockEPUser();\r
79         MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();\r
80 \r
81         HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest();\r
82         HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse();\r
83         NullPointerException nullPointerException = new NullPointerException();\r
84 \r
85         @Test\r
86         public void getMenuIdRoleIdTest() {\r
87                 List<FunctionalMenuRole> expectedMenuRoleList = new ArrayList<FunctionalMenuRole>();\r
88                 FunctionalMenuRole functionalMenuRole = new FunctionalMenuRole();\r
89                 functionalMenuRole.setId(new Integer(99999999));\r
90                 functionalMenuRole.setMenuId((long) 137);\r
91                 functionalMenuRole.setAppId(new Integer(456));\r
92                 functionalMenuRole.setRoleId(new Integer(6214));\r
93                 expectedMenuRoleList.add(functionalMenuRole);\r
94                 List<FunctionalMenuRole> actualFunctionalMenuRoleList = null;\r
95                 Mockito.when(functionalMenuService.getFunctionalMenuRole()).thenReturn(expectedMenuRoleList);\r
96                 actualFunctionalMenuRoleList = userNotificationController.getMenuIdRoleId(mockedRequest, mockedResponse);\r
97                 assertTrue(actualFunctionalMenuRoleList.equals(expectedMenuRoleList));\r
98 \r
99         }\r
100 \r
101         @Test\r
102         public void getNotificationsTest() {\r
103                 EPUser user = mockUser.mockEPUser();\r
104                 HttpSession session = mockedRequest.getSession();\r
105                 session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME), user);\r
106                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);\r
107                 List<EpNotificationItem> expectedEpNotificationList = new ArrayList<EpNotificationItem>();\r
108                 EpNotificationItem epNotificationItem = new EpNotificationItem();\r
109                 epNotificationItem.setNotificationId((long) 200);\r
110                 expectedEpNotificationList.add(epNotificationItem);\r
111                 PortalRestResponse<List<EpNotificationItem>> expectedportalRestResponse = new PortalRestResponse<List<EpNotificationItem>>();\r
112                 expectedportalRestResponse.setMessage("success");\r
113                 expectedportalRestResponse.setResponse(expectedEpNotificationList);\r
114                 PortalRestStatusEnum portalRestStatusEnum = null;\r
115                 expectedportalRestResponse.setStatus(portalRestStatusEnum.OK);\r
116                 PortalRestResponse<List<EpNotificationItem>> actualPortalRestResponse = null;\r
117                 Mockito.when(userNotificationService.getNotifications(user.getId())).thenReturn(expectedEpNotificationList);\r
118                 actualPortalRestResponse = userNotificationController.getNotifications(mockedRequest, mockedResponse);\r
119                 assertTrue(expectedportalRestResponse.equals(actualPortalRestResponse));\r
120 \r
121         }\r
122 \r
123         @Test\r
124         public void getNotificationsCatchesExceptionTest() {\r
125                 EPUser user = mockUser.mockEPUser();\r
126                 HttpSession session = mockedRequest.getSession();\r
127                 session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME), user);\r
128                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);\r
129                 List<EpNotificationItem> expectedEpNotificationList = null;\r
130                 PortalRestResponse<List<EpNotificationItem>> expectedportalRestResponse = new PortalRestResponse<List<EpNotificationItem>>();\r
131                 expectedportalRestResponse.setMessage(null);\r
132                 expectedportalRestResponse.setResponse(expectedEpNotificationList);\r
133                 PortalRestStatusEnum portalRestStatusEnum = null;\r
134                 expectedportalRestResponse.setStatus(portalRestStatusEnum.ERROR);\r
135                 PortalRestResponse<List<EpNotificationItem>> actualPortalRestResponse = null;\r
136                 Mockito.when(userNotificationService.getNotifications(user.getId())).thenThrow(new NullPointerException());\r
137                 actualPortalRestResponse = userNotificationController.getNotifications(mockedRequest, mockedResponse);\r
138                 assertTrue(expectedportalRestResponse.equals(actualPortalRestResponse));\r
139 \r
140         }\r
141 \r
142         @Test\r
143         public void getAdminNotificationsTest() {\r
144                 List<EpNotificationItemVO> actualEpNotificationsList = new ArrayList<EpNotificationItemVO>();\r
145                 List<EpNotificationItemVO> expectedEpNotificationsList = new ArrayList<EpNotificationItemVO>();\r
146                 EpNotificationItemVO epNotificationItemVO = new EpNotificationItemVO();\r
147                 epNotificationItemVO.setId((long) 1);\r
148                 expectedEpNotificationsList.add(epNotificationItemVO);\r
149                 Mockito.when(userNotificationService.getAdminNotificationVOS()).thenReturn(expectedEpNotificationsList);\r
150                 actualEpNotificationsList = userNotificationController.getAdminNotifications(mockedRequest, mockedResponse);\r
151                 assertTrue(actualEpNotificationsList.equals(expectedEpNotificationsList));\r
152         }\r
153 \r
154         @Test\r
155         public void saveTestWhenNotificationIsNull() throws Exception {\r
156                 EPUser user = mockUser.mockEPUser();\r
157                 HttpSession session = mockedRequest.getSession();\r
158                 session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME), user);\r
159                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);\r
160 \r
161                 PortalRestResponse<String> actualPortalRestResponse = new PortalRestResponse<String>();\r
162                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<String>();\r
163                 expectedPortalRestResponse.setMessage("FAILURE");\r
164                 expectedPortalRestResponse.setResponse("Notification Header cannot be null or empty");\r
165                 PortalRestStatusEnum portalRestStatusEnum = null;\r
166                 expectedPortalRestResponse.setStatus(portalRestStatusEnum.ERROR);\r
167 \r
168                 EpNotificationItem notificationItem = null;\r
169                 actualPortalRestResponse = userNotificationController.save(mockedRequest, mockedResponse, notificationItem);\r
170                 assertTrue(actualPortalRestResponse.equals(expectedPortalRestResponse));\r
171         }\r
172 \r
173         @Test\r
174         public void saveTestWhenEndTimeIsGreater() throws Exception {\r
175                 EPUser user = mockUser.mockEPUser();\r
176                 HttpSession session = mockedRequest.getSession();\r
177                 session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME), user);\r
178                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);\r
179                 PortalRestResponse<String> actualPortalRestResponse = new PortalRestResponse<String>();\r
180                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<String>();\r
181                 expectedPortalRestResponse.setMessage("FAILURE");\r
182                 expectedPortalRestResponse.setResponse("End Time should be greater than  start time");\r
183                 PortalRestStatusEnum portalRestStatusEnum = null;\r
184                 expectedPortalRestResponse.setStatus(portalRestStatusEnum.ERROR);\r
185                 EpNotificationItem notificationItem = new EpNotificationItem();\r
186                 notificationItem.setNotificationId((long) 1);\r
187                 notificationItem.setMsgHeader("Test");\r
188                 Date currentDate = new Date();\r
189                 Calendar c = Calendar.getInstance();\r
190                 c.setTime(currentDate);\r
191                 c.add(Calendar.DATE, 1);\r
192                 Date currentDatePlusOne = c.getTime();\r
193                 notificationItem.setStartTime(currentDatePlusOne);\r
194                 notificationItem.setEndTime(currentDate);\r
195 \r
196                 actualPortalRestResponse = userNotificationController.save(mockedRequest, mockedResponse, notificationItem);\r
197                 assertTrue(actualPortalRestResponse.equals(expectedPortalRestResponse));\r
198 \r
199         }\r
200 \r
201         @Test\r
202         public void saveTestWhenNoRoleIDExists() throws Exception {\r
203                 EPUser user = mockUser.mockEPUser();\r
204                 HttpSession session = mockedRequest.getSession();\r
205                 session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME), user);\r
206                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);\r
207                 PortalRestResponse<String> actualPortalRestResponse = new PortalRestResponse<String>();\r
208                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<String>();\r
209                 expectedPortalRestResponse.setMessage("FAILURE");\r
210                 expectedPortalRestResponse.setResponse("No Roles Ids Exist for the selected Roles");\r
211                 PortalRestStatusEnum portalRestStatusEnum = null;\r
212                 expectedPortalRestResponse.setStatus(portalRestStatusEnum.ERROR);\r
213                 EpNotificationItem notificationItem = new EpNotificationItem();\r
214                 notificationItem.setNotificationId((long) 1);\r
215                 notificationItem.setMsgHeader("Test");\r
216                 notificationItem.setIsForAllRoles("N");\r
217                 Date currentDate = new Date();\r
218                 Calendar c = Calendar.getInstance();\r
219                 c.setTime(currentDate);\r
220                 c.add(Calendar.DATE, 1);\r
221                 Date currentDatePlusOne = c.getTime();\r
222                 notificationItem.setStartTime(currentDate);\r
223                 notificationItem.setEndTime(currentDatePlusOne);\r
224                 List<Long> roleList = new ArrayList<Long>();\r
225                 notificationItem.setRoleIds(roleList);\r
226                 actualPortalRestResponse = userNotificationController.save(mockedRequest, mockedResponse, notificationItem);\r
227                 assertTrue(actualPortalRestResponse.equals(expectedPortalRestResponse));\r
228         }\r
229 \r
230         @Test\r
231         public void saveTest() throws Exception {\r
232                 EPUser user = mockUser.mockEPUser();\r
233                 HttpSession session = mockedRequest.getSession();\r
234                 session.setAttribute("user", user);\r
235                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);\r
236                 PortalRestResponse<String> actualPortalRestResponse = new PortalRestResponse<String>();\r
237                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<String>();\r
238                 expectedPortalRestResponse.setMessage("SUCCESS");\r
239                 expectedPortalRestResponse.setResponse("");\r
240                 PortalRestStatusEnum portalRestStatusEnum = null;\r
241                 expectedPortalRestResponse.setStatus(portalRestStatusEnum.OK);\r
242                 EpNotificationItem notificationItem = new EpNotificationItem();\r
243                 notificationItem.setNotificationId((long) 1);\r
244                 notificationItem.setMsgHeader("Test");\r
245                 notificationItem.setIsForAllRoles("Y");\r
246                 Date currentDate = new Date();\r
247                 Calendar c = Calendar.getInstance();\r
248                 c.setTime(currentDate);\r
249                 c.add(Calendar.DATE, 1);\r
250                 Date currentDatePlusOne = c.getTime();\r
251                 notificationItem.setStartTime(currentDate);\r
252                 notificationItem.setEndTime(currentDatePlusOne);\r
253                 List<Long> roleList = new ArrayList<Long>();\r
254                 Long role1 = (long) 1;\r
255                 roleList.add(role1);\r
256                 notificationItem.setRoleIds(roleList);\r
257                 HttpServletRequest request = mockitoTestSuite.getMockedRequest();\r
258                 PowerMockito.mockStatic(UserUtils.class);\r
259                 Mockito.when(UserUtils.getUserIdAsLong(request)).thenReturn((long) 1);\r
260                 Mockito.when(userNotificationService.saveNotification(notificationItem)).thenReturn("Test");\r
261                 actualPortalRestResponse = userNotificationController.save(mockedRequest, mockedResponse, notificationItem);\r
262                 assertTrue(actualPortalRestResponse.equals(expectedPortalRestResponse));\r
263         }\r
264 \r
265 }\r