[Httpunit-commit] CVS: httpunit/test/com/meterware/httpunit/cookies CookieTest.java,1.3,1.4
Brought to you by:
russgold
|
From: Russell G. <rus...@us...> - 2003-06-17 11:08:30
|
Update of /cvsroot/httpunit/httpunit/test/com/meterware/httpunit/cookies
In directory sc8-pr-cvs1:/tmp/cvs-serv13759/test/com/meterware/httpunit/cookies
Modified Files:
CookieTest.java
Log Message:
Add cookie leniency and callbacks
Index: CookieTest.java
===================================================================
RCS file: /cvsroot/httpunit/httpunit/test/com/meterware/httpunit/cookies/CookieTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CookieTest.java 23 May 2003 21:52:58 -0000 1.3
+++ CookieTest.java 17 Jun 2003 11:08:25 -0000 1.4
@@ -2,7 +2,7 @@
/********************************************************************************************************************
* $Id$
*
- * Copyright (c) 2002, Russell Gold
+ * Copyright (c) 2002-2003, Russell Gold
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation
@@ -25,6 +25,7 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import junit.framework.Assert;
import junit.textui.TestRunner;
@@ -49,6 +50,12 @@
}
+ protected void setUp() throws Exception {
+ super.setUp();
+ CookieProperties.reset();
+ }
+
+
public void testSimpleCookies() throws Exception {
CookieJar jar = new CookieJar(
new TestSource( new URL( "http://www.meterware.com" ),
@@ -104,9 +111,7 @@
checkAcceptance( 5, false, "www.meterware.com/servlets/special", "meterware", null );
checkAcceptance( 6, false, "www.meterware.com/servlets/special", ".com", null );
checkAcceptance( 7, false, "www.meterware.com/servlets/special", ".httpunit.org", null );
-
- // N.B. This cookie should be rejected if we are using strict domain matching, but is accepted with lenient matching.
- checkAcceptance( 8, true, "www.some.meterware.com/servlets/special", ".meterware.com", null );
+ checkAcceptance( 8, false, "www.some.meterware.com/servlets/special", ".meterware.com", null );
}
@@ -180,6 +185,83 @@
private CookieJar newJar( String urlString, String setCookieHeader ) throws MalformedURLException {
return new CookieJar( new TestSource( new URL( "http://" + urlString ), setCookieHeader ) );
}
+
+
+ public void testLenientMatching() throws Exception {
+ CookieProperties.setDomainMatchingStrict( false );
+ checkAcceptance( 1, true, "www.some.meterware.com/servlets/special", ".meterware.com", null );
+ checkAcceptance( 2, false, "www.meterware.com/servlets/special", ".meterware.com", "/servlets/ordinary" );
+
+ CookieProperties.setPathMatchingStrict( false );
+ checkAcceptance( 3, true, "www.meterware.com/servlets/special", ".meterware.com", "/servlets/ordinary" );
+ checkMatching( 4, true, new URL( "http://www.meterware.com/servlets/sample" ), "www.meterware.com", "/servlets/sample/data" );
+ }
+
+
+ public void testRejectionCallbacks() throws Exception {
+ MockListener listener = new MockListener();
+ CookieProperties.addCookieListener( listener );
+
+ checkCallback( listener, 1, 0, "www.meterware.com/servlets/special", null, null );
+ checkCallback( listener, 2, CookieListener.PATH_NOT_PREFIX, "www.meterware.com/servlets/special", ".meterware.com", "/servlets/ordinary" );
+ checkCallback( listener, 3, CookieListener.DOMAIN_NO_STARTING_DOT, "www.meterware.com/servlets/special", "meterware.com", null );
+ checkCallback( listener, 4, CookieListener.DOMAIN_ONE_DOT, "www.meterware.com/servlets/special", ".com", null );
+ checkCallback( listener, 5, CookieListener.DOMAIN_NOT_SOURCE_SUFFIX, "www.meterware.com/servlets/special", ".httpunit.org", null );
+ checkCallback( listener, 6, CookieListener.DOMAIN_TOO_MANY_LEVELS, "www.some.meterware.com/servlets/special", ".meterware.com", null );
+ }
+
+
+ private void checkCallback( MockListener listener, int index, int status, String urlString,
+ String specifiedDomain, String specifiedPath ) throws MalformedURLException {
+ if (status == 0) {
+ listener.expectAcceptance( index );
+ } else if (status == CookieListener.PATH_NOT_PREFIX) {
+ listener.expectRejection( index, "name", status, specifiedPath );
+ } else {
+ listener.expectRejection( index, "name", status, specifiedDomain );
+ }
+ newJar( urlString, specifiedDomain, specifiedPath );
+ if (status != 0) listener.confirmRejection();
+ }
+
+
+ private class MockListener implements CookieListener {
+
+ private int _reason;
+ private String _attribute;
+ private String _cookieName;
+ private boolean _rejected;
+ private int _cookieNum;
+
+
+ void expectAcceptance( int cookieNum ) {
+ _cookieNum = cookieNum;
+ _reason = -1;
+ }
+
+
+ void expectRejection( int cookieNum, String cookieName, int reason, String attribute ) {
+ _cookieNum = cookieNum;
+ _reason = reason;
+ _attribute = attribute;
+ _cookieName = cookieName;
+ _rejected = false;
+ }
+
+
+ void confirmRejection() {
+ Assert.assertTrue( "Cookie " + _cookieNum + " was not logged as rejected", _rejected );
+ }
+
+
+ public void cookieRejected( String name, int reason, String attribute ) {
+ _rejected = true;
+ Assert.assertEquals( "Cookie " + _cookieNum + " rejection code", _reason, reason );
+ if (_attribute != null) Assert.assertEquals( "Cookie " + _cookieNum + " rejected attribute", _attribute, attribute );
+ if (_cookieName != null) Assert.assertEquals( "Cookie " + _cookieNum + " name", _cookieName, name );
+ }
+ }
+
private class TestSource implements CookieSource {
|