/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.web.portal.services;
import org.springframework.mock.web.MockHttpServletRequest;
import junit.framework.TestCase;
import com.enonic.cms.core.MockSitePropertiesService;
import com.enonic.cms.core.portal.httpservices.IllegalRedirectException;
public class UserServicesRedirectUrlResolverTest
extends TestCase
{
private MockSitePropertiesService sitePropertiesService;
private UserServicesRedirectUrlResolver userServicesRedirectUrlResolver;
private MockHttpServletRequest request;
protected void setUp()
throws Exception
{
super.setUp();
sitePropertiesService = new MockSitePropertiesService();
userServicesRedirectUrlResolver = new UserServicesRedirectUrlResolver();
request = new MockHttpServletRequest();
request.setContextPath( "cms-server" );
request.setRequestURI( "/cms-server-idea/site/0/servlet/com.enonic.vertical.userservices.UserHandlerServlet" );
}
public void testResolveRedirectToPageIllegalRedirect()
{
String redirect = "illegalRedirect";
try
{
userServicesRedirectUrlResolver.resolveRedirectUrlToPage( request, redirect, null );
fail( "Expected IllegalRedirectException" );
}
catch ( Exception e )
{
assertTrue( e instanceof IllegalRedirectException );
assertEquals( "Requested redirect Url: " + redirect, e.getMessage() );
}
}
public void testResolveRedirectToPageWithFullUrl()
{
String redirect = "http://www.mycompany.com/page?id=0";
String url = userServicesRedirectUrlResolver.resolveRedirectUrlToPage( request, redirect, null );
assertEquals( "http://www.mycompany.com/page?id=0", url );
}
public void testResolveRedirectToPageWithNoRedirectAndNoReferer()
{
String url = userServicesRedirectUrlResolver.resolveRedirectUrlToPage( request, null, null );
assertEquals( "/", url );
}
public void testResolveRedirectToPageWithNoRedirectAndEmptyReferer()
{
request.addHeader( "referer", "" );
String url = userServicesRedirectUrlResolver.resolveRedirectUrlToPage( request, null, null );
assertEquals( "/", url );
}
public void testResolveRedirectToPageWithReferer1()
{
request.addHeader( "referer", "http://www.mycompany.com/page?id=0" );
String url = userServicesRedirectUrlResolver.resolveRedirectUrlToPage( request, null, null );
assertEquals( "http://www.mycompany.com/page?id=0", url );
}
public void testResolveRedirectToPageWithReferer2()
{
request.addHeader( "referer", "ftp://www.mycompany.com/download?file=text.txt" );
String url = userServicesRedirectUrlResolver.resolveRedirectUrlToPage( request, null, null );
assertEquals( "ftp://www.mycompany.com/download?file=text.txt", url );
}
public void testResolveRedirectToPageWithRefererAndRedirect()
{
request.addHeader( "referer", "ftp://www.mycompany.com/download?file=text.txt" );
String redirect = "https://www.mycompany.com/";
String url = userServicesRedirectUrlResolver.resolveRedirectUrlToPage( request, redirect, null );
assertEquals( "https://www.mycompany.com/", url );
}
}