Persistent XSS vulnerability in onboardingApps form fix
[portal.git] / ecomp-portal-BE-common / src / test / java / org / onap / portalapp / portal / controller / AppsControllerTest.java
index 59b5a8e..f622fac 100644 (file)
@@ -1,5 +1,5 @@
 /*-
- * ============LICENSE_START==========================================
 * ============LICENSE_START==========================================
  * ONAP Portal
  * ===================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
@@ -58,7 +58,6 @@ import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
-import org.onap.portalapp.portal.controller.AppsController;
 import org.onap.portalapp.portal.core.MockEPUser;
 import org.onap.portalapp.portal.domain.AdminUserApplications;
 import org.onap.portalapp.portal.domain.AppIdAndNameTransportModel;
@@ -82,7 +81,6 @@ import org.onap.portalapp.portal.transport.EPWidgetsSortPreference;
 import org.onap.portalapp.portal.transport.FieldsValidator;
 import org.onap.portalapp.portal.transport.LocalRole;
 import org.onap.portalapp.portal.transport.OnboardingApp;
-import org.onap.portalapp.portal.utils.EcompPortalUtils;
 import org.onap.portalapp.util.EPUserUtils;
 import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.portalsdk.core.web.support.AppUtils;
@@ -90,14 +88,17 @@ import org.powermock.api.mockito.PowerMockito;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpClientErrorException;
 
 @RunWith(PowerMockRunner.class)
 @PrepareForTest({SystemProperties.class,AppUtils.class, EPUserUtils.class, MediaType.class})
 public class AppsControllerTest extends MockitoTestSuite{
 
        @InjectMocks
-       AppsController appsController = new AppsController();
+       AppsController appsController;
 
        @Mock
        AdminRolesService adminRolesService = new AdminRolesServiceImpl();
@@ -127,6 +128,33 @@ public class AppsControllerTest extends MockitoTestSuite{
 
        MockEPUser mockUser = new MockEPUser();
 
+       @Test
+       public void putOnboardingAppXSSTest() {
+               EPUser user = mockUser.mockEPUser();
+               Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
+               OnboardingApp onboardingApp = new OnboardingApp();
+               onboardingApp.setUebTopicName("test<img src=‘~‘ onerror=prompt(123)>");
+               Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
+               Mockito.when(appService.modifyOnboardingApp(onboardingApp, user)).thenReturn(null);
+               Mockito.when(mockedResponse.getStatus()).thenReturn(200);
+               FieldsValidator actualFieldValidator = appsController.putOnboardingApp(mockedRequest, onboardingApp,
+               mockedResponse);
+               assertNull(actualFieldValidator);
+       }
+
+       @Test
+       public void postOnboardingAppXSSTest() {
+               EPUser user = mockUser.mockEPUser();
+               Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
+               OnboardingApp onboardingApp = new OnboardingApp();
+               onboardingApp.setUebKey("test<img src=‘~‘ onerror=prompt(123)>");
+               Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
+               Mockito.when(appService.addOnboardingApp(onboardingApp, user)).thenReturn(null);
+               FieldsValidator actualFieldValidator = appsController.postOnboardingApp(mockedRequest, onboardingApp,
+               mockedResponse);
+               assertNull(actualFieldValidator);
+       }
+
        @Test
        public void getUserAppsTest() {
                EPUser user = mockUser.mockEPUser();
@@ -365,6 +393,38 @@ public class AppsControllerTest extends MockitoTestSuite{
                assertEquals(actualFieldValidator, expectedFieldValidator);
        }
 
+       @Test
+       public void putUserAppsSortingManualXSSTest() {
+               EPUser user = mockUser.mockEPUser();
+               EPAppsManualPreference preference = new EPAppsManualPreference();
+               preference.setHeaderText("<script>alert(\"hellox worldss\");</script>");
+               Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
+               List<EPAppsManualPreference> ePAppsManualPreference = new ArrayList<>();
+               FieldsValidator expectedFieldValidator = new FieldsValidator();
+               expectedFieldValidator.setHttpStatusCode((long)HttpServletResponse.SC_NOT_ACCEPTABLE);
+               ePAppsManualPreference.add(preference);
+               Mockito.when(appService.saveAppsSortManual(ePAppsManualPreference, user)).thenReturn(expectedFieldValidator);
+               FieldsValidator actualFieldValidator = appsController.putUserAppsSortingManual(mockedRequest, ePAppsManualPreference,
+                       mockedResponse);
+               assertEquals(actualFieldValidator, expectedFieldValidator);
+       }
+
+       @Test
+       public void putUserWidgetsSortManualXSSTest() {
+               EPUser user = mockUser.mockEPUser();
+               EPWidgetsSortPreference preference = new EPWidgetsSortPreference();
+               preference.setHeaderText("<script>alert(\"hellox worldss\");</script>");
+               Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
+               List<EPWidgetsSortPreference> ePAppsManualPreference = new ArrayList<>();
+               FieldsValidator expectedFieldValidator = new FieldsValidator();
+               expectedFieldValidator.setHttpStatusCode((long)HttpServletResponse.SC_NOT_ACCEPTABLE);
+               ePAppsManualPreference.add(preference);
+               Mockito.when(appService.saveWidgetsSortManual(ePAppsManualPreference, user)).thenReturn(expectedFieldValidator);
+               FieldsValidator actualFieldValidator = appsController.putUserWidgetsSortManual(mockedRequest, ePAppsManualPreference,
+                       mockedResponse);
+               assertEquals(expectedFieldValidator, actualFieldValidator);
+       }
+
        @Test
        public void putUserAppsSortingManualExceptionTest() throws IOException {
                EPUser user = mockUser.mockEPUser();
@@ -401,7 +461,7 @@ public class AppsControllerTest extends MockitoTestSuite{
        }
 
        @Test
-       public void putUserWidgetsSortPrefTest() throws IOException {
+       public void putUserWidgetsSortPrefTest() {
                EPUser user = mockUser.mockEPUser();
                Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
                List<EPWidgetsSortPreference> ePWidgetsSortPreference = new ArrayList<EPWidgetsSortPreference>();
@@ -417,6 +477,24 @@ public class AppsControllerTest extends MockitoTestSuite{
                assertEquals(actualFieldValidator, expectedFieldValidator);
        }
 
+       @Test
+       public void putUserWidgetsSortPrefXSSTest() {
+               EPUser user = mockUser.mockEPUser();
+               Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
+               List<EPWidgetsSortPreference> ePWidgetsSortPreference = new ArrayList<>();
+               EPWidgetsSortPreference preference = new EPWidgetsSortPreference();
+               preference.setHeaderText("<script>alert(\"hellox worldss\");</script>");
+               ePWidgetsSortPreference.add(preference);
+               FieldsValidator expectedFieldValidator = new FieldsValidator();
+               expectedFieldValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
+               FieldsValidator actualFieldValidator;
+               Mockito.when(appService.deleteUserWidgetSortPref(ePWidgetsSortPreference, user))
+                       .thenReturn(expectedFieldValidator);
+               actualFieldValidator = appsController.putUserWidgetsSortPref(mockedRequest, ePWidgetsSortPreference,
+                       mockedResponse);
+               assertEquals(actualFieldValidator, expectedFieldValidator);
+       }
+
        @Test
        public void putUserWidgetsSortPrefExceptionTest() throws IOException {
                EPUser user = mockUser.mockEPUser();
@@ -472,6 +550,23 @@ public class AppsControllerTest extends MockitoTestSuite{
                assertEquals(actualFieldValidator, expectedFieldValidator);
        }
 
+       @Test
+       public void putUserAppsSortingPreferenceXSSTest() {
+               EPUser user = mockUser.mockEPUser();
+               Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
+               EPAppsSortPreference userAppsValue = new EPAppsSortPreference();
+               userAppsValue.setTitle("</script><script>alert(1)</script>");
+               FieldsValidator expectedFieldValidator = new FieldsValidator();
+               expectedFieldValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
+               expectedFieldValidator.setFields(null);
+               expectedFieldValidator.setErrorCode(null);
+               FieldsValidator actualFieldValidator;
+               Mockito.when(appService.saveAppsSortPreference(userAppsValue, user)).thenReturn(expectedFieldValidator);
+               actualFieldValidator = appsController.putUserAppsSortingPreference(mockedRequest, userAppsValue,
+                       mockedResponse);
+               assertEquals(actualFieldValidator, expectedFieldValidator);
+       }
+
        @Test
        public void putUserAppsSortingPreferenceExceptionTest() throws IOException {
                EPUser user = mockUser.mockEPUser();
@@ -548,7 +643,7 @@ public class AppsControllerTest extends MockitoTestSuite{
                List<AppsResponse> atualApps = new ArrayList<AppsResponse>();
 
                Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
-               Mockito.when(appService.getAllApps(false)).thenReturn(expectedApps);
+               Mockito.when(appService.getAllApplications(false)).thenReturn(expectedApps);
                atualApps = appsController.getApps(mockedRequest, mockedResponse);
                assertEquals(expectedApps, atualApps);
        }
@@ -566,7 +661,7 @@ public class AppsControllerTest extends MockitoTestSuite{
                EPUser user = mockUser.mockEPUser();
                Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
                Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
-               Mockito.when(appService.getAllApps(false)).thenThrow(nullPointerException);
+               Mockito.when(appService.getAllApplications(false)).thenThrow(nullPointerException);
                assertNull(appsController.getApps(mockedRequest, mockedResponse));
        }
 
@@ -725,24 +820,110 @@ public class AppsControllerTest extends MockitoTestSuite{
        }
 
        @Test
-       public void putOnboardingAppTest() {
+       public void putOnboardingAppTest() throws Exception {
                EPUser user = mockUser.mockEPUser();
                Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
                OnboardingApp OnboardingApp = new OnboardingApp();
+               OnboardingApp.isCentralAuth = true;
+               OnboardingApp.nameSpace = "test1";
                FieldsValidator expectedFieldValidator = new FieldsValidator();
                expectedFieldValidator.setHttpStatusCode((long) 200);
                expectedFieldValidator.setFields(null);
                expectedFieldValidator.setErrorCode(null);
+               EPApp OnboardingApp1 = new EPApp();
+               OnboardingApp1.setCentralAuth(false);
+               OnboardingApp1.setNameSpace("test"); 
+               Mockito.when(appService.getApp(Matchers.anyLong())).thenReturn(OnboardingApp1);
                Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
+               ResponseEntity<String> response = new ResponseEntity<>(HttpStatus.OK);
+               Mockito.when(appService.checkIfNameSpaceIsValid(Matchers.anyString())).thenReturn(response);
                Mockito.when(appService.modifyOnboardingApp(OnboardingApp, user)).thenReturn(expectedFieldValidator);
                Mockito.when(mockedResponse.getStatus()).thenReturn(200);
                FieldsValidator actualFieldValidator = appsController.putOnboardingApp(mockedRequest, OnboardingApp,
                                mockedResponse);
                assertEquals(expectedFieldValidator, actualFieldValidator);
        }
+       
+       @Test
+       public void putOnboardingApp2Test() throws Exception {
+               EPUser user = mockUser.mockEPUser();
+               Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
+               OnboardingApp onboardingApp = new OnboardingApp();
+               onboardingApp.isCentralAuth = true;
+               onboardingApp.nameSpace = "com.test1";
+               EPApp app = new EPApp();
+               app.setNameSpace("com.test ");
+               FieldsValidator expectedFieldValidator = new FieldsValidator();
+               expectedFieldValidator.setHttpStatusCode((long) 200);
+               expectedFieldValidator.setFields(null);
+               expectedFieldValidator.setErrorCode(null);
+               Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
+               Mockito.when(adminRolesService.isAccountAdminOfApplication(Matchers.any(EPUser.class),Matchers.any(EPApp.class))).thenReturn(true);
+               ResponseEntity<String> response = new ResponseEntity<>(HttpStatus.OK);
+               Mockito.when(appService.checkIfNameSpaceIsValid("com.test1")).thenReturn(response);
+               Mockito.when(appService.getApp(Matchers.anyLong())).thenReturn(app);
+               Mockito.when(mockedResponse.getStatus()).thenReturn(200);
+               Mockito.when(appService.modifyOnboardingApp(Matchers.any(OnboardingApp.class), Matchers.any(EPUser.class))).thenReturn(expectedFieldValidator);
+               FieldsValidator actualFieldValidator = appsController.putOnboardingApp(mockedRequest, onboardingApp,
+                               mockedResponse);
+       }
+       
+       
+
+       
+       @Test
+       public void putOnboardingApp4Test() throws Exception {
+               EPUser user = mockUser.mockEPUser();
+               Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
+               OnboardingApp onboardingApp = new OnboardingApp();
+               onboardingApp.isCentralAuth = false;
+               onboardingApp.nameSpace = "com.test1";
+               EPApp app = new EPApp();
+               app.setCentralAuth(false);
+               app.setNameSpace("com.test ");
+               FieldsValidator expectedFieldValidator = new FieldsValidator();
+               expectedFieldValidator.setHttpStatusCode((long) 404);
+               Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
+               Mockito.when(adminRolesService.isAccountAdminOfAnyActiveorInactiveApplication(Matchers.any(EPUser.class),Matchers.any(EPApp.class))).thenReturn(true);
+               ResponseEntity<String> response = new ResponseEntity<>(HttpStatus.OK);
+               
+               HttpClientErrorException exception = new HttpClientErrorException(HttpStatus.FORBIDDEN);
+               Mockito.when(appService.checkIfNameSpaceIsValid("com.test1")).thenThrow(exception);
+               Mockito.when(appService.getApp(Matchers.anyLong())).thenReturn(app);
+               Mockito.when(mockedResponse.getStatus()).thenReturn(200);
+               Mockito.when(appService.modifyOnboardingApp(Matchers.any(OnboardingApp.class), Matchers.any(EPUser.class))).thenReturn(expectedFieldValidator);
+               FieldsValidator actualFieldValidator = appsController.putOnboardingApp(mockedRequest, onboardingApp,
+                               mockedResponse);
+               assertEquals(expectedFieldValidator.getHttpStatusCode(), actualFieldValidator.getHttpStatusCode());
+       }
+       
+       @Test
+       public void putOnboardingApp5Test() throws Exception {
+               EPUser user = mockUser.mockEPUser();
+               Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
+               OnboardingApp onboardingApp = new OnboardingApp();
+               onboardingApp.isCentralAuth = true;
+               onboardingApp.nameSpace = "com.test1";
+               EPApp app = new EPApp();
+               app.setNameSpace("com.test ");
+               FieldsValidator expectedFieldValidator = new FieldsValidator();
+               expectedFieldValidator.setHttpStatusCode((long) 400);
+               Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
+               Mockito.when(adminRolesService.isAccountAdminOfApplication(Matchers.any(EPUser.class),Matchers.any(EPApp.class))).thenReturn(true);
+               ResponseEntity<String> response = new ResponseEntity<>(HttpStatus.OK);
+               
+               HttpClientErrorException exception = new HttpClientErrorException(HttpStatus.BAD_REQUEST);
+               Mockito.when(appService.checkIfNameSpaceIsValid("com.test1")).thenThrow(exception);
+               Mockito.when(appService.getApp(Matchers.anyLong())).thenReturn(app);
+               Mockito.when(mockedResponse.getStatus()).thenReturn(400);
+               Mockito.when(appService.modifyOnboardingApp(Matchers.any(OnboardingApp.class), Matchers.any(EPUser.class))).thenReturn(expectedFieldValidator);
+               FieldsValidator actualFieldValidator = appsController.putOnboardingApp(mockedRequest, onboardingApp,
+                               mockedResponse);
+       }
+
 
        @Test
-       public void putOnboardingAppIfSuperAdminTest() {
+       public void putOnboardingAppIfSuperAdminTest() throws Exception {
                EPUser user = mockUser.mockEPUser();
                Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
                FieldsValidator expectedFieldValidator = null;
@@ -753,7 +934,7 @@ public class AppsControllerTest extends MockitoTestSuite{
        }
 
        @Test
-       public void putOnboardingAppExceptionTest() {
+       public void putOnboardingAppExceptionTest() throws Exception {
                EPUser user = mockUser.mockEPUser();
                Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
                OnboardingApp OnboardingApp = new OnboardingApp();
@@ -763,7 +944,7 @@ public class AppsControllerTest extends MockitoTestSuite{
        }
 
     @Test
-    public void putOnboardingAppNullUserTest() {
+    public void putOnboardingAppNullUserTest() throws Exception {
         Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenThrow(nullPointerException);
         Mockito.when(mockedResponse.getStatus()).thenReturn(200);
         assertNull(appsController.putOnboardingApp(mockedRequest, new OnboardingApp(), mockedResponse));