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.assertEquals;
\r 
  23 import static org.junit.Assert.assertNull;
\r 
  24 import static org.junit.Assert.assertTrue;
\r 
  26 import java.io.IOException;
\r 
  27 import java.util.ArrayList;
\r 
  28 import java.util.Date;
\r 
  29 import java.util.List;
\r 
  31 import javax.servlet.http.HttpServletRequest;
\r 
  32 import javax.servlet.http.HttpServletResponse;
\r 
  33 import javax.servlet.http.HttpSession;
\r 
  35 import org.junit.Before;
\r 
  36 import org.junit.Test;
\r 
  37 import org.mockito.InjectMocks;
\r 
  38 import org.mockito.Mock;
\r 
  39 import org.mockito.Mockito;
\r 
  40 import org.mockito.MockitoAnnotations;
\r 
  41 import org.openecomp.portalapp.portal.controller.AppCatalogController;
\r 
  42 import org.openecomp.portalapp.portal.domain.EPApp;
\r 
  43 import org.openecomp.portalapp.portal.domain.EPUser;
\r 
  44 import org.openecomp.portalapp.portal.ecomp.model.AppCatalogItem;
\r 
  45 import org.openecomp.portalapp.portal.service.AdminRolesService;
\r 
  46 import org.openecomp.portalapp.portal.service.AdminRolesServiceImpl;
\r 
  47 import org.openecomp.portalapp.portal.service.EPAppCommonServiceImpl;
\r 
  48 import org.openecomp.portalapp.portal.service.EPAppService;
\r 
  49 import org.openecomp.portalapp.portal.service.PersUserAppService;
\r 
  50 import org.openecomp.portalapp.portal.service.PersUserAppServiceImpl;
\r 
  51 import org.openecomp.portalapp.portal.test.core.MockEPUser;
\r 
  52 import org.openecomp.portalapp.portal.test.framework.MockitoTestSuite;
\r 
  53 import org.openecomp.portalapp.portal.transport.AppCatalogPersonalization;
\r 
  54 import org.openecomp.portalapp.portal.transport.FieldsValidator;
\r 
  55 import org.openecomp.portalapp.portal.transport.FieldsValidator.FieldName;
\r 
  56 import org.openecomp.portalapp.util.EPUserUtils;
\r 
  57 import org.openecomp.portalsdk.core.util.SystemProperties;
\r 
  59 public class AppCatalogControllerTest extends MockitoTestSuite {
\r 
  62         AdminRolesService adminRolesService = new AdminRolesServiceImpl();
\r 
  65         EPAppService appService = new EPAppCommonServiceImpl();
\r 
  68         AppCatalogController appCatalogController = new AppCatalogController();
\r 
  70         PersUserAppService persUserAppService = Mockito.spy(new PersUserAppServiceImpl());
\r 
  73         public void setup() {
\r 
  74                 MockitoAnnotations.initMocks(this);
\r 
  77         MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
\r 
  79         HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest();
\r 
  80         HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse();
\r 
  83         EPUserUtils ePUserUtils = new EPUserUtils();
\r 
  88         NullPointerException nullPointerException = new NullPointerException();
\r 
  90         MockEPUser mockUser = new MockEPUser();
\r 
  92         public AppCatalogItem mockAppCatalogItem() {
\r 
  93                 AppCatalogItem appCatalogItem = new AppCatalogItem();
\r 
  94                 appCatalogItem.setId((long) 1);
\r 
  95                 appCatalogItem.setName("Ecomp Portal");
\r 
  96                 appCatalogItem.setImageUrl("Test_URL");
\r 
  97                 appCatalogItem.setDescription("Testing");
\r 
  98                 appCatalogItem.setNotes("Test");
\r 
  99                 appCatalogItem.setUrl("test");
\r 
 100                 appCatalogItem.setAlternateUrl("test");
\r 
 101                 appCatalogItem.setRestricted(false);
\r 
 102                 appCatalogItem.setOpen(false);
\r 
 103                 appCatalogItem.setAccess(true);
\r 
 104                 appCatalogItem.setSelect(true);
\r 
 105                 appCatalogItem.setPending(false);
\r 
 107                 return appCatalogItem;
\r 
 111         public void getAppCatalogTestIfUserNotAdmin() throws IOException {
\r 
 112                 EPUser user = mockUser.mockEPUser();
\r 
 113                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
\r 
 114                 List<AppCatalogItem> actualAppCatalogList = null;
\r 
 116                 List<AppCatalogItem> expectedAppCatalog = new ArrayList<>();
\r 
 118                 AppCatalogItem appCatalogItem = mockAppCatalogItem();
\r 
 119                 expectedAppCatalog.add(appCatalogItem);
\r 
 120                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
\r 
 121                 Mockito.when(appService.getUserAppCatalog(user)).thenReturn(expectedAppCatalog);
\r 
 122                 actualAppCatalogList = appCatalogController.getAppCatalog(mockedRequest, mockedResponse);
\r 
 124                 assertTrue(actualAppCatalogList.contains(appCatalogItem));
\r 
 129         public void getAppCatalogTestIfUserIsAdmin() throws IOException {
\r 
 130                 EPUser user = mockUser.mockEPUser();
\r 
 131                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
\r 
 132                 List<AppCatalogItem> actualAppCatalogList = null;
\r 
 134                 List<AppCatalogItem> expectedAppCatalog = new ArrayList<>();
\r 
 136                 AppCatalogItem appCatalogItem = mockAppCatalogItem();
\r 
 138                 expectedAppCatalog.add(appCatalogItem);
\r 
 139                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
\r 
 140                 Mockito.when(appService.getAdminAppCatalog(user)).thenReturn(expectedAppCatalog);
\r 
 141                 actualAppCatalogList = appCatalogController.getAppCatalog(mockedRequest, mockedResponse);
\r 
 143                 assertTrue(actualAppCatalogList.contains(appCatalogItem));
\r 
 148         public void getAppCatalogTestIfUserisNull() throws IOException {
\r 
 149                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(null);
\r 
 150                 List<AppCatalogItem> actualAppCatalogList = new ArrayList<>();
\r 
 152                 actualAppCatalogList = appCatalogController.getAppCatalog(mockedRequest, mockedResponse);
\r 
 153                 assertNull(actualAppCatalogList);
\r 
 158         public void getAppCatalogTestIfUserThrowsExceptionTest() throws IOException {
\r 
 159                 EPUser user = new EPUser();
\r 
 160                 user.setFirstName("test");
\r 
 161                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
\r 
 162                 List<AppCatalogItem> actualAppCatalogList = new ArrayList<>();
\r 
 165                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
\r 
 167                 Mockito.when(appCatalogController.getAppCatalog(mockedRequest, mockedResponse)).thenThrow(nullPointerException);
\r 
 169                 actualAppCatalogList = appCatalogController.getAppCatalog(mockedRequest, mockedResponse);
\r 
 170                 assertNull(actualAppCatalogList);
\r 
 175         public void putAppCatalogSelectionTestWhenAppIsNull() throws IOException {
\r 
 177                 AppCatalogPersonalization persRequest = new AppCatalogPersonalization();
\r 
 178                 persRequest.setAppId((long) 1);
\r 
 179                 persRequest.setPending(false);
\r 
 180                 persRequest.setSelect(false);
\r 
 182                 EPUser user = mockUser.mockEPUser();
\r 
 184                 FieldsValidator expectedFieldValidator = new FieldsValidator();
\r 
 186                 FieldsValidator actualFieldValidator = new FieldsValidator();
\r 
 187                 List<FieldName> fields = new ArrayList<>();
\r 
 190                 expectedFieldValidator.setHttpStatusCode((long) 200);
\r 
 191                 expectedFieldValidator.setFields(fields);
\r 
 192                 expectedFieldValidator.setErrorCode(null);
\r 
 196                 Mockito.when(appService.getApp(persRequest.getAppId())).thenReturn(app);
\r 
 198                 HttpSession session = mockedRequest.getSession();
\r 
 199                 session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME), user);
\r 
 201                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
\r 
 202                 actualFieldValidator = appCatalogController.putAppCatalogSelection(mockedRequest, persRequest, mockedResponse);
\r 
 203                 assertEquals(expectedFieldValidator, actualFieldValidator);
\r 
 208         public void putAppCatalogSelectionTest() throws IOException {
\r 
 210                 AppCatalogPersonalization persRequest = new AppCatalogPersonalization();
\r 
 211                 persRequest.setAppId((long) 1);
\r 
 212                 persRequest.setPending(false);
\r 
 213                 persRequest.setSelect(false);
\r 
 215                 EPUser user = mockUser.mockEPUser();
\r 
 217                 FieldsValidator expectedFieldValidator = new FieldsValidator();
\r 
 219                 FieldsValidator actualFieldValidator = new FieldsValidator();
\r 
 220                 List<FieldName> fields = new ArrayList<>();
\r 
 223                 expectedFieldValidator.setHttpStatusCode((long) 200);
\r 
 224                 expectedFieldValidator.setFields(fields);
\r 
 225                 expectedFieldValidator.setErrorCode(null);
\r 
 227                 EPApp app = new EPApp();
\r 
 229                 app.setName("Test");
\r 
 230                 app.setImageUrl("test");
\r 
 231                 app.setDescription("test");
\r 
 232                 app.setNotes("test");
\r 
 233                 app.setUrl("test");
\r 
 234                 app.setId((long) 1);
\r 
 235                 app.setAppRestEndpoint("test");
\r 
 236                 app.setAlternateUrl("test");
\r 
 237                 app.setName("test");
\r 
 238                 app.setMlAppName("test");
\r 
 239                 app.setMlAppAdminId("test");
\r 
 240                 app.setUsername("test");
\r 
 241                 app.setAppPassword("test");
\r 
 242                 app.setOpen(false);
\r 
 243                 app.setEnabled(false);
\r 
 244                 app.setUebKey("test");
\r 
 245                 app.setUebSecret("test");
\r 
 246                 app.setUebTopicName("test");
\r 
 249                 Mockito.when(appService.getApp(persRequest.getAppId())).thenReturn(app);
\r 
 251                 HttpSession session = mockedRequest.getSession();
\r 
 252                 session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME), user);
\r 
 254                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
\r 
 255                 Mockito.doNothing().when(persUserAppService).setPersUserAppValue(user, app, persRequest.getSelect(),
\r 
 256                                 persRequest.getPending());
\r 
 258                 actualFieldValidator = appCatalogController.putAppCatalogSelection(mockedRequest, persRequest, mockedResponse);
\r 
 260                 assertEquals(expectedFieldValidator, actualFieldValidator);
\r