[Checkins] SVN: zope.app.testing/trunk/src/zope/app/testing/ Created tests to show that cookies are not preserved across a testsuite.

matt@zope.com cvs-admin at zope.org
Fri Oct 10 15:09:49 EDT 2008


Log message for revision 92021:
  Created tests to show that cookies are not preserved across a testsuite.
  

Changed:
  A   zope.app.testing/trunk/src/zope/app/testing/cookieTestOne.txt
  A   zope.app.testing/trunk/src/zope/app/testing/cookieTestTwo.txt
  U   zope.app.testing/trunk/src/zope/app/testing/doctest.txt
  U   zope.app.testing/trunk/src/zope/app/testing/functional.py
  U   zope.app.testing/trunk/src/zope/app/testing/tests.py

-=-
Copied: zope.app.testing/trunk/src/zope/app/testing/cookieTestOne.txt (from rev 92018, zope.app.testing/branches/matt-fix-cookie-leak/src/zope/app/testing/cookieTestOne.txt)
===================================================================
--- zope.app.testing/trunk/src/zope/app/testing/cookieTestOne.txt	                        (rev 0)
+++ zope.app.testing/trunk/src/zope/app/testing/cookieTestOne.txt	2008-10-10 19:09:49 UTC (rev 92021)
@@ -0,0 +1,58 @@
+========================
+DocTest Functional Tests
+========================
+
+This file documents and tests doctest-based functional tests and basic
+Zope web-application functionality.
+
+This second DocTest, zope/app/testing/cookieTestOne.txt, has specifically
+been created in order to make sure cookie information is not being saved
+across a test suite. If we are saving these via a global 'http' instance,
+we will see more results than those listed below. 'http' is instead
+created in setUp within _prepare_doctest_keywords, rather than in the
+global declarations.
+
+Now we will run tests to ensure that cookies are not saved across doctests.
+
+  >>> from zope.app.testing import functional
+  >>> from zope.app.testing.tests import DummyCookiesResponse
+
+We will create some cookie values and saved them in our 'http' value, which
+is a CookieHandler() object.
+
+  >>> response = DummyCookiesResponse(dict(
+  ...     proton=dict(value='fromCookieTestOne', path='/foo', comment='rest is ignored'),
+  ...     neutron=dict(value='fromCookieTestOne')))
+
+If 'http' is created as a global variable, then every doctest in this
+suite will be saving cookies in it, and one doctest may see cookies for
+another doctest. We only want two cookies in 'http' - the ones we just
+created.
+
+  >>> http.saveCookies(response)
+  >>> len(http.cookies)
+  2
+
+  >>> http.cookies['proton'].OutputString()
+  'proton=fromCookieTestOne; Path=/foo;'
+
+  >>> http.cookies
+  <SimpleCookie: neutron='fromCookieTestOne' proton='fromCookieTestOne'>
+
+  >>> http.cookies['proton'] = 'fromCookieTestOne'
+  >>> http.cookies['proton']['path'] = '/foo'
+  >>> http.cookies['electron'] = 'fromCookieTestOne'
+  >>> http.cookies['electron']['path'] = '/foo/baz'
+  >>> http.cookies['neutron'] = 'fromCookieTestOne'
+
+  >>> cookieHeader = http.httpCookie('/foo/bar')
+  >>> parts = cookieHeader.split('; ')
+  >>> parts.sort()
+  >>> parts
+  ['neutron=fromCookieTestOne', 'proton=fromCookieTestOne']
+
+  >>> cookieHeader = http.httpCookie('/foo/baz')
+  >>> parts = cookieHeader.split('; ')
+  >>> parts.sort()
+  >>> parts
+  ['electron=fromCookieTestOne', 'neutron=fromCookieTestOne', 'proton=fromCookieTestOne']

Copied: zope.app.testing/trunk/src/zope/app/testing/cookieTestTwo.txt (from rev 92018, zope.app.testing/branches/matt-fix-cookie-leak/src/zope/app/testing/cookieTestTwo.txt)
===================================================================
--- zope.app.testing/trunk/src/zope/app/testing/cookieTestTwo.txt	                        (rev 0)
+++ zope.app.testing/trunk/src/zope/app/testing/cookieTestTwo.txt	2008-10-10 19:09:49 UTC (rev 92021)
@@ -0,0 +1,48 @@
+========================
+DocTest Functional Tests
+========================
+
+This file documents and tests doctest-based functional tests and basic
+Zope web-application functionality.
+
+This second DocTest, zope/app/testing/cookieTestTwo.txt, has specifically
+been created in order to make sure cookie information is not being saved
+across a test suite. If we are saving these via a global 'http' instance,
+we will see more results than those listed below. 'http' is instead
+created in setUp within _prepare_doctest_keywords, rather than in the
+global declarations.
+
+  >>> from zope.app.testing import functional
+  >>> from zope.app.testing.tests import DummyCookiesResponse
+
+  >>> response = DummyCookiesResponse(dict(
+  ...     cobalt=dict(value='fromCookieTestTwo', path='/foo', comment='rest is ignored'),
+  ...     crimson=dict(value='fromCookieTestTwo')))
+
+  >>> http.saveCookies(response)
+  >>> len(http.cookies)
+  2
+        
+  >>> http.cookies['cobalt'].OutputString()
+  'cobalt=fromCookieTestTwo; Path=/foo;'
+
+  >>> http.cookies
+  <SimpleCookie: cobalt='fromCookieTestTwo' crimson='fromCookieTestTwo'>
+
+  >>> http.cookies['cobalt'] = 'fromCookieTestTwo'
+  >>> http.cookies['cobalt']['path'] = '/foo'
+  >>> http.cookies['amber'] = 'fromCookieTestTwo'
+  >>> http.cookies['amber']['path'] = '/foo/baz'
+  >>> http.cookies['crimson'] = 'fromCookieTestTwo'
+
+  >>> cookieHeader = http.httpCookie('/foo/bar')
+  >>> parts = cookieHeader.split('; ')
+  >>> parts.sort()
+  >>> parts
+  ['cobalt=fromCookieTestTwo', 'crimson=fromCookieTestTwo']
+
+  >>> cookieHeader = http.httpCookie('/foo/baz')
+  >>> parts = cookieHeader.split('; ')
+  >>> parts.sort()
+  >>> parts
+  ['amber=fromCookieTestTwo', 'cobalt=fromCookieTestTwo', 'crimson=fromCookieTestTwo']

Modified: zope.app.testing/trunk/src/zope/app/testing/doctest.txt
===================================================================
--- zope.app.testing/trunk/src/zope/app/testing/doctest.txt	2008-10-10 18:56:14 UTC (rev 92020)
+++ zope.app.testing/trunk/src/zope/app/testing/doctest.txt	2008-10-10 19:09:49 UTC (rev 92021)
@@ -143,4 +143,3 @@
 
   >>> list(root.keys())
   [u'f1']
-

Modified: zope.app.testing/trunk/src/zope/app/testing/functional.py
===================================================================
--- zope.app.testing/trunk/src/zope/app/testing/functional.py	2008-10-10 18:56:14 UTC (rev 92020)
+++ zope.app.testing/trunk/src/zope/app/testing/functional.py	2008-10-10 19:09:49 UTC (rev 92021)
@@ -780,14 +780,13 @@
 
 def _prepare_doctest_keywords(kw):
     globs = kw.setdefault('globs', {})
-    globs['http'] = HTTPCaller()
     globs['getRootFolder'] = getRootFolder
     globs['sync'] = sync
 
     kwsetUp = kw.get('setUp')
     def setUp(test):
+	test.globs['http'] = HTTPCaller()
         FunctionalTestSetup().setUp()
-
         if kwsetUp is not None:
             kwsetUp(test)
     kw['setUp'] = setUp

Modified: zope.app.testing/trunk/src/zope/app/testing/tests.py
===================================================================
--- zope.app.testing/trunk/src/zope/app/testing/tests.py	2008-10-10 18:56:14 UTC (rev 92020)
+++ zope.app.testing/trunk/src/zope/app/testing/tests.py	2008-10-10 19:09:49 UTC (rev 92021)
@@ -612,7 +612,8 @@
     RetryProblemFunctional.layer = AppTestingLayer
     RetryProblemBrowser.layer = AppTestingLayer
 
-    doc_test = FunctionalDocFileSuite('doctest.txt', checker=checker)
+    doc_test = FunctionalDocFileSuite('doctest.txt', 'cookieTestOne.txt',
+        'cookieTestTwo.txt', checker=checker)
     doc_test.layer = AppTestingLayer
 
     return unittest.TestSuite((



More information about the Checkins mailing list