2  * ================================================================================
\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 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
\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 
  20 package org.openecomp.portalapp.portal.test.controller;
\r 
  22 import static org.junit.Assert.assertTrue;
\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 
  29 import javax.servlet.http.HttpServletRequest;
\r 
  30 import javax.servlet.http.HttpServletResponse;
\r 
  31 import javax.servlet.http.HttpSession;
\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 
  60 @RunWith(PowerMockRunner.class)
\r 
  61 @PrepareForTest(UserUtils.class)
\r 
  62 public class UserNotificationControllerTest {
\r 
  65         FunctionalMenuService functionalMenuService = new FunctionalMenuServiceImpl();
\r 
  68         UserNotificationService userNotificationService = new UserNotificationServiceImpl();
\r 
  71         UserNotificationController userNotificationController = new UserNotificationController();
\r 
  74         public void setup() {
\r 
  75                 MockitoAnnotations.initMocks(this);
\r 
  78         MockEPUser mockUser = new MockEPUser();
\r 
  79         MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
\r 
  81         HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest();
\r 
  82         HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse();
\r 
  83         NullPointerException nullPointerException = new NullPointerException();
\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 
 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 
 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 
 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 
 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 
 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 
 168                 EpNotificationItem notificationItem = null;
\r 
 169                 actualPortalRestResponse = userNotificationController.save(mockedRequest, mockedResponse, notificationItem);
\r 
 170                 assertTrue(actualPortalRestResponse.equals(expectedPortalRestResponse));
\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 
 196                 actualPortalRestResponse = userNotificationController.save(mockedRequest, mockedResponse, notificationItem);
\r 
 197                 assertTrue(actualPortalRestResponse.equals(expectedPortalRestResponse));
\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 
 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