1 package com.atlassian.seraph.logout; 2 3 import com.atlassian.seraph.auth.Authenticator; 4 import com.atlassian.seraph.config.SecurityConfig; 5 import com.atlassian.seraph.config.SecurityConfigFactory; 6 import com.mockobjects.dynamic.C; 7 import com.mockobjects.dynamic.Mock; 8 import com.mockobjects.servlet.MockHttpServletRequest; 9 import com.mockobjects.servlet.MockHttpServletResponse; 10 import junit.framework.TestCase; 11 12 import javax.servlet.ServletException ; 13 import java.io.IOException ; 14 15 public class TestLogoutServlet extends TestCase 16 { 17 private MockHttpServletRequest mockRequest; 18 private MockHttpServletResponse mockResponse; 19 Mock mockSecurityConfig; 20 private LogoutServlet logoutServlet; 21 private Mock mockAuthenticator; 22 23 public TestLogoutServlet() 24 { 25 } 26 27 protected void setUp() throws Exception 28 { 29 super.setUp(); 30 31 mockRequest = new MockHttpServletRequest(); 33 mockRequest.setupGetContextPath("/ctx"); 34 mockResponse = new MockHttpServletResponse(); 35 mockSecurityConfig = new Mock(SecurityConfig.class); 36 mockAuthenticator = new Mock(Authenticator.class); 37 mockAuthenticator.expectAndReturn("logout", C.args(C.isA(MockHttpServletRequest.class), C.isA(MockHttpServletResponse.class)), Boolean.TRUE); 38 mockSecurityConfig.expectAndReturn("getAuthenticator", mockAuthenticator.proxy()); 41 logoutServlet = new LogoutServlet(); 42 } 43 44 public void testInternalLogoutPageCausesRedirectWithNoLogoutCalled() throws IOException , ServletException 45 { 46 SecurityConfigFactory.setSecurityConfig((SecurityConfig) mockSecurityConfig.proxy()); 47 logoutServlet.init(); 48 mockSecurityConfig.expectAndReturn("getLogoutURL", "/logout.jsp"); 49 mockSecurityConfig.expectAndReturn("getLogoutURL", "/logout.jsp"); 50 mockResponse.setExpectedRedirect("/ctx/logout.jsp"); 51 logoutServlet.service(mockRequest, mockResponse); 52 } 53 54 public void testExternalLogoutPageCausesLogoutAndRedirect() throws IOException , ServletException 55 { 56 SecurityConfigFactory.setSecurityConfig((SecurityConfig) mockSecurityConfig.proxy()); 57 logoutServlet.init(); 58 mockRequest.setupGetContextPath("/ctx"); 59 mockSecurityConfig.expectAndReturn("getLogoutURL", "http://some.external.sso.page/"); 60 mockSecurityConfig.expectAndReturn("getLogoutURL", "http://some.external.sso.page/"); 61 mockResponse.setExpectedRedirect("http://some.external.sso.page/"); 62 63 logoutServlet.service(mockRequest, mockResponse); 64 } 65 66 } 67 | Popular Tags |