[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/Security/tests - testSecurityDirectives.py:1.1.2.1 testPrincipalDirective.py:NONE

Barry Warsaw barry@wooz.org
Thu, 13 Dec 2001 16:55:29 -0500


Update of /cvs-repository/Zope3/lib/python/Zope/App/Security/tests
In directory cvs.zope.org:/tmp/cvs-serv13542/lib/python/Zope/App/Security/tests

Added Files:
      Tag: Zope-3x-branch
	testSecurityDirectives.py 
Removed Files:
      Tag: Zope-3x-branch
	testPrincipalDirective.py 
Log Message:
Move all directive tests to testSecurityDirectives.py so we don't need
a separate testPrincipalDirective.py


=== Added File Zope3/lib/python/Zope/App/Security/tests/testSecurityDirectives.py ===
##############################################################################
# Copyright (c) 2001 Zope Corporation and Contributors.  All Rights Reserved.
# 
# This software is subject to the provisions of the Zope Public License,
# Version 1.1 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS 
# FOR A PARTICULAR PURPOSE.
##############################################################################

import unittest, sys

from Zope.Configuration.xmlconfig import xmlconfig
from StringIO import StringIO
from Zope.App.Security.PrincipalRegistry import globalRegistry
from Zope.App.Security.PermissionRegistry import registry as pregistry
from Zope.App.Security.RoleRegistry import registry as rregistry
from Zope.App.Security.metaConfigure import metaConfigure
from Zope.Configuration.meta import _clear as metaclear
from Zope.Configuration.xmlconfig import ZopeXMLConfigurationError
#from Zope.App.Security.Registry import AlreadyRegisteredError

def configfile(s):
    return StringIO("""<zopeConfigure
      xmlns='http://namespaces.zope.org/zope'
      xmlns:security='http://namespaces.zope.org/security'>
      %s
      </zopeConfigure>
      """ % s)


class TestPrincipalDirective(unittest.TestCase):
    def setUp(self):
        globalRegistry.clear()
        metaConfigure()

    def tearDown(self):
        globalRegistry.clear()
        metaclear()

    def testRegister(self):
        f = configfile("""<security:principal principal="1"
                             title="Sir Tim Peters"
                             description="Tim Peters"
                             login="tim" password="123" />
                          <security:principal principal="2"
                             title="Sir Jim Fulton"
                             description="Jim Fulton"
                             login="jim" password="123" />""")
        xmlconfig(f)

        reg=globalRegistry
        
        p = reg.getPrincipal('1')
        self.assertEqual(p.getId(), '1')
        self.assertEqual(p.getTitle(), 'Sir Tim Peters')
        self.assertEqual(p.getDescription(), 'Tim Peters')
        p = reg.getPrincipal('2')
        self.assertEqual(p.getId(), '2')
        self.assertEqual(p.getTitle(), 'Sir Jim Fulton')
        self.assertEqual(p.getDescription(), 'Jim Fulton')

        self.assertEqual(len(reg.getPrincipals('')), 2)


class TestPermissionDirective(unittest.TestCase):
    def setUp(self):
        pregistry._clear()
        metaConfigure()

    def tearDown(self):
        pregistry._clear()
        metaclear()

    def testRegister(self):
        f = configfile("""
 <security:definePermission
     name="Can Do It"
     title="A Permissive Permission"
     description="This permission lets you do anything" />""")

        xmlconfig(f)

        perm = pregistry.getPermission("Can Do It")
        self.failUnless(perm.getId().endswith('Can Do It'))
        self.assertEqual(perm.getTitle(), 'A Permissive Permission')
        self.assertEqual(perm.getDescription(),
                         'This permission lets you do anything')

    def testDuplicationRegistration(self):
        f = configfile("""
 <security:definePermission
     name="Can Do It"
     title="A Permissive Permission"
     description="This permission lets you do anything" />

 <security:definePermission
     name="Can Do It"
     title="A Permissive Permission"
     description="This permission lets you do anything" />
     """)

        #self.assertRaises(AlreadyRegisteredError, xmlconfig, f)
        self.assertRaises(ZopeXMLConfigurationError, xmlconfig, f)
        
class TestRoleDirective(unittest.TestCase):
    def setUp(self):
        rregistry._clear()
        metaConfigure()

    def tearDown(self):
        rregistry._clear()
        metaclear()

    def testRegister(self):
        f = configfile("""
 <security:defineRole
     name="Everyperson"
     title="Tout le monde"
     description="The common man, woman, person, or thing" />
     """)

        xmlconfig(f)

        role = rregistry.getRole("Everyperson")
        self.failUnless(role.getId().endswith('Everyperson'))
        self.assertEqual(role.getTitle(), 'Tout le monde')
        self.assertEqual(role.getDescription(),
                         'The common man, woman, person, or thing')
        
    def testDuplicationRegistration(self):
        f = configfile("""
 <security:defineRole
     name="Everyperson"
     title="Tout le monde"
     description="The common man, woman, person, or thing" />

 <security:defineRole
     name="Everyperson"
     title="Tout le monde"
     description="The common man, woman, person, or thing" />
     """)

        #self.assertRaises(AlreadyRegisteredError, xmlconfig, f)
        self.assertRaises(ZopeXMLConfigurationError, xmlconfig, f)

def test_suite():
    suite = unittest.TestSuite()
    loader = unittest.TestLoader()
    suite.addTest(loader.loadTestsFromTestCase(TestPrincipalDirective))
    suite.addTest(loader.loadTestsFromTestCase(TestPermissionDirective))
    suite.addTest(loader.loadTestsFromTestCase(TestRoleDirective))
    return suite


if __name__=='__main__':
    unittest.TextTestRunner().run(test_suite())

=== Removed File Zope3/lib/python/Zope/App/Security/tests/testPrincipalDirective.py ===