90 lines
3.7 KiB
Python
Executable file
90 lines
3.7 KiB
Python
Executable file
|
|
import unittest, doctest
|
|
from zope.interface.verify import verifyClass
|
|
|
|
from zope import component
|
|
from zope.app.appsetup.bootstrap import ensureUtility
|
|
from zope.app.authentication.authentication import PluggableAuthentication
|
|
from zope.app.authentication.interfaces import IAuthenticatorPlugin
|
|
from zope.app.authentication.principalfolder import FoundPrincipalFactory
|
|
from zope.app.authentication.principalfolder import InternalPrincipal
|
|
from zope.app.authentication.principalfolder import Principal
|
|
from zope.app.authentication.principalfolder import PrincipalFolder
|
|
from zope.app.principalannotation import PrincipalAnnotationUtility
|
|
from zope.app.principalannotation import annotations
|
|
from zope.app.principalannotation.interfaces import IPrincipalAnnotationUtility
|
|
from zope.app.security.interfaces import IAuthentication
|
|
from zope.app.security.principalregistry import PrincipalRegistry
|
|
from zope.securitypolicy.interfaces import IRolePermissionManager
|
|
from zope.securitypolicy.interfaces import IPrincipalRoleManager
|
|
|
|
from cybertools.util.jeep import Jeep
|
|
from loops.common import adapted
|
|
from loops.concept import Concept
|
|
from loops.organize.interfaces import IPerson, IHasRole
|
|
from loops.organize.interfaces import IEvent, IAgendaItem
|
|
from loops.organize.party import Person, HasRole
|
|
from loops.organize.task import Task, Event, AgendaItem
|
|
from loops.setup import addAndConfigureObject
|
|
from loops.tests.auth import login
|
|
|
|
|
|
def setupUtilitiesAndAdapters(loopsRoot):
|
|
auth = PrincipalRegistry()
|
|
component.provideUtility(auth, IAuthentication)
|
|
principalAnnotations = PrincipalAnnotationUtility()
|
|
component.provideUtility(principalAnnotations, IPrincipalAnnotationUtility)
|
|
component.provideAdapter(Person, provides=IPerson)
|
|
component.provideAdapter(Task)
|
|
component.provideAdapter(Event, provides=IEvent)
|
|
component.provideAdapter(AgendaItem, provides=IAgendaItem)
|
|
component.provideAdapter(FoundPrincipalFactory)
|
|
component.provideAdapter(HasRole, provides=IHasRole)
|
|
return Jeep((
|
|
('auth', auth),
|
|
('principalAnnotations', principalAnnotations),
|
|
('rolePermissions', IRolePermissionManager(loopsRoot)),
|
|
('principalRoles', IPrincipalRoleManager(loopsRoot)),
|
|
))
|
|
|
|
def setupObjectsForTesting(site, concepts):
|
|
loopsRoot = concepts.getLoopsRoot()
|
|
setupData = setupUtilitiesAndAdapters(loopsRoot)
|
|
ensureUtility(site, IAuthentication, '', PluggableAuthentication,
|
|
copy_to_zlog=False)
|
|
pau = component.getUtility(IAuthentication, context=site)
|
|
# create principal folder and user(s)
|
|
pFolder = PrincipalFolder('users.')
|
|
pau['users'] = pFolder
|
|
pau.authenticatorPlugins = ('users',)
|
|
pFolder['john'] = InternalPrincipal('john', 'xx', u'John')
|
|
# create person and log in
|
|
johnC = addAndConfigureObject(concepts, Concept, 'john',
|
|
conceptType=concepts['person'], title=u'john', userId='users.john')
|
|
pJohn = Principal('users.john', 'xxx', u'John')
|
|
login(pJohn)
|
|
# grant roles and permissions
|
|
grantPermission = setupData.rolePermissions.grantPermissionToRole
|
|
assignRole = setupData.principalRoles.assignRoleToPrincipal
|
|
grantPermission('zope.View', 'zope.Member')
|
|
assignRole('zope.Member', 'users.john')
|
|
setupData.update(dict(johnC=johnC))
|
|
return setupData
|
|
|
|
|
|
class Test(unittest.TestCase):
|
|
"Basic tests for the organize sub-package."
|
|
|
|
def testSomething(self):
|
|
pass
|
|
|
|
|
|
def test_suite():
|
|
flags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
|
|
return unittest.TestSuite((
|
|
unittest.makeSuite(Test),
|
|
doctest.DocFileSuite('README.txt', optionflags=flags),
|
|
))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(defaultTest='test_suite')
|