/* * Copyright 2009 Google Inc. * * 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 com.google.jstestdriver; import junit.framework.TestCase; /** * @author jeremiele@google.com (Jeremie Lenfant-Engelmann) */ public class UserAgentParserTest extends TestCase { private static final String CHROME_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) " + "AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.31 Safari/530.5"; private static final String FIREFOX_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; " + "rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)"; private static final String SAFARI_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) " + "AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.29"; private static final String IE_WINDOWS = "Mozilla/4.0 " + "(compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; " + ".NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"; private static final String OPERA_OLD_WINDOWS = "Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1"; private static final String OPERA_NEW_WINDOWS = "Opera/9.80 (Windows NT 6.0; U; en) " + "Presto/2.8.99 Version/11.10"; private static final String FIREFOX_LINUX = "Mozilla/5.0 " + "(X11; U; Linux x86_64; en-US; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) " + "Firefox/3.0.10"; private static final String OPERA_OLD_LINUX = "Opera/9.64 (X11; Linux x86_64; U; pl) Presto/2.1.1"; private static final String OPERA_NEW_LINUX = "Opera/9.80 (X11; Linux x86_64; U; Opera Next; " + "en) Presto/2.8.131 Version/11.50"; private static final String FIREFOX_MACOS = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; " + "en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10"; private static final String SAFARI_MACOS = "Mozilla/5.0 " + "(Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/528.16 (KHTML, like Gecko) " + "Version/4.0 Safari/528.16"; private static final String OPERA_OLD_MACOS = "Opera/9.61 (Macintosh; Intel Mac OS X; U; de) " + "Presto/2.1.1"; private static final String OPERA_NEW_MACOS = "Opera/9.80 (Macintosh; Intel Mac OS X; U; nl) " + "Presto/2.6.30 Version/10.61"; private static final String SAFARI_IPHONE = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like " + "Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) " + "Version/4.0 Mobile/7D11 Safari/528.16"; private static final String SAFARI_ANDROID = "Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; " + "Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) " + "Version/4.0 Mobile Safari/533.1"; public void testGetBrowserName() throws Exception { UserAgentParser parser = null; parser = new UserAgentParser(); parser.parse(CHROME_WINDOWS); assertEquals("Chrome", parser.getName()); assertEquals("Windows", parser.getOs()); parser = new UserAgentParser(); parser.parse(FIREFOX_WINDOWS); assertEquals("Firefox", parser.getName()); assertEquals("Windows", parser.getOs()); parser = new UserAgentParser(); parser.parse(FIREFOX_LINUX); assertEquals("Firefox", parser.getName()); assertEquals("Linux", parser.getOs()); parser = new UserAgentParser(); parser.parse(FIREFOX_MACOS); assertEquals("Firefox", parser.getName()); assertEquals("Mac OS", parser.getOs()); parser = new UserAgentParser(); parser.parse(SAFARI_WINDOWS); assertEquals("Safari", parser.getName()); assertEquals("Windows", parser.getOs()); parser = new UserAgentParser(); parser.parse(SAFARI_MACOS); assertEquals("Safari", parser.getName()); assertEquals("Mac OS", parser.getOs()); parser = new UserAgentParser(); parser.parse(IE_WINDOWS); assertEquals("Microsoft Internet Explorer", parser.getName()); assertEquals("Windows", parser.getOs()); parser = new UserAgentParser(); parser.parse(OPERA_OLD_WINDOWS); assertEquals("Opera", parser.getName()); assertEquals("9.64", parser.getVersion()); assertEquals("Windows", parser.getOs()); parser = new UserAgentParser(); parser.parse(OPERA_NEW_WINDOWS); assertEquals("Opera", parser.getName()); assertEquals("11.10", parser.getVersion()); assertEquals("Windows", parser.getOs()); parser = new UserAgentParser(); parser.parse(OPERA_OLD_LINUX); assertEquals("Opera", parser.getName()); assertEquals("9.64", parser.getVersion()); assertEquals("Linux", parser.getOs()); parser = new UserAgentParser(); parser.parse(OPERA_NEW_LINUX); assertEquals("Opera", parser.getName()); assertEquals("11.50", parser.getVersion()); assertEquals("Linux", parser.getOs()); parser = new UserAgentParser(); parser.parse(OPERA_OLD_MACOS); assertEquals("Opera", parser.getName()); assertEquals("9.61", parser.getVersion()); assertEquals("Mac OS", parser.getOs()); parser = new UserAgentParser(); parser.parse(OPERA_NEW_MACOS); assertEquals("Opera", parser.getName()); assertEquals("10.61", parser.getVersion()); assertEquals("Mac OS", parser.getOs()); parser = new UserAgentParser(); parser.parse(SAFARI_IPHONE); assertEquals("Safari", parser.getName()); assertEquals("iPhone OS", parser.getOs()); parser = new UserAgentParser(); parser.parse(SAFARI_ANDROID); assertEquals("Safari", parser.getName()); assertEquals("Android", parser.getOs()); parser = new UserAgentParser(); parser.parse("Some weird unrecognized user-agent"); assertEquals("Some weird unrecognized user-agent", parser.getName()); } }