[Zope3-checkins] CVS: Zope3/src/zope/app/component/tests - __init__.py:1.1.2.1 placelesssetup.py:1.1.2.1 test_directives.py:1.1.2.1 test_interfacefield.py:1.1.2.1 test_interfaceservice.py:1.1.2.1 test_nextservice.py:1.1.2.1 test_service.py:1.1.2.1 test_servicedirective.py:1.1.2.1 test_servicemanagercontainer.py:1.1.2.1
Jim Fulton
jim@zope.com
Mon, 23 Dec 2002 14:31:28 -0500
Update of /cvs-repository/Zope3/src/zope/app/component/tests
In directory cvs.zope.org:/tmp/cvs-serv19908/zope/app/component/tests
Added Files:
Tag: NameGeddon-branch
__init__.py placelesssetup.py test_directives.py
test_interfacefield.py test_interfaceservice.py
test_nextservice.py test_service.py test_servicedirective.py
test_servicemanagercontainer.py
Log Message:
Initial renaming before debugging
=== Added File Zope3/src/zope/app/component/tests/__init__.py ===
#
# This file is necessary to make this directory a package.
=== Added File Zope3/src/zope/app/component/tests/placelesssetup.py ===
##############################################################################
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""Unit test logic for setting up and tearing down basic infrastructure
$Id: placelesssetup.py,v 1.1.2.1 2002/12/23 19:31:27 jim Exp $
"""
from zope.component import getServiceManager
from zope.app.component.globalinterfaceservice import IInterfaceService
from zope.app.component.globalinterfaceservice import interfaceService
class PlacelessSetup:
def setUp(self):
sm = getServiceManager(None)
defineService = sm.defineService
provideService = sm.provideService
defineService("Interfaces", IInterfaceService)
provideService("Interfaces", interfaceService)
=== Added File Zope3/src/zope/app/component/tests/test_directives.py === (412/512 lines abridged)
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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
import sys
import os
from cStringIO import StringIO
from zope.configuration.xmlconfig import xmlconfig, XMLConfig
from zope.configuration.exceptions import ConfigurationError
from zope.app.security.exceptions import UndefinedPermissionError
from zope.security.proxy import getTestProxyItems, getObject as proxiedObject
import Zope.App.ComponentArchitecture
from zope.component.exceptions import ComponentLookupError
from zope.component \
import getView, queryView, getResource, queryResource, createObject
from zope.component import getDefaultViewName
from zope.app.tests.placelesssetup import PlacelessSetup
from zope.component.tests.test_views import \
IV, IC, V1, VZMI, R1, RZMI
from zope.component.tests.request import Request
template = """<zopeConfigure
xmlns='http://namespaces.zope.org/zope'
xmlns:test='http://www.zope.org/NS/Zope3/test'>
%s
</zopeConfigure>"""
class Ob:
__implements__ = IC
def definePermissions():
XMLConfig('meta.zcml', Zope.App.ContentDirective)()
class Test(PlacelessSetup, unittest.TestCase):
[-=- -=- -=- 412 lines omitted -=- -=- -=-]
xmlconfig(StringIO(template % (
"""
<skin name="zmi" layers="zmi default"
type="Zope.ComponentArchitecture.tests.TestViews.IV" />
<resource name="test"
factory="Zope.ComponentArchitecture.tests.TestViews.RZMI"
layer="zmi"
type="Zope.ComponentArchitecture.tests.TestViews.IV"/>
<resource name="test"
factory="Zope.ComponentArchitecture.tests.TestViews.R1"
type="Zope.ComponentArchitecture.tests.TestViews.IV"/>
"""
)))
self.assertEqual(
queryResource(ob, 'test', Request(IV), None).__class__,
R1)
self.assertEqual(
queryResource(ob, 'test', Request(IV, 'zmi'), None).__class__,
RZMI)
def testFactory(self):
self.assertRaises(ComponentLookupError, createObject, None, 'foo')
xmlconfig(StringIO(template % (
"""
<factory
id="foo"
component="Zope.ComponentArchitecture.tests.TestFactory.f"
/>
<factory
component="Zope.ComponentArchitecture.tests.TestFactory.f"
/>
"""
)))
from zope.component.tests.test_factory import X
self.assertEqual(createObject(None, 'foo').__class__, X)
self.assertEqual(createObject(
None,
'Zope.ComponentArchitecture.tests.TestFactory.f').__class__, X)
def test_suite():
loader=unittest.TestLoader()
return loader.loadTestsFromTestCase(Test)
if __name__=='__main__':
unittest.TextTestRunner().run(test_suite())
=== Added File Zope3/src/zope/app/component/tests/test_interfacefield.py ===
##############################################################################
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""Interface fields tests
$Id: test_interfacefield.py,v 1.1.2.1 2002/12/23 19:31:27 jim Exp $
"""
from unittest import TestCase, TestSuite, main, makeSuite
from zope.interface import Interface
import zope.interface
from zope.app.component.interfacefield import InterfaceField
from zope.schema.interfaces import ValidationError
class Test(TestCase):
def test_validate(self):
field = InterfaceField()
field.validate(Interface)
class I(Interface): pass
field.validate(I)
self.assertRaises(ValidationError, field.validate, InterfaceModule)
class I: pass
self.assertRaises(ValidationError, field.validate, I)
def test_validate_w_type(self):
class I1(Interface): pass
class I2(I1): pass
class I3(I2): pass
field = InterfaceField(type=I2)
field.validate(I2)
field.validate(I3)
self.assertRaises(ValidationError, field.validate, Interface)
self.assertRaises(ValidationError, field.validate, I1)
def test_suite():
return TestSuite((makeSuite(Test),))
if __name__=='__main__':
main(defaultTest='test_suite')
=== Added File Zope3/src/zope/app/component/tests/test_interfaceservice.py ===
from zope.interface import Interface
from unittest import TestCase, TestSuite, main, makeSuite
from zope.testing.cleanup import CleanUp
from zope.app.interfaces.component.globalinterfaceservice \
import IGlobalInterfaceService
from zope.app.component.globalinterfaceservice import InterfaceService
from zope.app.component.globalinterfaceservice import IInterfaceService
from zope.interface.verify import verifyObject
from zope.component.exceptions import ComponentLookupError
from zope.component.service \
import serviceManager, defineService
class B(Interface):
pass
class I(Interface):
"""bah blah
"""
class I2(B):
"""eek
"""
class I3(B):
"""
"""
def one():
"""method one"""
def two():
"""method two"""
class Test(CleanUp, TestCase):
"""Test Interface for InterfaceService Instance.
"""
def testInterfaceVerification(self):
verifyObject(IGlobalInterfaceService, InterfaceService())
def testInterfaceService(self):
service = InterfaceService()
self.assertRaises(ComponentLookupError,
service.getInterface, 'Foo.Bar')
self.assertEqual(service.queryInterface('Foo.Bar'), None)
self.assertEqual(service.queryInterface('Foo.Bar', 42), 42)
self.failIf(service.searchInterface(''))
service.provideInterface('Foo.Bar', I)
self.assertEqual(service.getInterface('Foo.Bar'), I)
self.assertEqual(service.queryInterface('Foo.Bar'), I)
self.assertEqual(list(service.searchInterface('')), [I])
self.assertEqual(list(service.searchInterface(base=B)), [])
service.provideInterface('Foo.Baz', I2)
result = list(service.searchInterface(''))
result.sort()
self.assertEqual(result, [I, I2])
self.assertEqual(list(service.searchInterface('I2')), [I2])
self.assertEqual(list(service.searchInterface('eek')), [I2])
self.assertEqual(list(service.searchInterfaceIds('I2')), ['Foo.Baz'])
self.assertEqual(list(service.searchInterfaceIds('eek')), ['Foo.Baz'])
service.provideInterface('Foo.Bus', I3)
self.assertEqual(list(service.searchInterface('two')), [I3])
self.assertEqual(list(service.searchInterface('two', base=B)), [I3])
r = list(service.searchInterface(base=B))
r.sort()
self.assertEqual(r, [I2, I3])
def test_suite():
return TestSuite((makeSuite(Test),))
if __name__=='__main__':
main(defaultTest='test_suite')
self.assertEqual(list(service.searchInterface('two')), [I3])
def test_suite():
return TestSuite((makeSuite(Test),))
if __name__=='__main__':
main(defaultTest='test_suite')
=== Added File Zope3/src/zope/app/component/tests/test_nextservice.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""
$Id: test_nextservice.py,v 1.1.2.1 2002/12/23 19:31:27 jim Exp $
"""
from unittest import TestCase, TestSuite, main, makeSuite
from zope.interface import Interface
from zope.component.exceptions import ComponentLookupError
from zope.proxy.context import Wrapper
from zope.app.interfaces.services.service \
import IServiceManagerContainer
from zope.component.interfaces import IServiceService
class ServiceManager:
__implements__ = IServiceService
class Folder:
__implements__ = IServiceManagerContainer
sm = None
def getServiceManager(self, default=None):
return self.sm
def hasServiceManager(self):
return self.sm
def setServiceManager(self, sm):
self.sm = sm
root = Folder()
f1 = Wrapper(Folder(), root)
sm1 = ServiceManager()
f1.setServiceManager(sm1)
f2 = Wrapper(Folder(), f1)
sm2 = ServiceManager()
f2.setServiceManager(sm2)
class Test(TestCase):
def test_getServiceManager(self):
from zope.component.service \
import serviceManager
from zope.app.component.hooks import getServiceManager_hook
self.assertEqual(getServiceManager_hook(root), serviceManager)
self.assertEqual(getServiceManager_hook(f1), sm1)
self.assertEqual(getServiceManager_hook(f2), sm2)
def test_getNextServiceManager(self):
from zope.component.service \
import serviceManager
from zope.app.component.nextservice \
import getNextServiceManager
self.assertRaises(ComponentLookupError,
getNextServiceManager, root)
self.assertEqual(getNextServiceManager(Wrapper(sm1, f1)),
serviceManager)
self.assertEqual(getNextServiceManager(Wrapper(sm2, f2)), sm1)
def test_suite():
return makeSuite(Test)
if __name__=='__main__':
main(defaultTest='test_suite')
=== Added File Zope3/src/zope/app/component/tests/test_service.py ===
##############################################################################
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""
$Id: test_service.py,v 1.1.2.1 2002/12/23 19:31:27 jim Exp $
"""
__metaclass__ = type # All classes are new style when run with Python 2.2+
from zope.interface import Interface
class IFooService(Interface):
def foo(): pass
def foobar(): pass
class FooService:
__implements__ = IFooService
def foo(self): return "foo here"
def foobar(self): return "foobarred"
def bar(self): return "you shouldn't get this"
fooService = FooService()
class Foo2(FooService): pass
foo2 = Foo2()
=== Added File Zope3/src/zope/app/component/tests/test_servicedirective.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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
import sys
import os
from cStringIO import StringIO
from zope.exceptions import Forbidden, Unauthorized
from zope.configuration.xmlconfig import testxmlconfig as xmlconfig, XMLConfig
from zope.configuration.exceptions import ConfigurationError
from zope.security.proxy \
import getTestProxyItems, getObject as proxiedObject, ProxyFactory
from zope.component.exceptions import ComponentLookupError
from zope.app.component.tests.test_service \
import IFooService, FooService
import Zope.App.ComponentArchitecture
from zope.component import getService
from zope.app.tests.placelesssetup import PlacelessSetup
template = """<zopeConfigure
xmlns='http://namespaces.zope.org/zope'
xmlns:test='http://www.zope.org/NS/Zope3/test'>
%s
</zopeConfigure>"""
class Test(PlacelessSetup, unittest.TestCase):
# XXX: tests for other directives needed
def setUp(self):
PlacelessSetup.setUp(self)
XMLConfig('meta.zcml', Zope.App.ComponentArchitecture)()
def testServiceConfigNoType(self):
from zope.component.service \
import UndefinedService
self.assertRaises(
UndefinedService,
xmlconfig,
StringIO(template % (
"""
<service
serviceType="Foo"
component="
Zope.App.ComponentArchitecture.tests.TestService.fooService"
/>
"""
)))
def testDuplicateServiceConfig(self):
from zope.configuration.xmlconfig \
import ZopeConflictingConfigurationError
self.assertRaises(
ZopeConflictingConfigurationError,
xmlconfig,
StringIO(template % (
"""
<serviceType id="Foo"
interface="
Zope.App.ComponentArchitecture.tests.TestService.IFooService"
/>
<service
serviceType="Foo"
component="
Zope.App.ComponentArchitecture.tests.TestService.fooService"
/>
<service
serviceType="Foo"
component="
Zope.App.ComponentArchitecture.tests.TestService.foo2"
/>
"""
)))
def testServiceConfig(self):
self.assertRaises(ComponentLookupError, getService, None, "Foo")
xmlconfig(StringIO(template % (
"""
<serviceType id="Foo"
interface="
Zope.App.ComponentArchitecture.tests.TestService.IFooService"
/>
<service
serviceType="Foo"
component="
Zope.App.ComponentArchitecture.tests.TestService.fooService"
/>
"""
)))
service = getService(None, "Foo")
self.assertEqual(service.foo(), "foo here")
self.assertEqual(service.foobar(), "foobarred")
self.assertEqual(service.bar(), "you shouldn't get this")
def testServiceFactoryConfig(self):
self.assertRaises(ComponentLookupError, getService, None, "Foo")
xmlconfig(StringIO(template % (
"""
<serviceType id="Foo"
interface="
Zope.App.ComponentArchitecture.tests.TestService.IFooService"
/>
<service
serviceType="Foo"
factory="
Zope.App.ComponentArchitecture.tests.TestService.FooService"
/>
"""
)))
service = getService(None, "Foo")
self.assertEqual(service.foo(), "foo here")
self.assertEqual(service.foobar(), "foobarred")
self.assertEqual(service.bar(), "you shouldn't get this")
def testPublicProtectedServiceConfig(self):
self.assertRaises(ComponentLookupError, getService, None, "Foo")
xmlconfig(StringIO(template % (
"""
<serviceType id="Foo"
interface="
Zope.App.ComponentArchitecture.tests.TestService.IFooService"
/>
<service
serviceType="Foo"
component="
Zope.App.ComponentArchitecture.tests.TestService.fooService"
permission="Zope.Public"
/>
"""
)))
service = getService(None, "Foo")
service = ProxyFactory(service) # simulate untrusted code!
self.assertEqual(service.foo(), "foo here")
self.assertEqual(service.foobar(), "foobarred")
self.assertRaises(Forbidden, getattr, service, 'bar')
def testProtectedServiceConfig(self):
self.assertRaises(ComponentLookupError, getService, None, "Foo")
xmlconfig(StringIO(template % (
"""
<directives namespace="http://namespaces.zope.org/zope">
<directive name="permission"
attributes="id title description"
handler="
Zope.App.Security.Registries.metaConfigure.definePermission" />
</directives>
<permission id="XXX" title="xxx" />
<serviceType id="Foo"
interface="
Zope.App.ComponentArchitecture.tests.TestService.IFooService"
/>
<service
serviceType="Foo"
component="
Zope.App.ComponentArchitecture.tests.TestService.fooService"
permission="XXX"
/>
"""
)))
# Need to "log someone in" to turn on checks
from zope.security.securitymanagement import newSecurityManager
newSecurityManager('someuser')
service = getService(None, "Foo")
service = ProxyFactory(service) # simulate untrusted code!
self.assertRaises(Unauthorized, getattr, service, 'foo')
self.assertRaises(Unauthorized, getattr, service, 'foobar')
self.assertRaises(Forbidden, getattr, service, 'bar')
def test_suite():
loader=unittest.TestLoader()
return loader.loadTestsFromTestCase(Test)
if __name__=='__main__':
unittest.TextTestRunner().run(test_suite())
=== Added File Zope3/src/zope/app/component/tests/test_servicemanagercontainer.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""
Revision information:
$Id: test_servicemanagercontainer.py,v 1.1.2.1 2002/12/23 19:31:27 jim Exp $
"""
from unittest import TestCase, TestSuite, main, makeSuite
from zope.component.interfaces import IServiceService
from zope.app.interfaces.services.service \
import IServiceManagerContainer
from zope.component.exceptions import ComponentLookupError
from zope.interface.verify import verifyObject
from zope.proxy.context import getbaseobject
class ServiceManager:
__implements__ = IServiceService
############################################################
# Implementation methods for interface
# Zope.ComponentArchitecture.IServiceService.
def getService(self, object, name):
'''See interface IServiceService'''
raise ComponentLookupError(name)
def getServiceDefinitions(self):
'''See interface IServiceService'''
return ()
#
############################################################
class BaseTestServiceManagerContainer:
"""This test is for objects that don't have service managers by
default and that always give back the service manager they were
given.
Subclasses need to define a method, '_Test__new', that takes no
arguments and that returns a new service manager
container that has no service manager."""
def testIServiceManagerContainerVerify(self):
verifyObject(IServiceManagerContainer, self._Test__new())
def testHas(self):
smc=self._Test__new()
self.failIf(smc.hasServiceManager())
smc.setServiceManager(ServiceManager())
self.failUnless(smc.hasServiceManager())
def testGet(self):
smc=self._Test__new()
# since the managers are now wrapped, need to look at base object
self.failUnless(getbaseobject(smc.queryServiceManager()) is None)
self.assertRaises(ComponentLookupError, smc.getServiceManager)
sm=ServiceManager()
smc.setServiceManager(sm)
self.failUnless(getbaseobject(smc.getServiceManager()) is sm)
self.failUnless(getbaseobject(smc.queryServiceManager(self)) is sm)
def testSet(self):
smc=self._Test__new()
self.assertRaises(Exception, smc.setServiceManager, self)
class Test(BaseTestServiceManagerContainer, TestCase):
def _Test__new(self):
from zope.app.services.service \
import ServiceManagerContainer
return ServiceManagerContainer()
def test_suite():
return makeSuite(Test)
if __name__=='__main__':
main(defaultTest='test_suite')