2  * ============LICENSE_START==========================================
 
   4  * ===================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ===================================================================
 
   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
 
  13  *             http://www.apache.org/licenses/LICENSE-2.0
 
  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.
 
  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
 
  26  *             https://creativecommons.org/licenses/by/4.0/
 
  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.
 
  34  * ============LICENSE_END============================================
 
  36  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
 
  38 package org.onap.portalapp.portal.controller;
 
  40 import static org.junit.Assert.assertEquals;
 
  41 import static org.junit.Assert.assertTrue;
 
  43 import java.util.ArrayList;
 
  44 import java.util.List;
 
  46 import javax.servlet.http.HttpServletRequest;
 
  47 import javax.servlet.http.HttpServletResponse;
 
  49 import org.junit.Before;
 
  50 import org.junit.Test;
 
  51 import org.junit.runner.RunWith;
 
  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.TicketEventController;
 
  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.framework.MockitoTestSuite;
 
  62 import org.onap.portalapp.portal.service.TicketEventService;
 
  63 import org.onap.portalapp.portal.service.UserNotificationService;
 
  64 import org.onap.portalsdk.core.web.support.UserUtils;
 
  65 import org.powermock.core.classloader.annotations.PrepareForTest;
 
  66 import org.powermock.modules.junit4.PowerMockRunner;
 
  68 import com.fasterxml.jackson.databind.JsonNode;
 
  70 @RunWith(PowerMockRunner.class)
 
  71 @PrepareForTest(UserUtils.class)
 
  72 public class TicketEventControllerTest {
 
  75         UserNotificationService userNotificationService;
 
  78         TicketEventService ticketEventService;
 
  81         TicketEventController ticketEventController = new TicketEventController();
 
  85                 MockitoAnnotations.initMocks(this);
 
  88         MockEPUser mockUser = new MockEPUser();
 
  89         MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
 
  91         HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest();
 
  92         HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse();
 
  93         NullPointerException nullPointerException = new NullPointerException();
 
  96         public void saveUserValidationTest() throws Exception {
 
  97                 PortalRestResponse<String> actualPortalRestResponse = new PortalRestResponse<String>();
 
  98                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<String>();
 
  99                 expectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
 
 100                 expectedPortalRestResponse.setMessage("Invalid Org User ID");
 
 101                 expectedPortalRestResponse.setResponse(null);
 
 102                 String ticketEventJson = "{\"application\": \"cbus\",\"event\": {\"body\": {\"ticketStatePhrase\": \"We recently detected a problem with the equipment at your site."
 
 103                                 + " The event is in queue for immediate work.\", \"ivrNotificationFlag\": \"1\",\"expectedRestoreDate\": 0,\"bridgeTransport\": \"AOTS\",  "
 
 104                                 + "\"reptRequestType\": 0,\"ticketNum\": \"000002000857405\",\"assetID\": \"CISCO_1921C1_ISR_G2\", \"eventDate\": 1490545134601,"
 
 105                                 + "\"eventAbstract\": \"ospfIfConfigError trap received from Cisco_1921c1_ISR_G2 with arguments: ospfRouterId=Cisco_1921c1_ISR_G2; "
 
 106                                 + "ospfIfIpAddress=1921c1_288266; ospfAddressLessIf=0; ospfPacketSrc=172.17.0.11; ospfConfigErrorType=2; ospfPacketType=1\","
 
 107                                 + "\"severity\": \"2 - Major\",\"ticketPriority\": \"3\",\"reportedCustomerImpact\": 0,\"testAutoIndicator\": 0,\"supportGroupName\": \"US-TEST-ORT\","
 
 108                                 + "\"lastModifiedDate\": \"1487687703\",\"messageGroup\": \"SNMP\",\"csi\": 0,\"mfabRestoredTime\": 0},\"header\": "
 
 109                                 + "{\"timestamp\": \"2017-02-21T14:35:05.219+0000\",\"eventSource\": \"aotstm\",\"entityId\": \"000002000857405\",      "
 
 110                                 + "\"sequenceNumber\": 2 },\"blinkMsgId\": \"f38c071e-1a47-4b55-9e72-1db830100a61\",\"sourceIP\": \"130.4.165.158\"},"
 
 111                                 + "\"SubscriberInfo\": {\"UserList\": [\"guest\"] }}";
 
 113                 actualPortalRestResponse = ticketEventController.handleRequest(mockedRequest,
 
 114                                 mockedResponse, ticketEventJson);
 
 115                 assertEquals(actualPortalRestResponse, expectedPortalRestResponse);
 
 119         public void saveTest() throws Exception {
 
 120                 String UserIds[] = new String[1];
 
 121                 UserIds[0] = "guest";
 
 122                 ArrayList<EPUser> users = new ArrayList<>();
 
 123                 EPUser user = new EPUser();
 
 124                 user.setOrgUserId("guest");
 
 127                 List<String> userIdlist = new ArrayList<>();
 
 128                 userIdlist.add("guest");
 
 129                 JsonNode application = null ;
 
 130                 String ticketEventJson = "{\"application\":\"cbus\",\"event\":{\"body\":{\"ticketStatePhrase\":\"We recently detected a problem with the equipment at your site. "
 
 131                                 + "The event is in queue for immediate work.\",\"ivrNotificationFlag\":\"1\",\"expectedRestoreDate\":0,\"bridgeTransport\":\"AOTS\",\"reptRequestType\":0,"
 
 132                                 + "\"ticketNum\":\"000002000857405\",\"assetID\":\"CISCO_1921C1_ISR_G2\",\"eventDate\":1490545134601,"
 
 133                                 + "\"eventAbstract\":\"ospfIfConfigError trap received from Cisco_1921c1_ISR_G2 with arguments: ospfRouterId=Cisco_1921c1_ISR_G2; "
 
 134                                 + "ospfIfIpAddress=1921c1_288266; ospfAddressLessIf=0; ospfPacketSrc=172.17.0.11; ospfConfigErrorType=2; ospfPacketType=1\","
 
 135                                 + "\"severity\":\"2 - Major\",\"ticketPriority\":\"3\",\"reportedCustomerImpact\":0,\"testAutoIndicator\":0,"
 
 136                                 + "\"supportGroupName\":\"US-TEST-ORT\",\"lastModifiedDate\":\"1487687703\",\"messageGroup\":\"SNMP\",\"csi\":0,\"mfabRestoredTime\":0},"
 
 137                                 + "\"header\":{\"timestamp\":\"2017-02-21T14:35:05.219+0000\",\"eventSource\":\"aotstm\",\"entityId\":\"000002000857405\",\"sequenceNumber\":2},"
 
 138                                 + "\"blinkMsgId\":\"f38c071e-1a47-4b55-9e72-1db830100a61\",\"sourceIP\":\"130.4.165.158\"},\"SubscriberInfo\":{\"UserList\":[\"guest\"]}}";
 
 139                 PortalRestResponse<String> actualPortalRestResponse = new PortalRestResponse<String>();
 
 140                 PortalRestResponse<String> expectedPortalRestResponse = new PortalRestResponse<String>();
 
 141                 expectedPortalRestResponse.setStatus(PortalRestStatusEnum.OK);
 
 142                 expectedPortalRestResponse.setMessage("processEventNotification: notification created");
 
 143                 expectedPortalRestResponse.setResponse("NotificationId");
 
 146                 Mockito.when(userNotificationService.getUsersByOrgIds(userIdlist)).thenReturn(users);
 
 147                 Mockito.when(ticketEventService.getNotificationHyperLink(application, "", "")).thenReturn("");
 
 148                 actualPortalRestResponse = ticketEventController.handleRequest(mockedRequest,
 
 149                                 mockedResponse, ticketEventJson);
 
 150                 assertTrue(actualPortalRestResponse.getStatus().compareTo(PortalRestStatusEnum.OK) == 0);
 
 154         public void saveTestForException() throws Exception {
 
 155                 String ticketEventJson = "\"event\": {\"body\": {\"ticketStatePhrase\": \"We recently detected a problem with the equipment at your site. The event is in queue for immediate work.\", \"ivrNotificationFlag\": \"1\",\"expectedRestoreDate\": 0,\"bridgeTransport\": \"AOTS\",  \"reptRequestType\": 0,\"ticketNum\": \"000002000857405\",\"assetID\": \"CISCO_1921C1_ISR_G2\", \"eventDate\": 1490545134601,\"eventAbstract\": \"ospfIfConfigError trap received from Cisco_1921c1_ISR_G2 with arguments: ospfRouterId=Cisco_1921c1_ISR_G2; ospfIfIpAddress=1921c1_288266; ospfAddressLessIf=0; ospfPacketSrc=172.17.0.11; ospfConfigErrorType=2; ospfPacketType=1\",\"severity\": \"2 - Major\",\"ticketPriority\": \"3\",\"reportedCustomerImpact\": 0,\"testAutoIndicator\": 0,\"supportGroupName\": \"US-TEST-ORT\",\"lastModifiedDate\": \"1487687703\",\"messageGroup\": \"SNMP\",\"csi\": 0,\"mfabRestoredTime\": 0},\"header\": {\"timestamp\": \"2017-02-21T14:35:05.219+0000\",\"eventSource\": \"aotstm\",\"entityId\": \"000002000857405\",      \"sequenceNumber\": 2 },\"blinkMsgId\": \"f38c071e-1a47-4b55-9e72-1db830100a61\",\"sourceIP\": \"130.4.165.158\"},\"SubscriberInfo\": {\"UserList\": [\"hk8777\"] }}";
 
 156                 PortalRestResponse<String> actualPortalRestResponse = ticketEventController.handleRequest(mockedRequest,
 
 157                                 mockedResponse, ticketEventJson);
 
 158                 assertTrue(actualPortalRestResponse.getStatus().compareTo(PortalRestStatusEnum.ERROR) == 0);
 
 162 //      public void saveTestForApplicationValid() throws Exception {
 
 163 //              String ticketEventJson = "{\"event\": {\"body\": {\"ticketStatePhrase\": \"We recently detected a problem with the equipment at your site. The event is in queue for immediate work.\", \"ivrNotificationFlag\": \"1\",\"expectedRestoreDate\": 0,\"bridgeTransport\": \"AOTS\",  \"reptRequestType\": 0,\"ticketNum\": \"000002000857405\",\"assetID\": \"CISCO_1921C1_ISR_G2\", \"eventDate\": 1490545134601,\"eventAbstract\": \"ospfIfConfigError trap received from Cisco_1921c1_ISR_G2 with arguments: ospfRouterId=Cisco_1921c1_ISR_G2; ospfIfIpAddress=1921c1_288266; ospfAddressLessIf=0; ospfPacketSrc=172.17.0.11; ospfConfigErrorType=2; ospfPacketType=1\",\"severity\": \"2 - Major\",\"ticketPriority\": \"3\",\"reportedCustomerImpact\": 0,\"testAutoIndicator\": 0,\"supportGroupName\": \"US-TEST-ORT\",\"lastModifiedDate\": \"1487687703\",\"messageGroup\": \"SNMP\",\"csi\": 0,\"mfabRestoredTime\": 0},\"header\": {\"timestamp\": \"2017-02-21T14:35:05.219+0000\",\"eventSource\": \"aotstm\",\"entityId\": \"000002000857405\",      \"sequenceNumber\": 2 },\"blinkMsgId\": \"f38c071e-1a47-4b55-9e72-1db830100a61\",\"sourceIP\": \"130.4.165.158\"},\"SubscriberInfo\": {\"UserList\": [\"hk8777\"] }}";
 
 164 //              PortalRestResponse<String> actualPortalRestResponse = ticketEventController.handleRequest(mockedRequest,
 
 165 //                              mockedResponse, ticketEventJson);
 
 166 //              assertTrue(actualPortalRestResponse.getStatus().compareTo(PortalRestStatusEnum.ERROR) == 0);
 
 167 //              assertEquals(actualPortalRestResponse.getMessage(), "application is mandatory");
 
 172         public void saveTestForBodyValid() throws Exception {
 
 173                 String ticketEventJson = "{\"application\": \"cbus\",\"event\": {\"header\": {\"timestamp\": \"2017-02-21T14:35:05.219+0000\",\"eventSource\": \"aotstm\",\"entityId\": \"000002000857405\",\"sequenceNumber\": 2 },\"blinkMsgId\": \"f38c071e-1a47-4b55-9e72-1db830100a61\",\"sourceIP\": \"130.4.165.158\"},\"SubscriberInfo\": {\"UserList\": [\"hk8777\"] }}";
 
 174                 PortalRestResponse<String> actualPortalRestResponse = ticketEventController.handleRequest(mockedRequest,
 
 175                                 mockedResponse, ticketEventJson);
 
 176                 assertTrue(actualPortalRestResponse.getStatus().compareTo(PortalRestStatusEnum.ERROR) == 0);
 
 177                 assertEquals(actualPortalRestResponse.getMessage(), "body is mandatory");
 
 181         public void saveTestForEventSourceValid() throws Exception {
 
 182                 String ticketEventJson = "{\"application\": \"cbus\",\"event\": {\"body\": {\"ticketStatePhrase\": \"We recently detected a problem with the equipment at your site. The event is in queue for immediate work.\", \"ivrNotificationFlag\": \"1\",\"expectedRestoreDate\": 0,\"bridgeTransport\": \"AOTS\",  \"reptRequestType\": 0,\"ticketNum\": \"000002000857405\",\"assetID\": \"CISCO_1921C1_ISR_G2\", \"eventDate\": 1490545134601,\"eventAbstract\": \"ospfIfConfigError trap received from Cisco_1921c1_ISR_G2 with arguments: ospfRouterId=Cisco_1921c1_ISR_G2; ospfIfIpAddress=1921c1_288266; ospfAddressLessIf=0; ospfPacketSrc=172.17.0.11; ospfConfigErrorType=2; ospfPacketType=1\",\"severity\": \"2 - Major\",\"ticketPriority\": \"3\",\"reportedCustomerImpact\": 0,\"testAutoIndicator\": 0,\"supportGroupName\": \"US-TEST-ORT\",\"lastModifiedDate\": \"1487687703\",\"messageGroup\": \"SNMP\",\"csi\": 0,\"mfabRestoredTime\": 0},\"header\": {\"timestamp\": \"2017-02-21T14:35:05.219+0000\",\"entityId\": \"000002000857405\",      \"sequenceNumber\": 2 },\"blinkMsgId\": \"f38c071e-1a47-4b55-9e72-1db830100a61\",\"sourceIP\": \"130.4.165.158\"},\"SubscriberInfo\": {\"UserList\": [\"hk8777\"] }}";
 
 183                 PortalRestResponse<String> actualPortalRestResponse = ticketEventController.handleRequest(mockedRequest,
 
 184                                 mockedResponse, ticketEventJson);
 
 185                 assertTrue(actualPortalRestResponse.getStatus().compareTo(PortalRestStatusEnum.ERROR) == 0);
 
 186                 assertEquals(actualPortalRestResponse.getMessage(), "Message Source is mandatory");
 
 190         public void saveTestForUserListValid() throws Exception {
 
 191                 String ticketEventJson = "{\"application\": \"cbus\",\"event\": {\"body\": {\"ticketStatePhrase\": \"We recently detected a problem with the equipment at your site. The event is in queue for immediate work.\", \"ivrNotificationFlag\": \"1\",\"expectedRestoreDate\": 0,\"bridgeTransport\": \"AOTS\",  \"reptRequestType\": 0,\"ticketNum\": \"000002000857405\",\"assetID\": \"CISCO_1921C1_ISR_G2\", \"eventDate\": 1490545134601,\"eventAbstract\": \"ospfIfConfigError trap received from Cisco_1921c1_ISR_G2 with arguments: ospfRouterId=Cisco_1921c1_ISR_G2; ospfIfIpAddress=1921c1_288266; ospfAddressLessIf=0; ospfPacketSrc=172.17.0.11; ospfConfigErrorType=2; ospfPacketType=1\",\"severity\": \"2 - Major\",\"ticketPriority\": \"3\",\"reportedCustomerImpact\": 0,\"testAutoIndicator\": 0,\"supportGroupName\": \"US-TEST-ORT\",\"lastModifiedDate\": \"1487687703\",\"messageGroup\": \"SNMP\",\"csi\": 0,\"mfabRestoredTime\": 0},\"header\": {\"timestamp\": \"2017-02-21T14:35:05.219+0000\",\"eventSource\": \"aotstm\",\"entityId\": \"000002000857405\",      \"sequenceNumber\": 2 },\"blinkMsgId\": \"f38c071e-1a47-4b55-9e72-1db830100a61\",\"sourceIP\": \"130.4.165.158\"},\"SubscriberInfo\": {}}";
 
 192                 PortalRestResponse<String> actualPortalRestResponse = ticketEventController.handleRequest(mockedRequest,
 
 193                                 mockedResponse, ticketEventJson);
 
 194                 assertTrue(actualPortalRestResponse.getStatus().compareTo(PortalRestStatusEnum.ERROR) == 0);
 
 195                 assertEquals(actualPortalRestResponse.getMessage(), "At least one user Id is mandatory");
 
 199         public void saveTestForApplicationValid() throws Exception {
 
 200         String ticketEventJson = "{\"event\": {\"body\": {\"ticketStatePhrase\": \"We recently detected a problem with the equipment at your site. The event is in queue for immediate work.\", \"ivrNotificationFlag\": \"1\",\"expectedRestoreDate\": 0,\"bridgeTransport\": \"AOTS\", \"reptRequestType\": 0,\"ticketNum\": \"000002000857405\",\"assetID\": \"CISCO_1921C1_ISR_G2\", \"eventDate\": 1490545134601,\"eventAbstract\": \"ospfIfConfigError trap received from Cisco_1921c1_ISR_G2 with arguments: ospfRouterId=Cisco_1921c1_ISR_G2; ospfIfIpAddress=1921c1_288266; ospfAddressLessIf=0; ospfPacketSrc=172.17.0.11; ospfConfigErrorType=2; ospfPacketType=1\",\"severity\": \"2 - Major\",\"ticketPriority\": \"3\",\"reportedCustomerImpact\": 0,\"testAutoIndicator\": 0,\"supportGroupName\": \"US-TEST-ORT\",\"lastModifiedDate\": \"1487687703\",\"messageGroup\": \"SNMP\",\"csi\": 0,\"mfabRestoredTime\": 0},\"header\": {\"timestamp\": \"2017-02-21T14:35:05.219+0000\",\"eventSource\": \"aotstm\",\"entityId\": \"000002000857405\", \"sequenceNumber\": 2 },\"blinkMsgId\": \"f38c071e-1a47-4b55-9e72-1db830100a61\",\"sourceIP\": \"130.4.165.158\"},\"SubscriberInfo\": {\"UserList\": [\"hk8777\"] }}";
 
 201         PortalRestResponse<String> actualPortalRestResponse = ticketEventController.handleRequest(mockedRequest,
 
 202         mockedResponse, ticketEventJson);
 
 203         assertTrue(actualPortalRestResponse.getStatus().compareTo(PortalRestStatusEnum.ERROR) == 0);
 
 204         assertEquals(actualPortalRestResponse.getMessage(), "Application is mandatory");