* ============LICENSE_START==========================================
* ONAP Portal
* ===================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
* ===================================================================
*
* Unless otherwise specified, all software contained herein is licensed
*
* ============LICENSE_END============================================
*
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
*/
package org.onap.portalapp.portal.controller;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.mockito.Matchers.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.StringReader;
+import java.nio.charset.StandardCharsets;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
+import org.mockito.Matchers;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
+import org.onap.portalapp.command.EPLoginBean;
import org.onap.portalapp.controller.LoginController;
+import org.onap.portalapp.portal.core.MockEPUser;
+import org.onap.portalapp.portal.domain.EPUser;
import org.onap.portalapp.portal.framework.MockitoTestSuite;
import org.onap.portalapp.portal.service.EPLoginService;
import org.onap.portalapp.portal.service.EPRoleFunctionService;
import org.onap.portalapp.portal.service.EPRoleService;
import org.onap.portalapp.portal.service.SharedContextService;
+import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
import org.onap.portalapp.service.EPProfileService;
+import org.onap.portalapp.util.SessionCookieUtil;
+import org.onap.portalsdk.core.domain.MenuData;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.portalsdk.core.web.support.AppUtils;
+import org.onap.portalsdk.core.web.support.UserUtils;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
+import org.springframework.mock.web.DelegatingServletInputStream;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.servlet.ModelAndView;
@RunWith(PowerMockRunner.class)
-@PrepareForTest(SystemProperties.class)
+@PrepareForTest({ SystemProperties.class, CipherUtil.class, AppUtils.class, UserUtils.class, EPCommonSystemProperties.class,SessionCookieUtil.class})
public class LoginControllerTest {
+
+ private MockMvc mockMvc;
@Mock
EPProfileService service;
@Mock
- EPLoginService loginService;
+ EPLoginService loginService;
@Mock
- SharedContextService sharedContextService;
+ SharedContextService sharedContextService;
@Mock
- EPRoleService roleService;
+ EPRoleService roleService;
@Mock
- EPRoleFunctionService ePRoleFunctionService;
+ EPRoleFunctionService ePRoleFunctionService;
+ @Mock
+ Cookie cookie;
+
@InjectMocks
- LoginController loginController = new LoginController();
-
+ LoginController loginController;
+
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
+ mockMvc = MockMvcBuilders.standaloneSetup(loginController).build();
}
+ MockEPUser mockUser = new MockEPUser();
+
MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest();
HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse();
NullPointerException nullPointerException = new NullPointerException();
-
+ private DelegatingServletInputStream dsi;
+
@Test
- public void loginIfAuthNullTest()
- {
+ public void loginIfAuthNullTest() {
PowerMockito.mockStatic(SystemProperties.class);
- Mockito.when(SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM)).thenReturn(null);
+ when(SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM)).thenReturn(null);
ModelAndView result = loginController.login(mockedRequest);
- assertEquals(result.getViewName(),"openIdLogin") ;
+ assertEquals(result.getViewName(), "openIdLogin");
}
+
+
+
@Test
- public void loginIfAuthOIDCTest()
- {
+ public void loginIfAuthOIDCTest() {
PowerMockito.mockStatic(SystemProperties.class);
- Mockito.when(SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM)).thenReturn("OIDC");
+ when(SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM)).thenReturn("OIDC");
ModelAndView result = loginController.login(mockedRequest);
- assertEquals(result.getViewName(),"login") ;
+ assertEquals(result.getViewName(), "login");
}
-
+
@Test
- public void loginTest()
- {
+ public void loginTest() {
PowerMockito.mockStatic(SystemProperties.class);
- Mockito.when(SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM)).thenReturn("Test");
+ when(SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM)).thenReturn("Test");
ModelAndView result = loginController.login(mockedRequest);
- assertEquals(result.getViewName(),"login") ;
+ assertEquals(result.getViewName(), "login");
+ }
+
+ @Test
+ public void processSign()throws Exception {
+ mockMvc.perform(get("/process_csp"))//.header("Authorization", basic_auth))
+ .andExpect(status().is3xxRedirection());
+ //processSingleSignOn
+
}
+
+ @Test
+ public void processSingleSign()throws Exception {
+ PowerMockito.mockStatic(SessionCookieUtil.class);
+
+ when(SessionCookieUtil.getUserIdFromCookie(mockedRequest, mockedResponse)).thenReturn("user");
+ when(cookie.getName()).thenReturn("UserId");
+ when(cookie.getValue()).thenReturn("user");
+
+
+ mockMvc.perform(get("/processSingleSignOn").cookie(cookie))
+
+ .andExpect(status().is3xxRedirection());
+
+
+ }
+
+ @Test
+ public void loginValidateTest() throws Exception {
+ PowerMockito.mockStatic(SystemProperties.class);
+ PowerMockito.mockStatic(AppUtils.class);
+ PowerMockito.mockStatic(UserUtils.class);
+ PowerMockito.mockStatic(CipherUtil.class);
+ PowerMockito.mockStatic(EPCommonSystemProperties.class);
+ EPUser user = mockUser.mockEPUser();
+ HttpServletRequest request = mock(HttpServletRequest.class);
+ HttpServletResponse response = mock(HttpServletResponse.class);
+ HttpSession session = mock(HttpSession.class);
+ String json = "{\"loginId\":\"test\", \"password\":\"xyz\"}";
+ dsi = new DelegatingServletInputStream(new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)));
+ when(request.getInputStream()).thenReturn(dsi);
+ when(request.getReader()).thenReturn(new BufferedReader(new StringReader(json)));
+ when(request.getContentType()).thenReturn("application/json");
+ when(request.getCharacterEncoding()).thenReturn("UTF-8");
+ when(request.getAttribute("menu_properties_filename")).thenReturn("test");
+ StringBuffer reqUrl = new StringBuffer("http://localhost.com");
+ when(request.getRequestURL()).thenReturn(reqUrl);
+ when(request.getQueryString()).thenReturn("demo?test");
+ when(request.getSession(true)).thenReturn(session);
+ when(request.getSession()).thenReturn(session);
+ EPLoginBean commandBean = new EPLoginBean();
+ commandBean.setLoginId("guestT");
+ commandBean.setUser(user);
+ commandBean.setOrgUserId("guestT");
+ commandBean.setLoginPwd("xyz");
+ Set<MenuData> menus = new HashSet<MenuData>();
+ MenuData menuData = new MenuData();
+ menuData.setFunctionCd("test");
+ MenuData menuData2 = new MenuData();
+ menuData2.setFunctionCd("test2");
+ menus.add(menuData);
+ menus.add(menuData2);
+ commandBean.setMenu(menus);
+ commandBean.setBusinessDirectMenu(menus);
+ when(loginController.getLoginService().findUser(Matchers.any(EPLoginBean.class), Matchers.anyString(),
+ Matchers.any())).thenReturn(commandBean);
+ when(AppUtils.getSession(request)).thenReturn(session);
+ when(UserUtils.isAccessible(request, menuData.getFunctionCd())).thenReturn(true);
+ when(UserUtils.isAccessible(request, menuData2.getFunctionCd())).thenReturn(true);
+ when(EPCommonSystemProperties.getProperty(EPCommonSystemProperties.COOKIE_DOMAIN)).thenReturn("cookie_domain");
+ when(CipherUtil.encryptPKC(Matchers.anyString(), Matchers.anyString())).thenReturn("guestT");
+ String actual = loginController.loginValidate(request, response);
+ JSONObject expected = new JSONObject("{success: success}");
+ assertNotEquals(actual, expected);
+ }
+
}