[Checkins] SVN: zope.component/tseaver-test_cleanup/ Split out tests of zope.component.security.
Tres Seaver
cvs-admin at zope.org
Thu Jun 21 21:03:28 UTC 2012
Log message for revision 126987:
Split out tests of zope.component.security.
Changed:
_U zope.component/tseaver-test_cleanup/
U zope.component/tseaver-test_cleanup/src/zope/component/tests/test_doctests.py
A zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py
-=-
Modified: zope.component/tseaver-test_cleanup/src/zope/component/tests/test_doctests.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test_doctests.py 2012-06-21 21:03:20 UTC (rev 126986)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test_doctests.py 2012-06-21 21:03:25 UTC (rev 126987)
@@ -20,19 +20,18 @@
from zope.interface.interfaces import IInterface
from zope.component.testfiles.views import IC
-from zope.component.testfiles.views import IV
-from zope.component.testfiles.views import V1
-from zope.component.testfiles.views import R1
-from zope.component.testfiles.views import IR
from zope.component.testing import setUp
from zope.component.testing import tearDown
-from zope.component.testing import PlacelessSetup
# side effect gets component-based event dispatcher installed.
# we should obviously make this more explicit
import zope.component.event
+class ITestType(IInterface):
+ pass
+
+
class I1(Interface):
pass
@@ -42,9 +41,6 @@
class I3(Interface):
pass
-class ITestType(IInterface):
- pass
-
def noop(*args):
pass
@@ -79,8 +75,7 @@
class ConformsToIComponentLookup(object):
- """This object allows the sitemanager to conform/adapt to
- `IComponentLookup` and thus to itself."""
+ """Allow a dummy sitemanager to conform/adapt to `IComponentLookup`."""
def __init__(self, sitemanager):
self.sitemanager = sitemanager
@@ -161,408 +156,6 @@
raise # TODO verify sanity of a pass on EINTR :-/
self.assertEqual(rc, 0)
-template = """<configure
- xmlns='http://namespaces.zope.org/zope'
- i18n_domain='zope'>
- %s
- </configure>"""
-
-
-class ResourceViewTests(PlacelessSetup, unittest.TestCase):
-
- def setUp(self):
- from zope.configuration.xmlconfig import XMLConfig
- super(ResourceViewTests, self).setUp()
- XMLConfig('meta.zcml', zope.component)()
- XMLConfig('meta.zcml', zope.security)()
-
- def _config(self, zcml, testing=0):
- from cStringIO import StringIO
- from zope.configuration.xmlconfig import xmlconfig
- xmlconfig(StringIO(template % zcml), testing=testing)
-
- def testView(self):
- from zope.component.testfiles.views import Request
- ob = Ob3()
- request = Request(IV)
- self.assertEqual(
- zope.component.queryMultiAdapter((ob, request), name=u'test'), None)
-
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"/>
- ''')
-
- self.assertEqual(
- zope.component.queryMultiAdapter((ob, request),
- name=u'test').__class__,
- V1)
-
-
- def testMultiView(self):
- from zope.component.testfiles.adapter import A1
- from zope.component.testfiles.adapter import A2
- from zope.component.testfiles.adapter import A3
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.adapter.A3"
- for="zope.component.testfiles.views.IC
- zope.component.testfiles.adapter.I1
- zope.component.testfiles.adapter.I2"
- type="zope.component.testfiles.views.IV"/>
- ''')
-
-
- ob = Ob3()
- a1 = A1()
- a2 = A2()
- request = Request(IV)
- view = zope.component.queryMultiAdapter((ob, a1, a2, request),
- name=u'test')
- self.assertEqual(view.__class__, A3)
- self.assertEqual(view.context, (ob, a1, a2, request))
-
-
- def testMultiView_fails_w_multiple_factories(self):
- from zope.configuration.exceptions import ConfigurationError
- self.assertRaises(ConfigurationError,
- self._config,
- '''
- <view name="test"
- factory="zope.component.testfiles.adapter.A3
- zope.component.testfiles.adapter.A2"
- for="zope.component.testfiles.views.IC
- zope.component.testfiles.adapter.I1
- zope.component.testfiles.adapter.I2"
- type="zope.component.testfiles.views.IV"/>
- ''')
-
- def testView_w_multiple_factories(self):
- from zope.component.testfiles.adapter import A1
- from zope.component.testfiles.adapter import A2
- from zope.component.testfiles.adapter import A3
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.adapter.A1
- zope.component.testfiles.adapter.A2
- zope.component.testfiles.adapter.A3
- zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"/>
- ''')
-
- ob = Ob3()
-
- # The view should be a V1 around an A3, around an A2, around
- # an A1, anround ob:
- view = zope.component.queryMultiAdapter((ob, Request(IV)), name=u'test')
- self.assertEqual(view.__class__, V1)
- a3 = view.context
- self.assertEqual(a3.__class__, A3)
- a2 = a3.context[0]
- self.assertEqual(a2.__class__, A2)
- a1 = a2.context[0]
- self.assertEqual(a1.__class__, A1)
- self.assertEqual(a1.context[0], ob)
-
- def testView_fails_w_no_factories(self):
- from zope.configuration.exceptions import ConfigurationError
- self.assertRaises(ConfigurationError,
- self._config,
- '''
- <view name="test"
- factory=""
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"/>
- ''')
-
-
- def testViewThatProvidesAnInterface(self):
- from zope.component.testfiles.views import Request
- ob = Ob3()
- self.assertEqual(
- zope.component.queryMultiAdapter((ob, Request(IR)), IV, u'test'),
- None)
-
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IR"
- />
- ''')
-
- self.assertEqual(
- zope.component.queryMultiAdapter((ob, Request(IR)), IV, u'test'),
- None)
-
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IR"
- provides="zope.component.testfiles.views.IV"
- />
- ''')
-
- v = zope.component.queryMultiAdapter((ob, Request(IR)), IV, u'test')
- self.assertEqual(v.__class__, V1)
-
-
- def testUnnamedViewThatProvidesAnInterface(self):
- from zope.component.testfiles.views import Request
- ob = Ob3()
- self.assertEqual(
- zope.component.queryMultiAdapter((ob, Request(IR)), IV), None)
-
- self._config(
- '''
- <view factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IR"
- />
- ''')
-
- v = zope.component.queryMultiAdapter((ob, Request(IR)), IV)
- self.assertEqual(v, None)
-
- self._config(
- '''
- <view factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IR"
- provides="zope.component.testfiles.views.IV"
- />
- ''')
-
- v = zope.component.queryMultiAdapter((ob, Request(IR)), IV)
- self.assertEqual(v.__class__, V1)
-
- def testViewHavingARequiredClass(self):
- from zope.component.interfaces import ComponentLookupError
- from zope.component.testfiles.adapter import A1
- from zope.component.testfiles.components import Content
- from zope.component.testfiles.components import IContent
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view
- for="zope.component.testfiles.components.Content"
- type="zope.component.testfiles.views.IR"
- factory="zope.component.testfiles.adapter.A1"
- />
- ''')
-
- content = Content()
- a1 = zope.component.getMultiAdapter((content, Request(IR)))
- self.assert_(isinstance(a1, A1))
-
- @implementer(IContent)
- class MyContent:
- pass
-
- self.assertRaises(ComponentLookupError, zope.component.getMultiAdapter,
- (MyContent(), Request(IR)))
-
- def testInterfaceProtectedView(self):
- from zope.security.checker import ProxyFactory
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.Public"
- allowed_interface="zope.component.testfiles.views.IV"
- />
- ''')
-
- v = ProxyFactory(zope.component.getMultiAdapter((Ob3(), Request(IV)),
- name='test'))
- self.assertEqual(v.index(), 'V1 here')
- self.assertRaises(Exception, getattr, v, 'action')
-
- def testAttributeProtectedView(self):
- from zope.security.checker import ProxyFactory
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.Public"
- allowed_attributes="action"
- />
- ''')
-
- v = ProxyFactory(zope.component.getMultiAdapter((Ob3(), Request(IV)),
- name='test'))
- self.assertEqual(v.action(), 'done')
- self.assertRaises(Exception, getattr, v, 'index')
-
- def testInterfaceAndAttributeProtectedView(self):
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.Public"
- allowed_attributes="action"
- allowed_interface="zope.component.testfiles.views.IV"
- />
- ''')
-
- v = zope.component.getMultiAdapter((Ob3(), Request(IV)), name='test')
- self.assertEqual(v.index(), 'V1 here')
- self.assertEqual(v.action(), 'done')
-
- def testDuplicatedInterfaceAndAttributeProtectedView(self):
- from zope.component.testfiles.views import Request
- self._config(
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.Public"
- allowed_attributes="action index"
- allowed_interface="zope.component.testfiles.views.IV"
- />
- ''')
-
- v = zope.component.getMultiAdapter((Ob3(), Request(IV)), name='test')
- self.assertEqual(v.index(), 'V1 here')
- self.assertEqual(v.action(), 'done')
-
- def testIncompleteProtectedViewNoPermission(self):
- from zope.configuration.exceptions import ConfigurationError
- self.assertRaises(
- ConfigurationError,
- self._config,
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- allowed_attributes="action index"
- />
- ''',
- )
-
- def testViewUndefinedPermission(self):
- self.assertRaises(ValueError,
- self._config,
- '''
- <view name="test"
- factory="zope.component.testfiles.views.V1"
- for="zope.component.testfiles.views.IC"
- type="zope.component.testfiles.views.IV"
- permission="zope.UndefinedPermission"
- allowed_attributes="action index"
- allowed_interface="zope.component.testfiles.views.IV"
- />
- ''',
- testing=1)
-
- def testResource(self):
- from zope.component.testfiles.views import Request
- ob = Ob3()
- self.assertEqual(
- zope.component.queryAdapter(Request(IV), name=u'test'), None)
- self._config(
- '''
- <resource name="test"
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IV"/>
- ''')
-
- self.assertEqual(
- zope.component.queryAdapter(Request(IV), name=u'test').__class__,
- R1)
-
- def testResourceThatProvidesAnInterface(self):
- from zope.component.testfiles.views import Request
- ob = Ob3()
- self.assertEqual(zope.component.queryAdapter(Request(IR), IV, u'test'),
- None)
-
- self._config(
- '''
- <resource
- name="test"
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IR"
- />
- ''')
-
- v = zope.component.queryAdapter(Request(IR), IV, name=u'test')
- self.assertEqual(v, None)
-
- self._config(
- '''
- <resource
- name="test"
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IR"
- provides="zope.component.testfiles.views.IV"
- />
- ''')
-
- v = zope.component.queryAdapter(Request(IR), IV, name=u'test')
- self.assertEqual(v.__class__, R1)
-
- def testUnnamedResourceThatProvidesAnInterface(self):
- from zope.component.testfiles.views import Request
- ob = Ob3()
- self.assertEqual(zope.component.queryAdapter(Request(IR), IV), None)
-
- self._config(
- '''
- <resource
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IR"
- />
- ''')
-
- v = zope.component.queryAdapter(Request(IR), IV)
- self.assertEqual(v, None)
-
- self._config(
- '''
- <resource
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IR"
- provides="zope.component.testfiles.views.IV"
- />
- ''')
-
- v = zope.component.queryAdapter(Request(IR), IV)
- self.assertEqual(v.__class__, R1)
-
- def testResourceUndefinedPermission(self):
- self.assertRaises(ValueError,
- self._config,
- '''
- <resource name="test"
- factory="zope.component.testfiles.views.R1"
- type="zope.component.testfiles.views.IV"
- permission="zope.UndefinedPermission"/>
- ''',
- testing=1)
-
def clearZCML(test=None):
from zope.configuration.xmlconfig import XMLConfig
import zope.component
@@ -578,5 +171,4 @@
setUp=setUp, tearDown=tearDown),
doctest.DocTestSuite('zope.component.nexttesting'),
unittest.makeSuite(StandaloneTests),
- unittest.makeSuite(ResourceViewTests),
))
Added: zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py (rev 0)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py 2012-06-21 21:03:25 UTC (rev 126987)
@@ -0,0 +1,439 @@
+##############################################################################
+#
+# Copyright (c) 2012 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.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.
+#
+##############################################################################
+"""Pure-Python hookable tests
+"""
+import unittest
+
+from zope.component.testing import PlacelessSetup
+
+from zope.component.testfiles.views import IV
+from zope.component.testfiles.views import V1
+from zope.component.testfiles.views import R1
+from zope.component.testfiles.views import IR
+
+from zope.component.tests.test_doctests import Ob3 #XXX
+
+
+_ZCML_TEMPLATE = """<configure
+ xmlns='http://namespaces.zope.org/zope'
+ i18n_domain='zope'>
+ %s
+ </configure>"""
+
+
+class ResourceViewTests(PlacelessSetup, unittest.TestCase):
+
+ def setUp(self):
+ from zope import component
+ from zope import security
+ from zope.configuration.xmlconfig import XMLConfig
+ super(ResourceViewTests, self).setUp()
+ XMLConfig('meta.zcml', component)()
+ XMLConfig('meta.zcml', security)()
+
+ def _config(self, zcml, testing=0):
+ from cStringIO import StringIO
+ from zope.configuration.xmlconfig import xmlconfig
+ xmlconfig(StringIO(_ZCML_TEMPLATE % zcml), testing=testing)
+
+ def testView(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.testfiles.views import Request
+ ob = Ob3()
+ request = Request(IV)
+ self.assertEqual(queryMultiAdapter((ob, request), name=u'test'), None)
+
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"/>
+ ''')
+
+ view = queryMultiAdapter((ob, request), name=u'test')
+ self.assertEqual(view.__class__, V1)
+
+ def testMultiView(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.testfiles.adapter import A1
+ from zope.component.testfiles.adapter import A2
+ from zope.component.testfiles.adapter import A3
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.adapter.A3"
+ for="zope.component.testfiles.views.IC
+ zope.component.testfiles.adapter.I1
+ zope.component.testfiles.adapter.I2"
+ type="zope.component.testfiles.views.IV"/>
+ ''')
+
+
+ ob = Ob3()
+ a1 = A1()
+ a2 = A2()
+ request = Request(IV)
+ view = queryMultiAdapter((ob, a1, a2, request), name=u'test')
+ self.assertEqual(view.__class__, A3)
+ self.assertEqual(view.context, (ob, a1, a2, request))
+
+
+ def testMultiView_fails_w_multiple_factories(self):
+ from zope.configuration.exceptions import ConfigurationError
+ self.assertRaises(ConfigurationError,
+ self._config,
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.adapter.A3
+ zope.component.testfiles.adapter.A2"
+ for="zope.component.testfiles.views.IC
+ zope.component.testfiles.adapter.I1
+ zope.component.testfiles.adapter.I2"
+ type="zope.component.testfiles.views.IV"/>
+ ''')
+
+ def testView_w_multiple_factories(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.testfiles.adapter import A1
+ from zope.component.testfiles.adapter import A2
+ from zope.component.testfiles.adapter import A3
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.adapter.A1
+ zope.component.testfiles.adapter.A2
+ zope.component.testfiles.adapter.A3
+ zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"/>
+ ''')
+
+ ob = Ob3()
+
+ # The view should be a V1 around an A3, around an A2, around
+ # an A1, anround ob:
+ view = queryMultiAdapter((ob, Request(IV)), name=u'test')
+ self.assertEqual(view.__class__, V1)
+ a3 = view.context
+ self.assertEqual(a3.__class__, A3)
+ a2 = a3.context[0]
+ self.assertEqual(a2.__class__, A2)
+ a1 = a2.context[0]
+ self.assertEqual(a1.__class__, A1)
+ self.assertEqual(a1.context[0], ob)
+
+ def testView_fails_w_no_factories(self):
+ from zope.configuration.exceptions import ConfigurationError
+ self.assertRaises(ConfigurationError,
+ self._config,
+ '''
+ <view name="test"
+ factory=""
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"/>
+ ''')
+
+
+ def testViewThatProvidesAnInterface(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.testfiles.views import Request
+ ob = Ob3()
+ self.assertEqual(queryMultiAdapter((ob, Request(IR)), IV, u'test'),
+ None)
+
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IR"
+ />
+ ''')
+
+ self.assertEqual(queryMultiAdapter((ob, Request(IR)), IV, u'test'),
+ None)
+
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IR"
+ provides="zope.component.testfiles.views.IV"
+ />
+ ''')
+
+ v = queryMultiAdapter((ob, Request(IR)), IV, u'test')
+ self.assertEqual(v.__class__, V1)
+
+
+ def testUnnamedViewThatProvidesAnInterface(self):
+ from zope.component import queryMultiAdapter
+ from zope.component.testfiles.views import Request
+ ob = Ob3()
+ self.assertEqual(queryMultiAdapter((ob, Request(IR)), IV), None)
+
+ self._config(
+ '''
+ <view factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IR"
+ />
+ ''')
+
+ v = queryMultiAdapter((ob, Request(IR)), IV)
+ self.assertEqual(v, None)
+
+ self._config(
+ '''
+ <view factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IR"
+ provides="zope.component.testfiles.views.IV"
+ />
+ ''')
+
+ v = queryMultiAdapter((ob, Request(IR)), IV)
+ self.assertEqual(v.__class__, V1)
+
+ def testViewHavingARequiredClass(self):
+ from zope.interface import implementer
+ from zope.component import getMultiAdapter
+ from zope.component.interfaces import ComponentLookupError
+ from zope.component.testfiles.adapter import A1
+ from zope.component.testfiles.components import Content
+ from zope.component.testfiles.components import IContent
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view
+ for="zope.component.testfiles.components.Content"
+ type="zope.component.testfiles.views.IR"
+ factory="zope.component.testfiles.adapter.A1"
+ />
+ ''')
+
+ content = Content()
+ a1 = getMultiAdapter((content, Request(IR)))
+ self.assert_(isinstance(a1, A1))
+
+ @implementer(IContent)
+ class MyContent:
+ pass
+
+ self.assertRaises(ComponentLookupError,
+ getMultiAdapter, (MyContent(), Request(IR)))
+
+ def testInterfaceProtectedView(self):
+ from zope.component import getMultiAdapter
+ from zope.component.testfiles.views import Request
+ from zope.security.checker import ProxyFactory
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.Public"
+ allowed_interface="zope.component.testfiles.views.IV"
+ />
+ ''')
+
+ v = ProxyFactory(getMultiAdapter((Ob3(), Request(IV)), name='test'))
+ self.assertEqual(v.index(), 'V1 here')
+ self.assertRaises(Exception, getattr, v, 'action')
+
+ def testAttributeProtectedView(self):
+ from zope.component import getMultiAdapter
+ from zope.component.testfiles.views import Request
+ from zope.security.checker import ProxyFactory
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.Public"
+ allowed_attributes="action"
+ />
+ ''')
+
+ v = ProxyFactory(getMultiAdapter((Ob3(), Request(IV)), name='test'))
+ self.assertEqual(v.action(), 'done')
+ self.assertRaises(Exception, getattr, v, 'index')
+
+ def testInterfaceAndAttributeProtectedView(self):
+ from zope.component import getMultiAdapter
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.Public"
+ allowed_attributes="action"
+ allowed_interface="zope.component.testfiles.views.IV"
+ />
+ ''')
+
+ v = getMultiAdapter((Ob3(), Request(IV)), name='test')
+ self.assertEqual(v.index(), 'V1 here')
+ self.assertEqual(v.action(), 'done')
+
+ def testDuplicatedInterfaceAndAttributeProtectedView(self):
+ from zope.component import getMultiAdapter
+ from zope.component.testfiles.views import Request
+ self._config(
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.Public"
+ allowed_attributes="action index"
+ allowed_interface="zope.component.testfiles.views.IV"
+ />
+ ''')
+
+ v = getMultiAdapter((Ob3(), Request(IV)), name='test')
+ self.assertEqual(v.index(), 'V1 here')
+ self.assertEqual(v.action(), 'done')
+
+ def testIncompleteProtectedViewNoPermission(self):
+ from zope.configuration.exceptions import ConfigurationError
+ self.assertRaises(
+ ConfigurationError,
+ self._config,
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ allowed_attributes="action index"
+ />
+ ''',
+ )
+
+ def testViewUndefinedPermission(self):
+ self.assertRaises(ValueError,
+ self._config,
+ '''
+ <view name="test"
+ factory="zope.component.testfiles.views.V1"
+ for="zope.component.testfiles.views.IC"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.UndefinedPermission"
+ allowed_attributes="action index"
+ allowed_interface="zope.component.testfiles.views.IV"
+ />
+ ''',
+ testing=1)
+
+ def testResource(self):
+ from zope.component import queryAdapter
+ from zope.component.testfiles.views import Request
+ ob = Ob3()
+ self.assertEqual(
+ queryAdapter(Request(IV), name=u'test'), None)
+ self._config(
+ '''
+ <resource name="test"
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IV"/>
+ ''')
+
+ self.assertEqual(
+ queryAdapter(Request(IV), name=u'test').__class__,
+ R1)
+
+ def testResourceThatProvidesAnInterface(self):
+ from zope.component import queryAdapter
+ from zope.component.testfiles.views import Request
+ ob = Ob3()
+ self.assertEqual(queryAdapter(Request(IR), IV, u'test'),
+ None)
+
+ self._config(
+ '''
+ <resource
+ name="test"
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IR"
+ />
+ ''')
+
+ v = queryAdapter(Request(IR), IV, name=u'test')
+ self.assertEqual(v, None)
+
+ self._config(
+ '''
+ <resource
+ name="test"
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IR"
+ provides="zope.component.testfiles.views.IV"
+ />
+ ''')
+
+ v = queryAdapter(Request(IR), IV, name=u'test')
+ self.assertEqual(v.__class__, R1)
+
+ def testUnnamedResourceThatProvidesAnInterface(self):
+ from zope.component import queryAdapter
+ from zope.component.testfiles.views import Request
+ ob = Ob3()
+ self.assertEqual(queryAdapter(Request(IR), IV), None)
+
+ self._config(
+ '''
+ <resource
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IR"
+ />
+ ''')
+
+ v = queryAdapter(Request(IR), IV)
+ self.assertEqual(v, None)
+
+ self._config(
+ '''
+ <resource
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IR"
+ provides="zope.component.testfiles.views.IV"
+ />
+ ''')
+
+ v = queryAdapter(Request(IR), IV)
+ self.assertEqual(v.__class__, R1)
+
+ def testResourceUndefinedPermission(self):
+ self.assertRaises(ValueError,
+ self._config,
+ '''
+ <resource name="test"
+ factory="zope.component.testfiles.views.R1"
+ type="zope.component.testfiles.views.IV"
+ permission="zope.UndefinedPermission"/>
+ ''',
+ testing=1)
+
+def test_suite():
+ return unittest.TestSuite((
+ unittest.makeSuite(ResourceViewTests),
+ ))
More information about the checkins
mailing list