[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