[Checkins] SVN: zope.component/tseaver-test_cleanup/ Move ResourceViewTests to z.c.tests.test_zcml.

Tres Seaver cvs-admin at zope.org
Tue Jun 26 00:27:18 UTC 2012


Log message for revision 127089:
  Move ResourceViewTests to z.c.tests.test_zcml.

Changed:
  _U  zope.component/tseaver-test_cleanup/
  U   zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py
  U   zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py

-=-
Modified: zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py	2012-06-26 00:27:09 UTC (rev 127088)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test_security.py	2012-06-26 00:27:15 UTC (rev 127089)
@@ -15,9 +15,7 @@
 """
 import unittest
 
-from zope.component.testing import PlacelessSetup
 
-
 class PermissionProxyTests(unittest.TestCase):
 
     def _getTargetClass(self):
@@ -172,456 +170,10 @@
         self.assertEqual(getTestProxyItems(foo), [('bar', 'testing')])
 
 
-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.tests.examples import Ob3
-        from zope.component.testfiles.views import IV
-        from zope.component.testfiles.views import Request
-        from zope.component.testfiles.views import V1
-        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.tests.examples import Ob3
-        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 IV
-        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.tests.examples import Ob3
-        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 IV
-        from zope.component.testfiles.views import Request
-        from zope.component.testfiles.views import V1
-        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.tests.examples import Ob3
-        from zope.component.testfiles.views import IR
-        from zope.component.testfiles.views import IV
-        from zope.component.testfiles.views import Request
-        from zope.component.testfiles.views import V1
-        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.tests.examples import Ob3
-        from zope.component.testfiles.views import IR
-        from zope.component.testfiles.views import IV
-        from zope.component.testfiles.views import Request
-        from zope.component.testfiles.views import V1
-        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 IR
-        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.security.checker import ProxyFactory
-        from zope.component import getMultiAdapter
-        from zope.component.tests.examples import Ob3
-        from zope.component.testfiles.views import IV
-        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(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.tests.examples import Ob3
-        from zope.component.testfiles.views import IV
-        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.tests.examples import Ob3
-        from zope.component.testfiles.views import IV
-        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.tests.examples import Ob3
-        from zope.component.testfiles.views import IV
-        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.tests.examples import Ob3
-        from zope.component.testfiles.views import IV
-        from zope.component.testfiles.views import Request
-        from zope.component.testfiles.views import R1
-        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.tests.examples import Ob3
-        from zope.component.testfiles.views import IR
-        from zope.component.testfiles.views import IV
-        from zope.component.testfiles.views import Request
-        from zope.component.testfiles.views import R1
-        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.tests.examples import Ob3
-        from zope.component.testfiles.views import IR
-        from zope.component.testfiles.views import IV
-        from zope.component.testfiles.views import Request
-        from zope.component.testfiles.views import R1
-        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)
-
-
-_ZCML_TEMPLATE = """<configure
-   xmlns='http://namespaces.zope.org/zope'
-   i18n_domain='zope'>
-   %s
-   </configure>"""
-
-
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(PermissionProxyTests),
         unittest.makeSuite(Test__checker),
         unittest.makeSuite(Test_proxify),
         unittest.makeSuite(Test_protectedFactory),
-        unittest.makeSuite(ResourceViewTests),
     ))

Modified: zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py
===================================================================
--- zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py	2012-06-26 00:27:09 UTC (rev 127088)
+++ zope.component/tseaver-test_cleanup/src/zope/component/tests/test_zcml.py	2012-06-26 00:27:15 UTC (rev 127089)
@@ -15,7 +15,9 @@
 """
 import unittest
 
+from zope.component.testing import PlacelessSetup
 
+
 class Test_handler(unittest.TestCase):
 
     def _callFUT(self, *args, **kw):
@@ -39,7 +41,453 @@
             getSiteManager.reset()
 
 
+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.tests.examples import Ob3
+        from zope.component.testfiles.views import IV
+        from zope.component.testfiles.views import Request
+        from zope.component.testfiles.views import V1
+        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.tests.examples import Ob3
+        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 IV
+        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.tests.examples import Ob3
+        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 IV
+        from zope.component.testfiles.views import Request
+        from zope.component.testfiles.views import V1
+        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.tests.examples import Ob3
+        from zope.component.testfiles.views import IR
+        from zope.component.testfiles.views import IV
+        from zope.component.testfiles.views import Request
+        from zope.component.testfiles.views import V1
+        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.tests.examples import Ob3
+        from zope.component.testfiles.views import IR
+        from zope.component.testfiles.views import IV
+        from zope.component.testfiles.views import Request
+        from zope.component.testfiles.views import V1
+        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 IR
+        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.security.checker import ProxyFactory
+        from zope.component import getMultiAdapter
+        from zope.component.tests.examples import Ob3
+        from zope.component.testfiles.views import IV
+        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(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.tests.examples import Ob3
+        from zope.component.testfiles.views import IV
+        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.tests.examples import Ob3
+        from zope.component.testfiles.views import IV
+        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.tests.examples import Ob3
+        from zope.component.testfiles.views import IV
+        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.tests.examples import Ob3
+        from zope.component.testfiles.views import IV
+        from zope.component.testfiles.views import Request
+        from zope.component.testfiles.views import R1
+        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.tests.examples import Ob3
+        from zope.component.testfiles.views import IR
+        from zope.component.testfiles.views import IV
+        from zope.component.testfiles.views import Request
+        from zope.component.testfiles.views import R1
+        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.tests.examples import Ob3
+        from zope.component.testfiles.views import IR
+        from zope.component.testfiles.views import IV
+        from zope.component.testfiles.views import Request
+        from zope.component.testfiles.views import R1
+        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)
+
+
+_ZCML_TEMPLATE = """<configure
+   xmlns='http://namespaces.zope.org/zope'
+   i18n_domain='zope'>
+   %s
+   </configure>"""
+
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(Test_handler),
+        unittest.makeSuite(ResourceViewTests),
     ))



More information about the checkins mailing list