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), )) _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins