[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