/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
// www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition 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 General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////
package org.projectforge.web;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class UserAgentDetectionTest
{
// Test user agent strings.
private String[] strs = {
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; de-de) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", // 0
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", // 1
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13", // 2
"Mozilla/5.0 (iPod; U; CPU iPhone OS 4_2_1 like Mac OS X; de-de) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5", // 3
"Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; es-es) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5", // 4
"Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.7.62 Version/11.01", // 5
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.642.2 Safari/534", // 6
"Mozilla/5.0 (compatible; Konqueror/4.3) KHTML/4.3.1 (like Gecko) SUSE", // 7
"Mozilla/5.0 (compatible; Konqueror/4.4; Linux) KHTML/4.4.5 (like Gecko) Kubuntu", // 8
"Mozilla/5.0 (Windows NT 6.1; rv:2.0b4) Gecko/20100818 Firefox/4.0b4 (.NET CLR 3.5.30729) QQDownload/1.7" // 9
};
@Test
public void testOSDetection()
{
assertEquals(UserAgentOS.UNKNOWN, UserAgentOS.getUserAgentOS(null));
assertEquals(UserAgentOS.MAC, UserAgentOS.getUserAgentOS(strs[0]));
assertEquals(UserAgentOS.WINDOWS, UserAgentOS.getUserAgentOS(strs[1]));
assertEquals(UserAgentOS.WINDOWS, UserAgentOS.getUserAgentOS(strs[2]));
assertEquals(UserAgentOS.MAC, UserAgentOS.getUserAgentOS(strs[3]));
assertEquals(UserAgentOS.MAC, UserAgentOS.getUserAgentOS(strs[4]));
assertEquals(UserAgentOS.WINDOWS, UserAgentOS.getUserAgentOS(strs[5]));
assertEquals(UserAgentOS.WINDOWS, UserAgentOS.getUserAgentOS(strs[6]));
assertEquals(UserAgentOS.LINUX, UserAgentOS.getUserAgentOS(strs[7]));
assertEquals(UserAgentOS.LINUX, UserAgentOS.getUserAgentOS(strs[8]));
assertEquals(UserAgentOS.WINDOWS, UserAgentOS.getUserAgentOS(strs[9]));
}
@Test
public void testDeviceDetection()
{
assertEquals(UserAgentDevice.UNKNOWN, UserAgentDevice.getUserAgentDevice(null));
assertEquals(UserAgentDevice.UNKNOWN, UserAgentDevice.getUserAgentDevice(strs[0]));
assertEquals(UserAgentDevice.UNKNOWN, UserAgentDevice.getUserAgentDevice(strs[1]));
assertEquals(UserAgentDevice.UNKNOWN, UserAgentDevice.getUserAgentDevice(strs[2]));
assertEquals(UserAgentDevice.IPHONE, UserAgentDevice.getUserAgentDevice(strs[3]));
assertEquals(UserAgentDevice.IPOD, UserAgentDevice.getUserAgentDevice(strs[4]));
assertEquals(UserAgentDevice.UNKNOWN, UserAgentDevice.getUserAgentDevice(strs[5]));
assertEquals(UserAgentDevice.UNKNOWN, UserAgentDevice.getUserAgentDevice(strs[6]));
assertEquals(UserAgentDevice.UNKNOWN, UserAgentDevice.getUserAgentDevice(strs[7]));
assertEquals(UserAgentDevice.UNKNOWN, UserAgentDevice.getUserAgentDevice(strs[8]));
assertEquals(UserAgentDevice.UNKNOWN, UserAgentDevice.getUserAgentDevice(strs[9]));
}
@Test
public void testBrowserDetection()
{
detectAndAssert(null, UserAgentBrowser.UNKNOWN, null);
detectAndAssert(strs[0], UserAgentBrowser.SAFARI, "5.0.3");
detectAndAssert(strs[1], UserAgentBrowser.IE, "6.0");
detectAndAssert(strs[2], UserAgentBrowser.FIREFOX, "3.6.13");
detectAndAssert(strs[3], UserAgentBrowser.SAFARI, "5.0.2");
detectAndAssert(strs[4], UserAgentBrowser.SAFARI, "5.0.2");
detectAndAssert(strs[5], UserAgentBrowser.OPERA, "9.80");
detectAndAssert(strs[6], UserAgentBrowser.CHROME, "10.0.642.2");
detectAndAssert(strs[7], UserAgentBrowser.KONQUEROR, "4.3");
detectAndAssert(strs[8], UserAgentBrowser.KONQUEROR, "4.4");
detectAndAssert(strs[9], UserAgentBrowser.FIREFOX, "4.0b4");
}
private void detectAndAssert(final String userAgentString, final UserAgentBrowser expectedBrowser, final String expectedVersion)
{
final UserAgentDetection detection = UserAgentDetection.browserDetect(userAgentString);
assertEquals(expectedBrowser, detection.getUserAgentBrowser());
assertEquals(expectedVersion, detection.getUserAgentBrowserVersion());
}
}