Author: mgrigorov
Date: Tue May 17 07:16:27 2011
New Revision: 1104031

URL: http://svn.apache.org/viewvc?rev=1104031&view=rev
Log:
WICKET-3713 org/apache/wicket/protocol/http/request/UserAgent matches method is 
not correct

Fix UserAgent#matches(String) to check all detection groups


Added:
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/request/UserAgentTest.java
Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/UserAgent.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/UserAgent.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/UserAgent.java?rev=1104031&r1=1104030&r2=1104031&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/UserAgent.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/UserAgent.java
 Tue May 17 07:16:27 2011
@@ -96,15 +96,19 @@ enum UserAgent {
 
                for (List<String> detectionGroup : detectionStrings)
                {
+                       boolean groupPassed = true;
                        for (String detectionString : detectionGroup)
                        {
                                if (!userAgent.contains(detectionString))
                                {
-                                       return false;
+                                       groupPassed = false;
+                                       break;
                                }
                        }
-
-                       return true;
+                       if (groupPassed)
+                       {
+                               return true;
+                       }
                }
 
                return false;

Added: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/request/UserAgentTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/request/UserAgentTest.java?rev=1104031&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/request/UserAgentTest.java
 (added)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/request/UserAgentTest.java
 Tue May 17 07:16:27 2011
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.wicket.protocol.http.request;
+
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+
+import org.junit.Test;
+
+/**
+ * Tests for {@link UserAgent}
+ */
+public class UserAgentTest
+{
+
+       /**
+        * Tests for {@link UserAgent#matches(String)} based on the blacklisted 
entries
+        */
+       @Test
+       public void notAllowedList()
+       {
+               // check single blacklisted entry - Opera
+               assertFalse(UserAgent.INTERNET_EXPLORER.matches("Something that 
contains Opera"));
+
+               // check comma separated list of entries - Konqueror,Opera
+               assertFalse(UserAgent.MOZILLA.matches("Something that contains 
Konqueror"));
+               assertFalse(UserAgent.MOZILLA.matches("Something that contains 
Opera"));
+       }
+
+       /**
+        * Tests for {@link UserAgent#matches(String)} based on the detection 
groups
+        */
+       @Test
+       public void detectionGroups()
+       {
+               // no blacklisted entries, but not full match in a detection 
group
+               assertFalse(UserAgent.INTERNET_EXPLORER.matches("Mozilla 
MSIE"));
+
+               // full match in detection group 1
+               assertTrue(UserAgent.INTERNET_EXPLORER.matches("Mozilla MSIE 
Trident"));
+
+               // full match in detection group 2
+               assertTrue(UserAgent.INTERNET_EXPLORER.matches("Mozilla MSIE 
Mac_PowerPC"));
+       }
+}


Reply via email to