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

Jim Fulton jim@zope.com
Wed, 12 Dec 2001 16:37:36 -0500


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

Added Files:
      Tag: Zope-3x-branch
	testPrincipalRegistry.py 
Log Message:
Initial cut at IAuthenticationService without actual authentication.

Note that IAuthenticationService may get factored into separate
services based on pje's suggestions, unless it isn't.


=== Added File Zope3/lib/python/Zope/App/Security/tests/testPrincipalRegistry.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.App.Security.PrincipalRegistry import PrincipalRegistry
from Zope.App.Security.PrincipalRegistry import DuplicateLogin, DuplicateId
from Zope.Exceptions import NotFoundError

class Test(unittest.TestCase):

    def setUp(self):
        self.reg = PrincipalRegistry()

        self.reg.definePrincipal('1', 'Tim Peters', 'Sir Tim Peters',
                                 'tim', '123')
        self.reg.definePrincipal('2', 'Jim Fulton', 'Sir Jim Fulton',
                                 'jim', '456')

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

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

    def testUnRegistered(self):
        self.assertRaises(NotFoundError, self.reg.getPrincipal, '3')

    def testDup(self):
        self.assertRaises(DuplicateId, 
                          self.reg.definePrincipal,
                          '1', 'Tim Peters', 'Sir Tim Peters',
                          'tim2', '123')
        self.assertRaises(DuplicateLogin, 
                          self.reg.definePrincipal,
                          '3', 'Tim Peters', 'Sir Tim Peters',
                          'tim', '123')
        self.assertRaises(NotFoundError, self.reg.getPrincipal, '3')
        self.assertEqual(len(self.reg.getPrincipals('')), 2)

    def testSearch(self):
        r = self.reg.getPrincipals('J')
        self.assertEquals(len(r), 1)
        self.failUnless(r[0] is self.reg.getPrincipal('2'))
        
def test_suite():
    loader=unittest.TestLoader()
    return loader.loadTestsFromTestCase(Test)

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