[z3-checkins] r14523 - z3/Five/trunk/browser/tests
philikon at codespeak.net
philikon at codespeak.net
Mon Jul 11 22:27:28 CEST 2005
Author: philikon
Date: Mon Jul 11 22:27:25 2005
New Revision: 14523
Added:
z3/Five/trunk/browser/tests/resource.txt (contents, props changed)
z3/Five/trunk/browser/tests/resource_ftest.txt (contents, props changed)
Modified:
z3/Five/trunk/browser/tests/test_resource.py
Log:
converted tests to doctests
Added: z3/Five/trunk/browser/tests/resource.txt
==============================================================================
--- (empty file)
+++ z3/Five/trunk/browser/tests/resource.txt Mon Jul 11 22:27:25 2005
@@ -0,0 +1,108 @@
+Testing resources
+=================
+
+Set up the test fixtures:
+
+ >>> import Products.Five.browser.tests
+ >>> from Products.Five import zcml
+ >>> zcml.load_config('resource.zcml', package=Products.Five.browser.tests)
+
+ >>> from Products.Five.testing import manage_addFiveTraversableFolder
+ >>> manage_addFiveTraversableFolder(self.folder, 'testoid', 'Testoid')
+
+ >>> import os, glob
+ >>> _prefix = os.path.dirname(Products.Five.browser.tests.__file__)
+ >>> dir_resource_names = [os.path.basename(r) for r in (
+ ... glob.glob('%s/*.png' % _prefix) +
+ ... glob.glob('%s/*.pt' % _prefix) +
+ ... glob.glob('%s/[a-z]*.py' % _prefix) +
+ ... glob.glob('%s/*.css' % _prefix))]
+
+
+Resource types
+--------------
+
+ >>> from Products.Five.browser.resource import Resource, PageTemplateResource
+
+Template resource
+~~~~~~~~~~~~~~~~~
+
+ >>> resource = self.folder.unrestrictedTraverse('testoid/++resource++cockatiel.html')
+ >>> isinstance(resource, Resource)
+ True
+ >>> resource()
+ 'http://nohost/test_folder_1_/testoid/++resource++cockatiel.html'
+
+File resource
+~~~~~~~~~~~~~
+
+ >>> resource = self.folder.unrestrictedTraverse('testoid/++resource++style.css')
+ >>> isinstance(resource, Resource)
+ True
+ >>> resource()
+ 'http://nohost/test_folder_1_/testoid/++resource++style.css'
+
+Image resource
+~~~~~~~~~~~~~~
+
+ >>> resource = self.folder.unrestrictedTraverse('testoid/++resource++pattern.png')
+ >>> isinstance(resource, Resource)
+ True
+ >>> resource()
+ 'http://nohost/test_folder_1_/testoid/++resource++pattern.png'
+
+Resource directory
+~~~~~~~~~~~~~~~~~~
+
+ >>> base = 'testoid/++resource++fivetest_resources/%s'
+ >>> base_url = 'http://nohost/test_folder_1_/' + base
+ >>> abs_url = self.folder.unrestrictedTraverse(base % '')()
+ >>> abs_url + '/' == base_url % ''
+ True
+
+PageTemplateResource's __call__ renders the template
+
+ >>> for r in dir_resource_names:
+ ... resource = self.folder.unrestrictedTraverse(base % r)
+ ... self.assert_(isinstance(resource, Resource))
+ ... if not isinstance(resource, PageTemplateResource):
+ ... self.assertEquals(resource(), base_url % r)
+
+
+Security
+--------
+
+ >>> from Products.Five.testing.restricted import checkRestricted
+ >>> from Products.Five.testing.restricted import checkUnauthorized
+
+ >>> resource_names = ['cockatiel.html', 'style.css', 'pattern.png']
+
+We should get unauthorized as long as we're unauthenticated:
+
+ >>> for resource in resource_names:
+ ... checkUnauthorized(
+ ... self.folder,
+ ... 'context.restrictedTraverse("testoid/++resource++%s")()' % resource)
+
+ >>> base = 'testoid/++resource++fivetest_resources/%s'
+ >>> for resource in dir_resource_names:
+ ... path = base % resource
+ ... checkUnauthorized(self.folder, 'context.restrictedTraverse("%s")' % path)
+
+Now let's create a manager user account and log in:
+
+ >>> uf = self.folder.acl_users
+ >>> uf._doAddUser('manager', 'r00t', ['Manager'], [])
+ >>> self.login('manager')
+
+We can now view them all:
+
+ >>> for resource in resource_names:
+ ... checkRestricted(
+ ... self.folder,
+ ... 'context.restrictedTraverse("testoid/++resource++%s")()' % resource)
+
+ >>> base = 'testoid/++resource++fivetest_resources/%s'
+ >>> for resource in dir_resource_names:
+ ... path = base % resource
+ ... checkRestricted(self.folder, 'context.restrictedTraverse("%s")' % path)
Added: z3/Five/trunk/browser/tests/resource_ftest.txt
==============================================================================
--- (empty file)
+++ z3/Five/trunk/browser/tests/resource_ftest.txt Mon Jul 11 22:27:25 2005
@@ -0,0 +1,65 @@
+Functional Resource Test
+========================
+
+Set up the test fixtures:
+
+ >>> import Products.Five.browser.tests
+ >>> from Products.Five import zcml
+ >>> zcml.load_config('resource.zcml', package=Products.Five.browser.tests)
+
+ >>> from Products.Five.testing import manage_addFiveTraversableFolder
+ >>> manage_addFiveTraversableFolder(self.folder, 'testoid', 'Testoid')
+
+ >>> import os, glob
+ >>> _prefix = os.path.dirname(Products.Five.browser.tests.__file__)
+ >>> dir_resource_names = [os.path.basename(r) for r in (
+ ... glob.glob('%s/*.png' % _prefix) +
+ ... glob.glob('%s/*.pt' % _prefix) +
+ ... glob.glob('%s/[a-z]*.py' % _prefix) +
+ ... glob.glob('%s/*.css' % _prefix))]
+
+ >>> uf = self.folder.acl_users
+ >>> uf._doAddUser('manager', 'r00t', ['Manager'], [])
+
+
+Image resource
+~~~~~~~~~~~~~~
+
+ >>> print http(r'''
+ ... GET /test_folder_1_/testoid/++resource++pattern.png HTTP/1.1
+ ... Authorization: Basic manager:r00t
+ ... ''')
+ HTTP/1.1 200 OK
+ ...
+
+File resource
+~~~~~~~~~~~~~
+
+ >>> print http(r'''
+ ... GET /test_folder_1_/testoid/++resource++style.css HTTP/1.1
+ ... Authorization: Basic manager:r00t
+ ... ''')
+ HTTP/1.1 200 OK
+ ...
+
+Template resource
+~~~~~~~~~~~~~~~~~
+
+ >>> print http(r'''
+ ... GET /test_folder_1_/testoid/++resource++cockatiel.html HTTP/1.1
+ ... Authorization: Basic manager:r00t
+ ... ''')
+ HTTP/1.1 200 OK
+ ...
+
+Resource directory
+~~~~~~~~~~~~~~~~~~
+
+Page templates aren't guaranteed to render, so exclude them from the test:
+
+ >>> base_url = '/test_folder_1_/testoid/++resource++fivetest_resources/%s'
+ >>> for r in dir_resource_names:
+ ... if r.endswith('.pt'):
+ ... continue
+ ... response = self.publish(base_url % r, basic='manager:r00t')
+ ... self.assertEquals(200, response.getStatus())
Modified: z3/Five/trunk/browser/tests/test_resource.py
==============================================================================
--- z3/Five/trunk/browser/tests/test_resource.py (original)
+++ z3/Five/trunk/browser/tests/test_resource.py Mon Jul 11 22:27:25 2005
@@ -19,145 +19,18 @@
if __name__ == '__main__':
execfile(os.path.join(sys.path[0], 'framework.py'))
-import unittest
-from Testing.ZopeTestCase import ZopeTestCase, FunctionalTestCase
-from Testing.ZopeTestCase import installProduct
-installProduct('Five')
-installProduct("PythonScripts") # for SecurityResourceTests
-
-import glob
-import Products.Five.browser.tests
-from Products.Five import zcml
-from Products.Five.browser.resource import Resource, PageTemplateResource
-from Products.Five.testing import manage_addFiveTraversableFolder
-from Products.Five.testing import RestrictedPythonTestCase
-
-_prefix = os.path.dirname(Products.Five.browser.tests.__file__)
-dir_resource_names = [os.path.basename(r)
- for r in (glob.glob('%s/*.png' % _prefix) +
- glob.glob('%s/*.pt' % _prefix) +
- glob.glob('%s/[a-z]*.py' % _prefix) +
- glob.glob('%s/*.css' % _prefix))]
-
-class ResourceTests(ZopeTestCase):
-
- def afterSetUp(self):
- zcml.load_config('resource.zcml', package=Products.Five.browser.tests)
- manage_addFiveTraversableFolder(self.folder, 'testoid', 'Testoid')
-
- def test_template_resource(self):
- resource = self.folder.unrestrictedTraverse('testoid/++resource++cockatiel.html')
- self.assert_(isinstance(resource, Resource))
- expected = 'http://nohost/test_folder_1_/testoid/++resource++cockatiel.html'
- self.assertEquals(expected, resource())
-
- def test_file_resource(self):
- resource = self.folder.unrestrictedTraverse('testoid/++resource++style.css')
- self.assert_(isinstance(resource, Resource))
- expected = 'http://nohost/test_folder_1_/testoid/++resource++style.css'
- self.assertEquals(expected, resource())
-
- def test_image_resource(self):
- resource = self.folder.unrestrictedTraverse('testoid/++resource++pattern.png')
- expected = 'http://nohost/test_folder_1_/testoid/++resource++pattern.png'
- self.assert_(isinstance(resource, Resource))
- self.assertEquals(expected, resource())
-
- def test_resource_directory(self):
- base = 'testoid/++resource++fivetest_resources/%s'
- base_url = 'http://nohost/test_folder_1_/' + base
-
- abs_url = self.folder.unrestrictedTraverse(base % '')()
- self.assertEquals(abs_url + '/', base_url % '')
-
- for r in dir_resource_names:
- resource = self.folder.unrestrictedTraverse(base % r)
- self.assert_(isinstance(resource, Resource))
- # PageTemplateResource's __call__ renders the template
- if not isinstance(resource, PageTemplateResource):
- self.assertEquals(resource(), base_url % r)
-
-class PublishResourceTests(FunctionalTestCase):
-
- def afterSetUp(self):
- zcml.load_config('resource.zcml', package=Products.Five.browser.tests)
- manage_addFiveTraversableFolder(self.folder, 'testoid', 'Testoid')
- uf = self.folder.acl_users
- uf._doAddUser('manager', 'r00t', ['Manager'], [])
-
- def test_publish_image_resource(self):
- url = '/test_folder_1_/testoid/++resource++pattern.png'
- response = self.publish(url, basic='manager:r00t')
- self.assertEquals(200, response.getStatus())
-
- def test_publish_file_resource(self):
- url = '/test_folder_1_/testoid/++resource++style.css'
- response = self.publish(url, basic='manager:r00t')
- self.assertEquals(200, response.getStatus())
-
- def test_publish_template_resource(self):
- url = '/test_folder_1_/testoid/++resource++cockatiel.html'
- response = self.publish(url, basic='manager:r00t')
- self.assertEquals(200, response.getStatus())
-
- def test_publish_resource_directory(self):
- base_url = '/test_folder_1_/testoid/++resource++fivetest_resources/%s'
- for r in dir_resource_names:
- if r.endswith('.pt'):
- # page templates aren't guaranteed to render
- continue
- response = self.publish(base_url % r, basic='manager:r00t')
- self.assertEquals(200, response.getStatus())
-
-resource_names = [
- 'cockatiel.html',
- 'style.css',
- 'pattern.png'
- ]
-
-class SecurityResourceTests(RestrictedPythonTestCase):
-
- def afterSetUp(self):
- zcml.load_config('resource.zcml', package=Products.Five.browser.tests)
- manage_addFiveTraversableFolder(self.folder, 'testoid', 'Testoid')
- uf = self.folder.acl_users
- uf._doAddUser('viewer', 'secret', [], [])
- uf._doAddUser('manager', 'r00t', ['Manager'], [])
-
- def test_resource_no_permission(self):
- self.login('viewer')
- for resource in resource_names:
- self.checkUnauthorized(
- 'context.restrictedTraverse("testoid/++resource++%s")()' %
- resource)
-
- def test_directory_resource_no_permission(self):
- self.login('viewer')
- base = 'testoid/++resource++fivetest_resources/%s'
- for resource in dir_resource_names:
- path = base % resource
- self.checkUnauthorized('context.restrictedTraverse("%s")' % path)
-
- def test_resource_permission(self):
- self.login('manager')
- for resource in resource_names:
- self.check(
- 'context.restrictedTraverse("testoid/++resource++%s")()' %
- resource)
-
- def test_directory_resource_permission(self):
- self.login('manager')
- base = 'testoid/++resource++fivetest_resources/%s'
- for resource in dir_resource_names:
- path = base % resource
- self.check('context.restrictedTraverse("%s")' % path)
-
def test_suite():
- suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(ResourceTests))
- suite.addTest(unittest.makeSuite(PublishResourceTests))
- suite.addTest(unittest.makeSuite(SecurityResourceTests))
- return suite
+ import unittest
+ from Testing.ZopeTestCase import installProduct, ZopeDocFileSuite
+ from Testing.ZopeTestCase import FunctionalDocFileSuite
+ installProduct('Five')
+ installProduct("PythonScripts") # for SecurityResourceTests
+ return unittest.TestSuite((
+ ZopeDocFileSuite('resource.txt',
+ package='Products.Five.browser.tests'),
+ FunctionalDocFileSuite('resource_ftest.txt',
+ package='Products.Five.browser.tests'),
+ ))
if __name__ == '__main__':
framework()
More information about the z3-checkins
mailing list