[Checkins] SVN: gocept.xmlrpcskin/trunk/ Write a test that the xmlrpcview registration is constrained to the layer

Wolfgang Schnerring wosc at wosc.de
Tue Jul 26 05:29:09 EDT 2011


Log message for revision 122355:
  Write a test that the xmlrpcview registration is constrained to the layer
  

Changed:
  U   gocept.xmlrpcskin/trunk/README.txt
  U   gocept.xmlrpcskin/trunk/buildout.cfg
  U   gocept.xmlrpcskin/trunk/setup.py
  U   gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/ftesting.zcml
  U   gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/testing.py
  U   gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/configure.zcml
  A   gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/interfaces.py
  U   gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/view.py
  U   gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/test_endtoend.py

-=-
Modified: gocept.xmlrpcskin/trunk/README.txt
===================================================================
--- gocept.xmlrpcskin/trunk/README.txt	2011-07-26 09:20:18 UTC (rev 122354)
+++ gocept.xmlrpcskin/trunk/README.txt	2011-07-26 09:29:09 UTC (rev 122355)
@@ -12,4 +12,12 @@
 - zope.traversing (removed in r82482)
 - zope.publisher (removed in r82493)
 
-XXX document usage
+
+Usage
+=====
+
+Include the necessary ZCML::
+
+    <include package="gocept.xmlrpcskin" file="meta.zcml" />
+    <include package="gocept.xmlrpcskin" />
+

Modified: gocept.xmlrpcskin/trunk/buildout.cfg
===================================================================
--- gocept.xmlrpcskin/trunk/buildout.cfg	2011-07-26 09:20:18 UTC (rev 122354)
+++ gocept.xmlrpcskin/trunk/buildout.cfg	2011-07-26 09:29:09 UTC (rev 122355)
@@ -11,3 +11,6 @@
 [test]
 recipe = zc.recipe.testrunner
 eggs = ${buildout:package} [test]
+
+[versions]
+unittest2 = 0.5.1

Modified: gocept.xmlrpcskin/trunk/setup.py
===================================================================
--- gocept.xmlrpcskin/trunk/setup.py	2011-07-26 09:20:18 UTC (rev 122354)
+++ gocept.xmlrpcskin/trunk/setup.py	2011-07-26 09:29:09 UTC (rev 122355)
@@ -45,6 +45,7 @@
         'zope.traversing',
     ],
     extras_require=dict(test=[
+        'unittest2',
         'zope.app.appsetup',
         'zope.app.publication',
         'zope.app.testing',

Modified: gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/ftesting.zcml
===================================================================
--- gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/ftesting.zcml	2011-07-26 09:20:18 UTC (rev 122354)
+++ gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/ftesting.zcml	2011-07-26 09:29:09 UTC (rev 122355)
@@ -38,9 +38,4 @@
   <grant permission="zope.View"
          role="zope.Anonymous" />
 
-  <!-- ourselves -->
-
-  <include package="gocept.xmlrpcskin" file="meta.zcml" />
-  <include package="gocept.xmlrpcskin" />
-
 </configure>

Modified: gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/testing.py
===================================================================
--- gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/testing.py	2011-07-26 09:20:18 UTC (rev 122354)
+++ gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/testing.py	2011-07-26 09:29:09 UTC (rev 122355)
@@ -13,6 +13,7 @@
 ##############################################################################
 
 import pkg_resources
+import unittest2
 import zope.app.testing.functional
 
 
@@ -21,6 +22,7 @@
     __name__, 'layer', allow_teardown=True)
 
 
-class TestCase(zope.app.testing.functional.FunctionalTestCase):
+class TestCase(zope.app.testing.functional.FunctionalTestCase,
+               unittest2.TestCase):
 
     layer = layer

Modified: gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/configure.zcml
===================================================================
--- gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/configure.zcml	2011-07-26 09:20:18 UTC (rev 122354)
+++ gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/configure.zcml	2011-07-26 09:29:09 UTC (rev 122355)
@@ -1,14 +1,36 @@
 <configure
     xmlns="http://namespaces.zope.org/zope"
-    xmlns:browser="http://namespaces.zope.org/browser"
+    xmlns:gocept="http://namespaces.gocept.com/zcml"
     >
 
-  <include package="zope.browserpage" file="meta.zcml" />
+  <include package="zope.component" file="meta.zcml" />
+  <include package="gocept.xmlrpcskin" file="meta.zcml" />
 
-  <browser:page
-      for="*"
-      name="index.html"
-      class=".view.Index"
-      permission="zope.Public"
-      />
+  <include package="gocept.xmlrpcskin" />
+
+  <interface
+    interface=".interfaces.IFooLayer"
+    type="gocept.xmlrpcskin.interfaces.IXMLRPCSkinType"
+    name="foo"
+    />
+
+  <gocept:xmlrpcview
+    for="*"
+    class=".view.Example"
+    permission="zope.Public"
+    methods="
+    all_layers
+    "
+    />
+
+  <gocept:xmlrpcview
+    for="*"
+    class=".view.Example"
+    layer=".interfaces.IFooLayer"
+    permission="zope.Public"
+    methods="
+    foo_layer
+    "
+    />
+
 </configure>

Added: gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/interfaces.py
===================================================================
--- gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/interfaces.py	                        (rev 0)
+++ gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/interfaces.py	2011-07-26 09:29:09 UTC (rev 122355)
@@ -0,0 +1,19 @@
+#############################################################################
+#
+# Copyright (c) 2011 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.
+#
+##############################################################################
+
+import zope.publisher.interfaces.xmlrpc
+
+
+class IFooLayer(zope.publisher.interfaces.xmlrpc.IXMLRPCRequest):
+    pass

Modified: gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/view.py
===================================================================
--- gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/view.py	2011-07-26 09:20:18 UTC (rev 122354)
+++ gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/fixture/view.py	2011-07-26 09:29:09 UTC (rev 122355)
@@ -12,8 +12,13 @@
 #
 ##############################################################################
 
+import zope.app.publisher.xmlrpc
 
-class Index(object):
 
-    def __call__(self):
-        return 'Hello, world!'
+class Example(zope.app.publisher.xmlrpc.XMLRPCView):
+
+    def all_layers(self):
+        return dict(returncode=1)
+
+    def foo_layer(self):
+        return dict(returncode=2)

Modified: gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/test_endtoend.py
===================================================================
--- gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/test_endtoend.py	2011-07-26 09:20:18 UTC (rev 122354)
+++ gocept.xmlrpcskin/trunk/src/gocept/xmlrpcskin/tests/test_endtoend.py	2011-07-26 09:29:09 UTC (rev 122355)
@@ -14,6 +14,7 @@
 
 import gocept.xmlrpcskin.testing
 import gocept.xmlrpcskin.tests.fixture
+import zope.app.testing.xmlrpc
 import zope.configuration.xmlconfig
 import zope.testbrowser.testing
 
@@ -24,7 +25,12 @@
         zope.configuration.xmlconfig.file(
             'configure.zcml', gocept.xmlrpcskin.tests.fixture)
 
-        b = zope.testbrowser.testing.Browser()
-        b.handleErrors = False
-        b.open('http://localhost/index.html')
-        self.assertEqual('Hello, world!', b.contents)
+        all = zope.app.testing.xmlrpc.ServerProxy('http://localhost/')
+        foo = zope.app.testing.xmlrpc.ServerProxy(
+            'http://localhost/++skin++foo')
+
+        self.assertEqual(dict(returncode=1), all.all_layers())
+        self.assertEqual(dict(returncode=1), foo.all_layers())
+        self.assertEqual(dict(returncode=2), foo.foo_layer())
+        self.assertRaisesRegexp(
+            Exception, 'NotFound.*foo_layer', all.foo_layer)



More information about the checkins mailing list