/******************************************************************************
* JBoss, a division of Red Hat *
* Copyright 2011, Red Hat Middleware, LLC, and individual *
* contributors as indicated by the @authors tag. See the *
* copyright.txt in the distribution for a full listing of *
* individual contributors. *
* *
* This is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation; either version 2.1 of *
* the License, or (at your option) any later version. *
* *
* This software is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this software; if not, write to the Free *
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
******************************************************************************/
package org.gatein.web.redirect;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
import org.exoplatform.portal.config.model.PortalRedirect;
import org.gatein.web.redirect.api.RedirectKey;
import org.gatein.web.redirect.api.RedirectType;
/**
* @author <a href="mailto:mwringe@redhat.com">Matt Wringe</a>
* @version $Revision$
*/
public class TestRedirector extends TestCase {
/**
* Configuration Elements - String userAgent - Map<String, String> deviceProperties (propertyName, propertyValue) -
* List<PortalRedirect> - String redirectSite name - String redirectName - Boolean enabled - RedirectMappings (not used in
* the Redirector) - List<RedirectCondition> - String Name - UserAgentConditions - List<String> contains - List<String>
* does-not-contain - List<PropertyCondition> - propertyName - greaterThan - lessThan - equals - matches
*/
/**
* What to test - ordering of the redirects
*
* - null and empty value situations (to make sure no NPE or other errors). The service has been designed (hopefully) to not
* fail or throw an exception in these cases, so needs to be a bit tricky in how we test it.
*
* - enabled and disabled redirects work as expected
*
* - RedirectConditions - user agent (contains/does-not-contain) - propertyconditions
*/
/**
* Test Extras - test matrix of all (or almost all) possible combinations - test performance and deeper integration (ie use
* mock objects and make sure that if disabled, no other methods are ever called)
*/
String userAgentA = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/500.0 (KHTML, like Gecko) TestBrowser/1.2.3 Safari/500.0";
String userAgentB = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/500.0 (KHTML, like Gecko) TestBrowser/1.2.3 Safari/500."; // One
// character
// difference
public void testEnable() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleRedirectAcceptAllUAS();
checkIsRedirect(userAgentA, null, portalRedirect);
portalRedirect.setEnabled(false);
checkIsNoRedirect(userAgentA, null, portalRedirect);
}
public void testSimpleConfigurationAcceptAllUAS() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleRedirectAcceptAllUAS();
checkAcceptAllUAS(portalRedirect);
}
public void testSimpleConfigurationRejectAllUAS() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleRedirectAcceptNoUASA();
checkRejectAllUAS(portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleRedirectAcceptNoUASB();
checkRejectAllUAS(portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleRedirectAcceptNoUASC();
checkRejectAllUAS(portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleRedirectAcceptNoUASD();
checkRejectAllUAS(portalRedirect);
}
public void testSimpleConfigurationRejectTestBrowserUAS() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleRedirectRejectTestBrowserUAS();
checkRejectUserAgent(userAgentA, portalRedirect);
checkRejectUserAgent(userAgentB, portalRedirect);
checkAcceptUserAgent("", portalRedirect);
checkAcceptUserAgent(null, portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleRedirectRejectTestBrowserExactUAS();
checkRejectUserAgent(userAgentA, portalRedirect);
checkAcceptUserAgent(userAgentB, portalRedirect);
checkAcceptUserAgent("", portalRedirect);
checkAcceptUserAgent(null, portalRedirect);
}
public void testSimpleConfigurationAcceptTestBrowserUAS() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleRedirectAcceptTestBrowserUAS();
checkAcceptUserAgent(userAgentA, portalRedirect);
checkAcceptUserAgent(userAgentB, portalRedirect);
checkRejectUserAgent("", portalRedirect);
checkRejectUserAgent(null, portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleRedirectAcceptTestBrowserExactUAS();
checkAcceptUserAgent(userAgentA, portalRedirect);
checkRejectUserAgent(userAgentB, portalRedirect);
checkRejectUserAgent("", portalRedirect);
checkRejectUserAgent(null, portalRedirect);
}
public void testNullPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleNullDeviceRedirect();
checkAcceptDeviceProperty(null, portalRedirect);
checkAcceptDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkAcceptDeviceProperty(getSimplePropertyMap(), portalRedirect);
checkAcceptDeviceProperty(getPropertyMap(), portalRedirect);
}
public void testEmptyPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect(null, null, null, null, null); // note:
// this
// still
// creates
// a
// device
// property
// but
// with
// empty
// values
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkRejectDeviceProperty(getSimplePropertyMap(), portalRedirect);
// GetPropertyMap() contains an entry with a null key, so the property map does contain the required device property
Map<String, String> propertyMap = getPropertyMap();
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.remove(null); // if we remove the entry with the null key, it should now fail
checkRejectDeviceProperty(propertyMap, portalRedirect);
}
public void testNullPropertyPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("bar", null, null, null, null);
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkRejectDeviceProperty(getSimplePropertyMap(), portalRedirect);
checkAcceptDeviceProperty(getPropertyMap(), portalRedirect); // Note: getPropertyMap contains an entry 'bar'
}
public void testGTPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("ABC", null, null, 10F, null);
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkRejectDeviceProperty(getSimplePropertyMap(), portalRedirect);
Map<String, String> propertyMap = getPropertyMap();
checkAcceptDeviceProperty(propertyMap, portalRedirect); // Note: getPropertyMap contains an entry 'ABC' with value 123
propertyMap.remove("ABC");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "-1");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "-1.2");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "0.0");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "1.5");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "10");
checkRejectDeviceProperty(propertyMap, portalRedirect); // should still fail since >10 not >= 10
propertyMap.put("ABC", "10.1");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "XYZ");
checkRejectDeviceProperty(propertyMap, portalRedirect);
}
public void testLTPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("ABC", null, null, null, 123.5F);
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkRejectDeviceProperty(getSimplePropertyMap(), portalRedirect);
Map<String, String> propertyMap = getPropertyMap();
checkAcceptDeviceProperty(propertyMap, portalRedirect); // Note: getPropertyMap contains an entry 'ABC' with value 123
propertyMap.remove("ABC");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "124");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "123.8");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "0.0");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "-10.5");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "123.5");
checkRejectDeviceProperty(propertyMap, portalRedirect); // should still fail since <123.5 not <= 123.5
propertyMap.put("ABC", "123.49999");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("ABC", "XYZ");
checkRejectDeviceProperty(propertyMap, portalRedirect);
}
public void testEqualsPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("foo", "bar", null, null, null);
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkAcceptDeviceProperty(getSimplePropertyMap(), portalRedirect); // Note: getSimplePropertyMap contains an entry 'foo'
// with value 'bar'
Map<String, String> propertyMap = getPropertyMap(); // Note: getPropertyMap contains an entry 'foo' with value 'bar'
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.remove("foo");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "xyz");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", " bar ");
checkRejectDeviceProperty(propertyMap, portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("foo", "", null, null, null);
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
}
public void testMatchesPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("foo", null, "bar", null, null);
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkAcceptDeviceProperty(getSimplePropertyMap(), portalRedirect); // Note: getPropertyMap contains an entry 'foo' with
// value 'bar'
Map<String, String> propertyMap = getPropertyMap();
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "BAR");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "basdfasdrf as df asdf as dfasdf");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "asdf asd fa sdf a sdfbarasdf as df");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "asdf asd fa sdf a sdfBARasdf as df");
checkRejectDeviceProperty(propertyMap, portalRedirect);
}
public void testMatchesIgnoreCasePropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("foo", null, "(?i)bar", null, null);
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkAcceptDeviceProperty(getSimplePropertyMap(), portalRedirect); // Note: getPropertyMap contains an entry 'foo' with
// value 'bar'
Map<String, String> propertyMap = getPropertyMap();
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "BAR");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "basdfasdrf as df asdf as dfasdf");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "asdf asd fa sdf a sdfbarasdf as df");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "asdf asd fa sdf a sdfBARasdf as df");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
}
public void testMatchesORPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("foo", null, "(?i)b(ar|az)", null,
null);
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkAcceptDeviceProperty(getSimplePropertyMap(), portalRedirect); // Note: getPropertyMap contains an entry 'foo' with
// value 'bar'
Map<String, String> propertyMap = getPropertyMap();
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "BAR");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "baz");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "BAZ");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "BAT");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "bat");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "asdf as dfa sdf bazasd sadf");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("foo", null, "((?i)bar)|BAZ", null, null);
propertyMap.put("foo", "baz");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "Baz");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "BAZ");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
}
public void testExactPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("foo", null, "^bar$", null, null);
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkAcceptDeviceProperty(getSimplePropertyMap(), portalRedirect); // Note: getPropertyMap contains an entry 'foo' with
// value 'bar'
Map<String, String> propertyMap = getPropertyMap();
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "bar.");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", " bar ");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", ".bar");
checkRejectDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "barbarbar");
checkRejectDeviceProperty(propertyMap, portalRedirect);
}
public void testAcceptAllPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("foo", null, ".*", null, null);
checkNeedInfoDeviceProperty(null, portalRedirect);
checkRejectDeviceProperty(getEmptyPropertyMap(), portalRedirect);
checkAcceptDeviceProperty(getSimplePropertyMap(), portalRedirect); // Note: getPropertyMap contains an entry 'foo' with
// value 'bar'
Map<String, String> propertyMap = getPropertyMap();
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", null);
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "asdf asd fa sdf asdf");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "123");
checkAcceptDeviceProperty(propertyMap, portalRedirect);
}
public void testSimpleredirectComplexPropertyRedirect() {
PortalRedirect portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("foo", "bar", ".*", null, null);
Map<String, String> propertyMap = getPropertyMap();
checkAcceptDeviceProperty(propertyMap, portalRedirect);
propertyMap.put("foo", "Bar");
checkRejectDeviceProperty(propertyMap, portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("ABC", "123", "123", 100.23F, 150.43F);
checkAcceptDeviceProperty(propertyMap, portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("ABC", "123", ".*", 100.23F, 150.43F);
checkAcceptDeviceProperty(propertyMap, portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("ABC", "123.0", ".*", 100.23F, 150.43F);
checkRejectDeviceProperty(propertyMap, portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("ABC", "123", ".*", 100.23F, -150.43F);
checkRejectDeviceProperty(propertyMap, portalRedirect);
portalRedirect = PortalRedirectsFactory.createSimpleDeviceRedirect("ABC", "123", "123.0", 100.23F, 150.34F);
checkRejectDeviceProperty(propertyMap, portalRedirect);
}
public void testComplextRedirect() // Complex -> more than one redirect site. We need to checkthe order
{
PortalRedirect portalRedirectFoo = PortalRedirectsFactory.createSimpleContainsRedirect("redirectFoo", "foo");
PortalRedirect portalRedirectBar = PortalRedirectsFactory.createSimpleContainsRedirect("redirectBar", "bar");
PortalRedirect portalRedirectBaz = PortalRedirectsFactory.createSimpleContainsRedirect("redirectBaz", "baz");
checkIsRedirect("redirectFoo", "asdf asd fasd foo asdf aafsf", null, portalRedirectFoo, portalRedirectBar,
portalRedirectBaz);
checkIsRedirect("redirectBar", "asdf asd fasd bar asdf aafsf", null, portalRedirectFoo, portalRedirectBar,
portalRedirectBaz);
checkIsRedirect("redirectBaz", "asdf asd fasd baz asdf aafsf", null, portalRedirectFoo, portalRedirectBar,
portalRedirectBaz);
checkIsRedirect("redirectFoo", "asdf asd fasd foo bar baz aafsf", null, portalRedirectFoo, portalRedirectBar,
portalRedirectBaz);
checkIsRedirect("redirectBar", "asdf asd fasd foo bar baz aafsf", null, portalRedirectBar, portalRedirectBaz,
portalRedirectFoo);
checkIsRedirect("redirectBaz", "asdf asd fasd foo bar baz aafsf", null, portalRedirectBaz, portalRedirectFoo,
portalRedirectBar);
checkIsRedirect("redirectBaz", "asdf asd fasd foo baz aafsf", null, portalRedirectBar, portalRedirectBaz,
portalRedirectFoo);
}
/** ========================================================================================== **/
public void checkAcceptUserAgent(String userAgent, PortalRedirect portalRedirect) {
checkIsRedirect(userAgent, null, portalRedirect);
checkIsRedirect(userAgent, getEmptyPropertyMap(), portalRedirect);
checkIsRedirect(userAgent, getSimplePropertyMap(), portalRedirect);
checkIsRedirect(userAgent, getPropertyMap(), portalRedirect);
}
public void checkAcceptDeviceProperty(Map<String, String> deviceProperties, PortalRedirect portalRedirect) {
checkIsRedirect(userAgentA, deviceProperties, portalRedirect);
checkIsRedirect(userAgentB, deviceProperties, portalRedirect);
checkIsRedirect("", deviceProperties, portalRedirect);
checkIsRedirect(null, deviceProperties, portalRedirect);
}
public void checkRejectDeviceProperty(Map<String, String> deviceProperties, PortalRedirect portalRedirect) {
checkIsNoRedirect(userAgentA, deviceProperties, portalRedirect);
checkIsNoRedirect(userAgentB, deviceProperties, portalRedirect);
checkIsNoRedirect("", deviceProperties, portalRedirect);
checkIsNoRedirect(null, deviceProperties, portalRedirect);
}
public void checkNeedInfoDeviceProperty(Map<String, String> deviceProperties, PortalRedirect portalRedirect) {
checkIsNeedDeviceInfo(userAgentA, deviceProperties, portalRedirect);
checkIsNeedDeviceInfo(userAgentB, deviceProperties, portalRedirect);
checkIsNeedDeviceInfo("", deviceProperties, portalRedirect);
checkIsNeedDeviceInfo(null, deviceProperties, portalRedirect);
}
public void checkRejectUserAgent(String userAgent, PortalRedirect portalRedirect) {
checkIsNoRedirect(userAgent, null, portalRedirect);
checkIsNoRedirect(userAgent, getEmptyPropertyMap(), portalRedirect);
checkIsNoRedirect(userAgent, getSimplePropertyMap(), portalRedirect);
checkIsNoRedirect(userAgent, getPropertyMap(), portalRedirect);
}
public void checkRejectAllUAS(PortalRedirect portalRedirect) {
checkRejectUserAgent(userAgentA, portalRedirect);
checkRejectUserAgent("", portalRedirect);
checkRejectUserAgent(null, portalRedirect);
}
public void checkAcceptAllUAS(PortalRedirect portalRedirect) {
checkAcceptUserAgent(userAgentA, portalRedirect);
checkAcceptUserAgent("", portalRedirect);
checkAcceptUserAgent(null, portalRedirect);
}
public void checkIsNoRedirect(String userAgent, Map<String, String> deviceProperties, PortalRedirect... portalRedirects) {
RedirectKey redirectKey = getRedirectKey(userAgent, deviceProperties, portalRedirects);
assertEquals(RedirectType.NOREDIRECT, redirectKey.getType());
assertEquals(null, redirectKey.getRedirect());
}
public void checkIsRedirect(String userAgent, Map<String, String> deviceProperties, PortalRedirect... portalRedirects) {
checkIsRedirect("redirectSite", userAgent, deviceProperties, portalRedirects);
}
public void checkIsRedirect(String redirectSiteName, String userAgent, Map<String, String> deviceProperties,
PortalRedirect... portalRedirects) {
RedirectKey redirectKey = getRedirectKey(userAgent, deviceProperties, portalRedirects);
assertEquals(RedirectType.REDIRECT, redirectKey.getType());
assertEquals(redirectSiteName, redirectKey.getRedirect());
}
public void checkIsNeedDeviceInfo(String userAgent, Map<String, String> deviceProperties, PortalRedirect... portalRedirects) {
RedirectKey redirectKey = getRedirectKey(userAgent, deviceProperties, portalRedirects);
assertEquals(RedirectType.NEEDDEVICEINFO, redirectKey.getType());
assertEquals(null, redirectKey.getRedirect());
}
public void checkNeedsDeviceProperties(String userAgent, Map<String, String> deviceProperties,
PortalRedirect... portalRedirects) {
RedirectKey redirectKey = getRedirectKey(userAgent, deviceProperties, portalRedirects);
assertEquals(RedirectType.NEEDDEVICEINFO, redirectKey.getType());
assertEquals(null, redirectKey.getRedirect());
}
public RedirectKey getRedirectKey(String userAgent, Map<String, String> deviceProperties, PortalRedirect... portalRedirects) {
Redirector redirector = new Redirector();
ArrayList<PortalRedirect> portalRedirectsList = null;
if (portalRedirects != null) {
portalRedirectsList = new ArrayList<PortalRedirect>();
for (PortalRedirect portalRedirect : portalRedirects) {
portalRedirectsList.add(portalRedirect);
}
}
return redirector.getRedirectSite(portalRedirectsList, userAgent, deviceProperties);
}
public Map<String, String> getEmptyPropertyMap() {
Map<String, String> propertyMap = new HashMap<String, String>();
return propertyMap;
}
public Map<String, String> getSimplePropertyMap() {
Map<String, String> propertyMap = new HashMap<String, String>();
propertyMap.put("foo", "bar");
return propertyMap;
}
public Map<String, String> getPropertyMap() {
Map<String, String> propertyMap = new HashMap<String, String>();
propertyMap.put("hello", "world");
propertyMap.put(null, null);
propertyMap.put("nullValue", null);
propertyMap.put("bar", "baz");
propertyMap.put("foo", "bar");
propertyMap.put("ABC", "123");
return propertyMap;
}
}