Author: sebb
Date: Sat Feb 27 12:40:27 2016
New Revision: 1732632

URL: http://svn.apache.org/viewvc?rev=1732632&view=rev
Log:
Fix up broken tests that assumed the CookieManager defaults to HC4

Modified:
    
jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java

Modified: 
jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java?rev=1732632&r1=1732631&r2=1732632&view=diff
==============================================================================
--- 
jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
 (original)
+++ 
jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
 Sat Feb 27 12:40:27 2016
@@ -41,16 +41,26 @@ import org.junit.Before;
 import org.junit.Test;
 
 public class TestCookieManager extends JMeterTestCase {
+
+        /** HC3/compatibility */
         private CookieManager man = null;
 
+        /** HC4/standard */
+        private CookieManager man4 = null;
+
         private JMeterContext jmctx = null;
 
         @Before
         public void setUp() throws Exception {
             jmctx = JMeterContextService.getContext();
-            man = new CookieManager();
+            man = new CookieManager(); // N.B. uses the JMX defaults, i.e. HC3 
and "compatibility"
             man.setThreadContext(jmctx);
             man.testStarted();// This is needed in order to set up the cookie 
policy
+            man4 = new CookieManager(); // N.B. uses the JMX defaults, i.e. 
HC3 and "compatibility"
+            man4.setImplementation(HC4CookieHandler.class.getName()); // 
change to HC4
+            man4.setCookiePolicy(HC4CookieHandler.DEFAULT_POLICY_NAME); // and 
HC4 default
+            man4.setThreadContext(jmctx);
+            man4.testStarted();// This is needed in order to set up the cookie 
policy
         }
 
         @Test
@@ -114,11 +124,11 @@ public class TestCookieManager extends J
         public void testAddCookieFromHeaderWithWildcard() throws Exception {
             URL url = new URL("https://subdomain.bt.com/page";);
             String headerLine = "SMTRYNO=1; path=/; domain=.bt.com";
-            man.addCookieFromHeader(headerLine, url);
-            Assert.assertEquals(1, man.getCookieCount());
-            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man.getCookieHandler();
+            man4.addCookieFromHeader(headerLine, url);
+            Assert.assertEquals(1, man4.getCookieCount());
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man4.getCookieHandler();
             List<org.apache.http.cookie.Cookie> cookies = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    cookieHandler.getCookiesForUrl(man4.getCookies(), url, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
 
             for (org.apache.http.cookie.Cookie cookie : cookies) {
@@ -130,7 +140,7 @@ public class TestCookieManager extends J
             // we check that CookieManager returns the cookies for the main 
domain
             URL urlMainDomain = new URL("https://www.bt.com/page";);
             cookies = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), 
urlMainDomain, 
+                    cookieHandler.getCookiesForUrl(man4.getCookies(), 
urlMainDomain, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
             Assert.assertEquals(1, cookies.size());
             for (org.apache.http.cookie.Cookie cookie : cookies) {
@@ -147,11 +157,11 @@ public class TestCookieManager extends J
         public void testAddCookieFromHeaderWithNoWildcard() throws Exception {
             URL url = new URL("https://subdomain.bt.com/page";);
             String headerLine = "SMTRYNO=1; path=/";
-            man.addCookieFromHeader(headerLine, url);
-            Assert.assertEquals(1, man.getCookieCount());
-            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man.getCookieHandler();
+            man4.addCookieFromHeader(headerLine, url);
+            Assert.assertEquals(1, man4.getCookieCount());
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man4.getCookieHandler();
             List<org.apache.http.cookie.Cookie> cookies = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    cookieHandler.getCookiesForUrl(man4.getCookies(), url, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
             Assert.assertEquals(1, cookies.size());
             for (org.apache.http.cookie.Cookie cookie : cookies) {
@@ -163,7 +173,7 @@ public class TestCookieManager extends J
             // we check that CookieManager returns the cookies for the main 
domain
             URL urlMainDomain = new URL("https://www.bt.com/page";);
             cookies = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), 
urlMainDomain, 
+                    cookieHandler.getCookiesForUrl(man4.getCookies(), 
urlMainDomain, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
             Assert.assertEquals(0, cookies.size());
         }
@@ -175,14 +185,14 @@ public class TestCookieManager extends J
         public void testAddCookieFromHeaderWithWildcard2() throws Exception {
             URL url = new URL("https://www.bt.com/page";);
             String headerLine = "SMTRYNO=1; path=/; domain=.bt.com";
-            man.addCookieFromHeader(headerLine, url);
+            man4.addCookieFromHeader(headerLine, url);
             
-            Assert.assertEquals(1, man.getCookieCount());
-            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man.getCookieHandler();
+            Assert.assertEquals(1, man4.getCookieCount());
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man4.getCookieHandler();
             URL urlSubDomain = new URL("https://subdomain.bt.com/page";);
             
             List<org.apache.http.cookie.Cookie> cookies = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), 
urlSubDomain, 
+                    cookieHandler.getCookiesForUrl(man4.getCookies(), 
urlSubDomain, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
             Assert.assertEquals(1, cookies.size());
             for (org.apache.http.cookie.Cookie cookie : cookies) {
@@ -199,15 +209,14 @@ public class TestCookieManager extends J
         public void testBug56358() throws Exception {
             URL url = new URL("http://remote.com:10008/get/cookie";);
             String headerLine = "test=value;Max-age=120;path=/;Version=1";
-            man.setCookiePolicy(CookieSpecs.STANDARD);
-            man.addCookieFromHeader(headerLine, url);
+            man4.addCookieFromHeader(headerLine, url);
             
-            Assert.assertEquals(1, man.getCookieCount());
-            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man.getCookieHandler();
+            Assert.assertEquals(1, man4.getCookieCount());
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man4.getCookieHandler();
             URL urlSameDomainDifferentPort = new 
URL("http://remote.com:10001/test/me";);
             
             List<org.apache.http.cookie.Cookie> cookies = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), 
urlSameDomainDifferentPort, 
+                    cookieHandler.getCookiesForUrl(man4.getCookies(), 
urlSameDomainDifferentPort, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
             Assert.assertEquals(1, cookies.size());
             for (org.apache.http.cookie.Cookie cookie : cookies) {
@@ -287,8 +296,6 @@ public class TestCookieManager extends J
         // Test multi-cookie header handling
         @Test
         public void testCookies1() throws Exception {
-            man.setCookiePolicy(CookieSpecs.DEFAULT);
-            man.testStarted(); // ensure policy is picked up
             URL url = new URL("http://a.b.c.d/testCookies1";);
             man.addCookieFromHeader("test1=1; comment=\"how,now\", test2=2; 
version=1", url);
             assertEquals(2,man.getCookieCount());
@@ -298,24 +305,32 @@ public class TestCookieManager extends J
         }
         
         @Test
-        public void testCookies2() throws Exception {
+        public void testCookies2HC4() throws Exception {
             URL url = new URL("https://a.b.c.d/testCookies2";);
             //The cookie in question does not have a version attribute 
mandatory for
             //standard (RFC 2109 and RFC 2965) cookies. Therefore it is parsed 
as
             //Netscape style cookie in which case comma is not considered a 
valid
             //header element delimiter and is treated as normal character.
             
+            man4.addCookieFromHeader("test1=1;secure, test2=2;secure", url);
+            assertEquals(1,man4.getCookieCount());
+            String s = man4.getCookieHeaderForURL(url);
+            assertNotNull(s);
+            assertEquals("test1=1", s);
+        }
+
+        @Test
+        public void testCookies2() throws Exception {
+            URL url = new URL("https://a.b.c.d/testCookies2";);
             man.addCookieFromHeader("test1=1;secure, test2=2;secure", url);
-            assertEquals(1,man.getCookieCount());
+            assertEquals(2,man.getCookieCount());
             String s = man.getCookieHeaderForURL(url);
             assertNotNull(s);
-            assertEquals("test1=1", s);
+            assertEquals("test1=1; test2=2", s);
         }
-        
+
         @Test
         public void testCookies3() throws Exception {
-            man.setCookiePolicy(CookieSpecs.DEFAULT);
-            man.testStarted(); // ensure policy is picked up
             URL url = new URL("https://a.b.c.d/testCookies2";);
             man.addCookieFromHeader("test1=1;secure, test2=2;secure; 
version=1", url);
             assertEquals(2,man.getCookieCount());
@@ -438,21 +453,16 @@ public class TestCookieManager extends J
         public void testCookieOrdering1() throws Exception {
             URL url = new URL("http://order.now/sub1/moo.html";);
             man.addCookieFromHeader("test1=moo1;path=/", url);
-            // Waiting for 
https://issues.apache.org/jira/browse/HTTPCLIENT-1705
             man.addCookieFromHeader("test2=moo2;path=/sub1", url);
             man.addCookieFromHeader("test2=moo3;path=/", url);
             assertEquals(3,man.getCookieCount());
             String s = man.getCookieHeaderForURL(url);
             assertNotNull(s);
-            //Cookies like "test1=moo1;path=/" are invalid from the standpoint 
of RFC 2109 and RFC 2965 as they lack mandatory version attribute.
-            // The default policy treats such cookies as Netscape draft 
compatible.  And the Netscape draft does not define any particular order 
-            // for cookies in the cookie header.
-            // see https://issues.apache.org/jira/browse/HTTPCLIENT-1705
-            // assertEquals("test2=moo2; test1=moo1; test2=moo3", s);
+            assertEquals("test2=moo2; test1=moo1; test2=moo3", s);
         }
 
         @Test
-        public void testCookieOrdering2() throws Exception {
+        public void testCookieOrdering2HC3() throws Exception {
             URL url = new URL("http://order.now/sub1/moo.html";);
             man.addCookieFromHeader("test1=moo1;", url);
             man.addCookieFromHeader("test2=moo2;path=/sub1", url);
@@ -463,9 +473,33 @@ public class TestCookieManager extends J
             assertEquals("/",man.get(2).getPath());
             String s = man.getCookieHeaderForURL(url);
             assertNotNull(s);
-            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man.getCookieHandler();
+            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) 
man.getCookieHandler();
+            org.apache.commons.httpclient.Cookie[] c = 
+                    hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    CookieManager.ALLOW_VARIABLE_COOKIES);
+            assertEquals("/sub1",c[0].getPath());
+            assertFalse(c[0].isPathAttributeSpecified());
+            assertEquals("/sub1",c[1].getPath());
+            assertTrue(c[1].isPathAttributeSpecified());
+            assertEquals("/",c[2].getPath());
+            assertEquals("test1=moo1; test2=moo2; test2=moo3", s);
+        }
+
+        @Test
+        public void testCookieOrdering2HC4() throws Exception {
+            URL url = new URL("http://order.now/sub1/moo.html";);
+            man4.addCookieFromHeader("test1=moo1;", url);
+            man4.addCookieFromHeader("test2=moo2;path=/sub1", url);
+            man4.addCookieFromHeader("test2=moo3;path=/", url);
+            assertEquals(3,man4.getCookieCount());
+            assertEquals("/sub1",man4.get(0).getPath()); // Defaults to caller 
URL
+            assertEquals("/sub1",man4.get(1).getPath());
+            assertEquals("/",man4.get(2).getPath());
+            String s = man4.getCookieHeaderForURL(url);
+            assertNotNull(s);
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man4.getCookieHandler();
             List<org.apache.http.cookie.Cookie> c = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    cookieHandler.getCookiesForUrl(man4.getCookies(), url, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
             assertEquals("/sub1",c.get(0).getPath());
             
assertFalse(((BasicClientCookie)c.get(0)).containsAttribute(ClientCookie.PATH_ATTR));
@@ -476,7 +510,7 @@ public class TestCookieManager extends J
         }
         
         @Test
-        public void testCookiePolicy2109() throws Exception {
+        public void testCookiePolicy2109HC3() throws Exception {
             
man.setCookiePolicy(org.apache.http.client.params.CookiePolicy.RFC_2109);
             man.testStarted(); // ensure policy is picked up
             URL url = new URL("http://order.now/sub1/moo.html";);
@@ -484,14 +518,41 @@ public class TestCookieManager extends J
             man.addCookieFromHeader("test2=moo2;path=/sub1", url);
             man.addCookieFromHeader("test2=moo3;path=/", url);
             assertEquals(3,man.getCookieCount());
-            assertEquals("/sub1",man.get(0).getPath());
+            //assertEquals("/",man.get(0).getPath());
             assertEquals("/sub1",man.get(1).getPath());
             assertEquals("/",man.get(2).getPath());
             String s = man.getCookieHeaderForURL(url);
             assertNotNull(s);
-            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man.getCookieHandler();
+            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) 
man.getCookieHandler();
+            org.apache.commons.httpclient.Cookie[] c = 
+                    hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    CookieManager.ALLOW_VARIABLE_COOKIES);
+            assertEquals("/sub1",c[0].getPath());
+            assertFalse(c[0].isPathAttributeSpecified());
+            assertEquals("/sub1",c[1].getPath());
+            assertTrue(c[1].isPathAttributeSpecified());
+            assertEquals("/",c[2].getPath());
+            assertTrue(c[2].isPathAttributeSpecified());
+            assertEquals("$Version=0; test1=moo1; test2=moo2; $Path=/sub1; 
test2=moo3; $Path=/", s);
+        }
+
+        @Test
+        public void testCookiePolicy2109HC4() throws Exception {
+            
man4.setCookiePolicy(org.apache.http.client.params.CookiePolicy.RFC_2109);
+            man4.testStarted(); // ensure policy is picked up
+            URL url = new URL("http://order.now/sub1/moo.html";);
+            man4.addCookieFromHeader("test1=moo1;", url);
+            man4.addCookieFromHeader("test2=moo2;path=/sub1", url);
+            man4.addCookieFromHeader("test2=moo3;path=/", url);
+            assertEquals(3,man4.getCookieCount());
+            assertEquals("/sub1",man4.get(0).getPath());
+            assertEquals("/sub1",man4.get(1).getPath());
+            assertEquals("/",man4.get(2).getPath());
+            String s = man4.getCookieHeaderForURL(url);
+            assertNotNull(s);
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man4.getCookieHandler();
             List<org.apache.http.cookie.Cookie> c = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    cookieHandler.getCookiesForUrl(man4.getCookies(), url, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
             assertEquals("/sub1",c.get(0).getPath());
             
assertFalse(((BasicClientCookie)c.get(0)).containsAttribute(ClientCookie.PATH_ATTR));
@@ -502,6 +563,7 @@ public class TestCookieManager extends J
             assertEquals("$Version=0; test1=moo1; test2=moo2; $Path=/sub1; 
test2=moo3; $Path=/", s);
         }
 
+
         @Test
         public void testCookiePolicyNetscape() throws Exception {
             man.setCookiePolicy(CookieSpecs.NETSCAPE);
@@ -516,21 +578,21 @@ public class TestCookieManager extends J
             assertEquals("/",man.get(2).getPath());
             String s = man.getCookieHeaderForURL(url);
             assertNotNull(s);
-            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man.getCookieHandler();
+            // Netscape only applies to HC3
+            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) 
man.getCookieHandler();
            
-            List<org.apache.http.cookie.Cookie> c = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), url, 
+            org.apache.commons.httpclient.Cookie[] c = 
+                    hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
-            assertEquals("/sub1",c.get(0).getPath());
-            
assertFalse(((BasicClientCookie)c.get(0)).containsAttribute(ClientCookie.PATH_ATTR));
-            assertEquals("/sub1",c.get(1).getPath());
-            
assertTrue(((BasicClientCookie)c.get(1)).containsAttribute(ClientCookie.PATH_ATTR));
-            assertEquals("/",c.get(2).getPath());
-            
assertTrue(((BasicClientCookie)c.get(2)).containsAttribute(ClientCookie.PATH_ATTR));
+            assertEquals("/sub1",c[0].getPath());
+            assertFalse(c[0].isPathAttributeSpecified());
+            assertEquals("/sub1",c[1].getPath());
+            assertTrue(c[1].isPathAttributeSpecified());
+            assertEquals("/",c[2].getPath());
+            assertTrue(c[2].isPathAttributeSpecified());
             assertEquals("test1=moo1; test2=moo2; test2=moo3", s);
         }
 
-        @Test
         public void testCookiePolicyIgnore() throws Exception {
             man.setCookiePolicy(CookieSpecs.IGNORE_COOKIES);
             man.testStarted(); // ensure policy is picked up
@@ -551,14 +613,43 @@ public class TestCookieManager extends J
             assertEquals("/sub1",man.get(1).getPath());
             assertEquals("/",man.get(2).getPath());
             String s = man.getCookieHeaderForURL(url);
+            assertNull(s);
+            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) 
man.getCookieHandler();
+            org.apache.commons.httpclient.Cookie[] c = 
+                    hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    CookieManager.ALLOW_VARIABLE_COOKIES);
+            assertEquals(0,c.length); // Cookies again ignored
+        }
+
+        @Test
+        public void testCookiePolicyIgnoreHC4() throws Exception {
+            man4.setCookiePolicy(CookieSpecs.IGNORE_COOKIES);
+            man4.testStarted(); // ensure policy is picked up
+            URL url = new URL("http://order.now/sub1/moo.html";);
+            man4.addCookieFromHeader("test1=moo1;", url);
+            man4.addCookieFromHeader("test2=moo2;path=/sub1", url);
+            man4.addCookieFromHeader("test2=moo3;path=/", url);
+            assertEquals(0,man4.getCookieCount());// Cookies are ignored
+            Cookie cc;
+            cc=new Cookie("test1","moo1",null,"/sub1",false,0,false,false);
+            man4.add(cc);
+            cc=new Cookie("test2","moo2",null,"/sub1",false,0,true,false);
+            man4.add(cc);
+            cc=new Cookie("test3","moo3",null,"/",false,0,false,false);
+            man4.add(cc);
+            assertEquals(3,man4.getCookieCount());
+            assertEquals("/sub1",man4.get(0).getPath());
+            assertEquals("/sub1",man4.get(1).getPath());
+            assertEquals("/",man4.get(2).getPath());
+            String s = man4.getCookieHeaderForURL(url);
             
             // With ignore policy, s is null as no match will occur, 
             // getCookieHeaderForURL will return null 
             assertNull(s);
             
-            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man.getCookieHandler();
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) 
man4.getCookieHandler();
             List<org.apache.http.cookie.Cookie> c = 
-                    cookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    cookieHandler.getCookiesForUrl(man4.getCookies(), url, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
             assertNotNull(c); // Make sure variable is used
             // see https://issues.apache.org/jira/browse/HTTPCLIENT-1704


Reply via email to