/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.seasar.extension.httpsession; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import junit.framework.TestCase; import org.seasar.framework.mock.servlet.MockHttpServletRequestImpl; import org.seasar.framework.mock.servlet.MockHttpServletResponseImpl; import org.seasar.framework.mock.servlet.MockServletContextImpl; /** * @author higa * */ public class SessionIdUtilTest extends TestCase { public void tearDown() { SessionIdUtil.cookieName = SessionIdUtil.SESSION_ID_KEY; SessionIdUtil.cookieMaxAge = -1; SessionIdUtil.cookiePath = null; SessionIdUtil.cookieSecure = null; } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#getSessionIdFromCookie(javax.servlet.http.HttpServletRequest)} * . */ public void testGetSessionIdFromCookie() { MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); assertNull(SessionIdUtil.getSessionIdFromCookie(request)); request.addCookie(new Cookie("S2SESSIONID", "123")); assertEquals("123", SessionIdUtil.getSessionIdFromCookie(request)); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#getSessionIdFromCookie(javax.servlet.http.HttpServletRequest)} * . */ public void testGetSessionIdFromCookieWithCustomId() { SessionIdUtil.cookieName = "CUSTOMID"; MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); assertNull(SessionIdUtil.getSessionIdFromCookie(request)); request.addCookie(new Cookie("CUSTOMID", "123")); assertEquals("123", SessionIdUtil.getSessionIdFromCookie(request)); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#getSessionIdFromURL(javax.servlet.http.HttpServletRequest)} * . */ public void testGetSessionIdFromURI() { MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html;S2SESSIONID=123"); assertEquals("123", SessionIdUtil.getSessionIdFromURL(request)); request = new MockHttpServletRequestImpl(context, "hello.html;S2SESSIONID=123?aaa=111"); assertEquals("123", SessionIdUtil.getSessionIdFromURL(request)); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#getSessionIdFromURL(javax.servlet.http.HttpServletRequest)} * . */ public void testGetSessionIdFromURIWithCustomId() { SessionIdUtil.cookieName = "CUSTOMID"; MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html;CUSTOMID=123"); assertEquals("123", SessionIdUtil.getSessionIdFromURL(request)); request = new MockHttpServletRequestImpl(context, "hello.html;CUSTOMID=123?aaa=111"); assertEquals("123", SessionIdUtil.getSessionIdFromURL(request)); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#getSessionIdFromURL(javax.servlet.http.HttpServletRequest)} * . */ public void testGetSessionIdFromURI2() { MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); assertNull(SessionIdUtil.getSessionIdFromURL(request)); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#getSessionIdFromURL(javax.servlet.http.HttpServletRequest)} * . */ public void testGetSessionIdFromURI2WithCustomId() { SessionIdUtil.cookieName = "CUSTOMID"; MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); assertNull(SessionIdUtil.getSessionIdFromURL(request)); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#rewriteURL(String, javax.servlet.http.HttpServletRequest)} * . */ public void testRewriteURL() { MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); request.getSession(true); String url = SessionIdUtil.rewriteURL("/example/hello.html", request); System.out.println(url); assertTrue(url.indexOf(SessionIdUtil.SESSION_ID_KEY) >= 0); url = SessionIdUtil.rewriteURL("/example/hello.html?aaa=111", request); System.out.println(url); assertTrue(url.indexOf(SessionIdUtil.SESSION_ID_KEY) < url.indexOf('?')); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#rewriteURL(String, javax.servlet.http.HttpServletRequest)} * . */ public void testRewriteURLWithCustomId() { SessionIdUtil.cookieName = "CUSTOMID"; MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); request.getSession(true); String url = SessionIdUtil.rewriteURL("/example/hello.html", request); System.out.println(url); assertTrue(url.indexOf(SessionIdUtil.cookieName) >= 0); url = SessionIdUtil.rewriteURL("/example/hello.html?aaa=111", request); System.out.println(url); assertTrue(url.indexOf(SessionIdUtil.cookieName) < url.indexOf('?')); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#writeCookie(HttpServletRequest)} */ public void testWriteCookie() { MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); MockHttpServletResponseImpl response = new MockHttpServletResponseImpl( request); SessionIdUtil.writeCookie(request, response, "hoge"); Cookie[] cookies = response.getCookies(); assertNotNull(cookies); assertEquals(1, cookies.length); Cookie cookie = cookies[0]; assertEquals(SessionIdUtil.SESSION_ID_KEY, cookie.getName()); assertEquals("/example", cookie.getPath()); assertEquals(-1, cookie.getMaxAge()); assertEquals(false, cookie.getSecure()); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#writeCookie(HttpServletRequest)} */ public void testWriteCookieWithCustomId() { SessionIdUtil.cookieName = "CUSTOMID"; MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); MockHttpServletResponseImpl response = new MockHttpServletResponseImpl( request); SessionIdUtil.writeCookie(request, response, "hoge"); Cookie[] cookies = response.getCookies(); assertNotNull(cookies); assertEquals(1, cookies.length); Cookie cookie = cookies[0]; assertEquals(SessionIdUtil.cookieName, cookie.getName()); assertEquals("/example", cookie.getPath()); assertEquals(-1, cookie.getMaxAge()); assertEquals(false, cookie.getSecure()); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#writeCookie(HttpServletRequest)} */ public void testWriteCookie_RootContext() { MockServletContextImpl context = new MockServletContextImpl(""); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); MockHttpServletResponseImpl response = new MockHttpServletResponseImpl( request); SessionIdUtil.writeCookie(request, response, "hoge"); Cookie[] cookies = response.getCookies(); assertNotNull(cookies); assertEquals(1, cookies.length); Cookie cookie = cookies[0]; assertEquals(SessionIdUtil.SESSION_ID_KEY, cookie.getName()); assertEquals("/", cookie.getPath()); assertEquals(-1, cookie.getMaxAge()); assertEquals(false, cookie.getSecure()); } /** * Test method for * {@link org.seasar.extension.httpsession.SessionIdUtil#writeCookie(HttpServletRequest)} */ public void testWriteCookie_RootContextWithCustomId() { SessionIdUtil.cookieName = "CUSTOMID"; MockServletContextImpl context = new MockServletContextImpl(""); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); MockHttpServletResponseImpl response = new MockHttpServletResponseImpl( request); SessionIdUtil.writeCookie(request, response, "hoge"); Cookie[] cookies = response.getCookies(); assertNotNull(cookies); assertEquals(1, cookies.length); Cookie cookie = cookies[0]; assertEquals(SessionIdUtil.cookieName, cookie.getName()); assertEquals("/", cookie.getPath()); assertEquals(-1, cookie.getMaxAge()); assertEquals(false, cookie.getSecure()); } /** * */ public void testWriteCookieWithOptions() { SessionIdUtil.cookieName = "MY_SESSION_ID"; SessionIdUtil.cookieMaxAge = 3600; SessionIdUtil.cookiePath = "/"; SessionIdUtil.cookieSecure = Boolean.TRUE; MockServletContextImpl context = new MockServletContextImpl("/example"); MockHttpServletRequestImpl request = new MockHttpServletRequestImpl( context, "hello.html"); MockHttpServletResponseImpl response = new MockHttpServletResponseImpl( request); SessionIdUtil.writeCookie(request, response, "hoge"); Cookie[] cookies = response.getCookies(); assertNotNull(cookies); assertEquals(1, cookies.length); Cookie cookie = cookies[0]; assertEquals("MY_SESSION_ID", cookie.getName()); assertEquals("/", cookie.getPath()); assertEquals(3600, cookie.getMaxAge()); assertEquals(true, cookie.getSecure()); } }