[Checkins] SVN: zope.app.http/trunk/src/zope/app/http/tests/test_options.py Add a couple of tests to the OPTIONS verb

Lorenzo Gil lgs at sicem.biz
Tue Apr 22 15:27:01 EDT 2008


Log message for revision 85612:
  Add a couple of tests to the OPTIONS verb

Changed:
  A   zope.app.http/trunk/src/zope/app/http/tests/test_options.py

-=-
Added: zope.app.http/trunk/src/zope/app/http/tests/test_options.py
===================================================================
--- zope.app.http/trunk/src/zope/app/http/tests/test_options.py	                        (rev 0)
+++ zope.app.http/trunk/src/zope/app/http/tests/test_options.py	2008-04-22 19:27:01 UTC (rev 85612)
@@ -0,0 +1,77 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Corporation 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.
+#
+##############################################################################
+"""Test HTTP OPTIONS verb
+
+$Id$
+"""
+from unittest import TestCase, TestSuite, makeSuite
+
+import zope.interface
+
+from zope.app.testing.placelesssetup import PlacelessSetup
+from zope.publisher.browser import IBrowserRequest
+from zope.publisher.browser import TestRequest
+
+import zope.app.http.options
+
+
+class IDeletable(zope.interface.Interface):
+    "Marker interface that says that something understand the DELETE method"
+
+
+class Deletable(object):
+    "Rocket science implementation of IDeletable"
+    zope.interface.implements(IDeletable)
+
+
+class DeleteView(object):
+    "A view for a deletable object"
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+
+class TestOptions(PlacelessSetup, TestCase):
+
+    def testDefaultMethods(self):
+        dumbObj = object()
+
+        request = TestRequest()
+        options = zope.app.http.options.OPTIONS(dumbObj, request)
+
+        self.assertEqual(options.OPTIONS(), '')
+        getHeader = request.response.getHeader
+        self.assertEqual(getHeader('Allow'), 'GET, HEAD, POST')
+        self.assertEqual(getHeader('DAV', literal=True), '1,2')
+        self.assertEqual(getHeader('MS-Author-Via', literal=True), 'DAV')
+        self.assertEqual(request.response.getStatus(), 200)
+
+    def testExtendedMethods(self):
+        gst = zope.component.getGlobalSiteManager()
+        gst.registerAdapter(DeleteView, (IDeletable, IBrowserRequest),
+                            zope.interface.Interface, 'PUT')
+
+        deletableObject = Deletable()
+
+        request = TestRequest()
+        options = zope.app.http.options.OPTIONS(deletableObject, request)
+        self.assertEqual(options.OPTIONS(), '')
+        getHeader = request.response.getHeader
+        self.assertEqual(getHeader('Allow'), 'GET, HEAD, POST, PUT')
+
+
+def test_suite():
+    return TestSuite((
+        makeSuite(TestOptions),
+        ))


Property changes on: zope.app.http/trunk/src/zope/app/http/tests/test_options.py
___________________________________________________________________
Name: svn:keywords
   + Id



More information about the Checkins mailing list