[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