[Zope-Checkins] SVN: Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py Add tests for 'Products.SiteAccess.AccessRule.manage_addAccessRule'.

Tres Seaver tseaver at palladion.com
Fri May 21 09:16:38 EDT 2010


Log message for revision 112607:
  Add tests for 'Products.SiteAccess.AccessRule.manage_addAccessRule'.

Changed:
  U   Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py

-=-
Modified: Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py
===================================================================
--- Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py	2010-05-21 12:12:55 UTC (rev 112606)
+++ Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py	2010-05-21 13:16:37 UTC (rev 112607)
@@ -63,18 +63,138 @@
         self.assertEqual(request._virtual_root, None)
 
 
+class Test_manage_addAccessRule(unittest.TestCase):
+
+    def _callFUT(self, container, method_id, REQUEST):
+        from Products.SiteAccess.AccessRule import manage_addAccessRule
+        return manage_addAccessRule(container, method_id, REQUEST)
+
+    def test_no_method_id_no_existing_rules_no_request(self):
+        container = DummyContainer()
+        result = self._callFUT(container, None, None)
+        self.failUnless(result is None)
+        self.failIf(container.__dict__)
+
+    def test_no_method_id_no_existing_rules_w_request(self):
+        container = DummyContainer()
+        result = self._callFUT(container, None, {'URL1': 'http://example.com/'})
+        self.failUnless(isinstance(result, str))
+        self.failUnless('<TITLE>No Access Rule</TITLE>' in result)
+        self.failIf(container.__dict__)
+
+    def test_no_method_id_w_existing_rules_no_request(self):
+        from ZPublisher.BeforeTraverse import registerBeforeTraverse
+        container = DummyContainer()
+        old_rule = container.old_rule = DummyObject(name='old_rule',
+                                                    icon='rule_icon.jpg')
+        registerBeforeTraverse(container, old_rule, 'AccessRule')
+        result = self._callFUT(container, None, None)
+        self.failUnless(result is None)
+        self.failIf(container.__before_traverse__)
+        self.failIf('icon' in old_rule.__dict__)
+
+    def test_w_method_id_w_existing_rules_w_request_none(self):
+        from ZPublisher.BeforeTraverse import registerBeforeTraverse
+        container = DummyContainer()
+        old_rule = container.old_rule = DummyObject(name='old_rule',
+                                                    icon='rule_icon.jpg')
+        registerBeforeTraverse(container, old_rule, 'AccessRule')
+        request = DummyRequest(URL1 = 'http://example.com/')
+        request.form = {'none': '1'}
+        result = self._callFUT(container, None, request)
+        self.failUnless(isinstance(result, str))
+        self.failUnless('<TITLE>No Access Rule</TITLE>' in result)
+        self.failIf(container.__before_traverse__)
+        self.failIf('icon' in old_rule.__dict__)
+
+    def test_w_invalid_method_id_w_existing_rules_no_request(self):
+        from ZPublisher.BeforeTraverse import registerBeforeTraverse
+        container = DummyContainer()
+        old_rule = container.old_rule = DummyObject(name='old_rule',
+                                                    icon='rule_icon.jpg')
+        registerBeforeTraverse(container, old_rule, 'AccessRule')
+        result = self._callFUT(container, 'nonesuch', None)
+        self.failUnless(result is None)
+        self.failUnless((99, 'AccessRule') in container.__before_traverse__)
+        rule = container.__before_traverse__[(99, 'AccessRule')]
+        self.assertEqual(rule.name, 'old_rule')
+        self.assertEqual(old_rule.icon, 'rule_icon.jpg')
+
+    def test_w_invalid_method_id_w_existing_rules_w_request(self):
+        from ZPublisher.BeforeTraverse import registerBeforeTraverse
+        container = DummyContainer()
+        old_rule = container.old_rule = DummyObject(name='old_rule',
+                                                    icon='rule_icon.jpg')
+        registerBeforeTraverse(container, old_rule, 'AccessRule')
+        request = DummyRequest(URL1 = 'http://example.com/')
+        request.form = {}
+        result = self._callFUT(container, 'nonesuch', request)
+        self.failUnless(isinstance(result, str))
+        self.failUnless('<TITLE>Invalid Method Id</TITLE>' in result)
+        self.failUnless((99, 'AccessRule') in container.__before_traverse__)
+        rule = container.__before_traverse__[(99, 'AccessRule')]
+        self.assertEqual(rule.name, 'old_rule')
+        self.assertEqual(old_rule.icon, 'rule_icon.jpg')
+
+    def test_w_valid_method_id_w_existing_rules_no_request(self):
+        from ZPublisher.BeforeTraverse import registerBeforeTraverse
+        container = DummyContainer()
+        old_rule = container.old_rule = DummyObject(name='old_rule',
+                                                    icon='rule_icon.jpg')
+        new_rule = container.new_rule = DummyObject(name='new_rule')
+        registerBeforeTraverse(container, old_rule, 'AccessRule')
+        result = self._callFUT(container, 'new_rule', None)
+        self.failUnless(result is None)
+        self.failIf((99, 'AccessRule') in container.__before_traverse__)
+        self.failUnless((1, 'AccessRule') in container.__before_traverse__)
+        rule = container.__before_traverse__[(1, 'AccessRule')]
+        self.assertEqual(rule.name, 'new_rule')
+        self.failIf('icon' in old_rule.__dict__)
+        self.assertEqual(new_rule.icon, 'misc_/SiteAccess/AccessRule.gif')
+
+    def test_w_valid_method_id_w_existing_rules_w_request(self):
+        from ZPublisher.BeforeTraverse import registerBeforeTraverse
+        container = DummyContainer()
+        old_rule = container.old_rule = DummyObject(name='old_rule',
+                                                    icon='rule_icon.jpg')
+        new_rule = container.new_rule = DummyObject(name='new_rule')
+        registerBeforeTraverse(container, old_rule, 'AccessRule')
+        request = DummyRequest(URL1 = 'http://example.com/')
+        request.form = {}
+        result = self._callFUT(container, 'new_rule', request)
+        self.failUnless(isinstance(result, str))
+        self.failUnless('<TITLE>Access Rule Set</TITLE>' in result)
+        self.failIf((99, 'AccessRule') in container.__before_traverse__)
+        self.failUnless((1, 'AccessRule') in container.__before_traverse__)
+        rule = container.__before_traverse__[(1, 'AccessRule')]
+        self.assertEqual(rule.name, 'new_rule')
+        self.failIf('icon' in old_rule.__dict__)
+        self.assertEqual(new_rule.icon, 'misc_/SiteAccess/AccessRule.gif')
+
+
 class DummyRequest(dict):
     _virtual_root = None
     def setVirtualRoot(self, root):
         self._virtual_root = root
 
+
+class DummyObject(object):
+
+    def __init__(self, **kw):
+        self.__dict__.update(kw)
+
+
 class DummyContainer(object):
 
     def __init__(self, **kw):
         self.__dict__.update(kw)
 
+    def this(self):
+        return self
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(AccessRuleTests),
+        unittest.makeSuite(Test_manage_addAccessRule),
     ))
 



More information about the Zope-Checkins mailing list