blob: d198156a9b96542bdee59d9ccad69efc8d755a1d [file] [log] [blame]
// Copyright 2012 Google Inc. All Rights Reserved.
package com.google.inject.servlet;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import javax.servlet.http.HttpServletRequest;
import junit.framework.TestCase;
/**
* Unit test for the servlet utility class.
*
* @author ntang@google.com (Michael Tang)
*/
public class ServletUtilsTest extends TestCase {
public void testGetContextRelativePath() {
assertEquals(
"/test.html", getContextRelativePath("/a_context_path", "/a_context_path/test.html"));
assertEquals("/test.html", getContextRelativePath("", "/test.html"));
assertEquals("/test.html", getContextRelativePath("", "/foo/../test.html"));
assertEquals("/test.html", getContextRelativePath("", "/././foo/../test.html"));
assertEquals("/test.html", getContextRelativePath("", "/foo/../../../../test.html"));
assertEquals("/test.html", getContextRelativePath("", "/foo/%2E%2E/test.html"));
// %2E == '.'
assertEquals("/test.html", getContextRelativePath("", "/foo/%2E%2E/test.html"));
// %2F == '/'
assertEquals("/foo/%2F/test.html", getContextRelativePath("", "/foo/%2F/test.html"));
// %66 == 'f'
assertEquals("/foo.html", getContextRelativePath("", "/%66oo.html"));
}
public void testGetContextRelativePath_preserveQuery() {
assertEquals("/foo?q=f", getContextRelativePath("", "/foo?q=f"));
assertEquals("/foo?q=%20+%20", getContextRelativePath("", "/foo?q=%20+%20"));
}
public void testGetContextRelativePathWithWrongPath() {
assertNull(getContextRelativePath("/a_context_path", "/test.html"));
}
public void testGetContextRelativePathWithRootPath() {
assertEquals("/", getContextRelativePath("/a_context_path", "/a_context_path"));
}
public void testGetContextRelativePathWithEmptyPath() {
assertNull(getContextRelativePath("", ""));
}
private String getContextRelativePath(String contextPath, String requestPath) {
HttpServletRequest mock = createMock(HttpServletRequest.class);
expect(mock.getContextPath()).andReturn(contextPath);
expect(mock.getRequestURI()).andReturn(requestPath);
replay(mock);
String contextRelativePath = ServletUtils.getContextRelativePath(mock);
verify(mock);
return contextRelativePath;
}
}