[Repoze-dev] Repoze CVS: base.py test_helper.py test_root.py
Chris McDonough
chrism at agendaless.com
Thu Sep 13 05:47:55 UTC 2007
Update of /home/repoze/cvs/repoze.zope2/repoze/zope2/tests
In directory laguna.palladion.com:/tmp/cvs-serv17421/repoze/zope2/tests
Modified Files:
test_helper.py
Added Files:
base.py test_root.py
Log Message:
Implement replacement root object.
Factor out dummy modules into base.
More tests for obob_helper, and some refactoring.
Index: test_helper.py
===================================================================
RCS file: /home/repoze/cvs/repoze.zope2/repoze/zope2/tests/test_helper.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- test_helper.py 13 Sep 2007 00:58:05 -0000 1.3
+++ test_helper.py 13 Sep 2007 05:47:53 -0000 1.4
@@ -1,19 +1,19 @@
import unittest
+import os
+
+from repoze.zope2.tests.base import DummyHelper
+from repoze.zope2.tests.base import _makeEnviron
+from repoze.zope2.tests.base import DummyConnection
+from repoze.zope2.tests.base import DummyRequest
+from repoze.zope2.tests.base import DummyPublishedObject
class TestTopLevelFuncs(unittest.TestCase):
def test_get_root(self):
from repoze.zope2.obob_helper import get_root
- helper = DummyHelper(environ={}, config={})
- app = get_root(helper, dummy_configure)
- self.failUnless(isinstance(app, DummyApplication))
-
- def test_get_connection(self):
- from repoze.zope2.obob_helper import get_connection
- helper = DummyHelper(environ={}, config={})
- conn = get_connection(helper, dummy_configure)
- self.assertEqual(conn.debuginfo, helper.environ)
- self.failUnless(helper.environ['tm.cleanup'].has_key('closeconn'),
- helper.environ)
+ dummyconfig = {}
+ helper = DummyHelper(dummyconfig)
+ root = get_root(helper)
+ self.assertEqual(root, dummyconfig)
def test_makeRequest(self):
from repoze.zope2 import makeRequest
@@ -22,14 +22,6 @@
self.assertEqual(request.stdin, environ['wsgi.input'])
self.assertNotEqual(request.response, None)
-class CloserTests(unittest.TestCase):
- def test_Closer(self):
- from repoze.zope2 import Closer
- jar = DummyConnection('whatever')
- a = Closer(jar)
- del a
- self.assertEqual(jar.closed, True)
-
class TestZope2ObobHelper(unittest.TestCase):
def tearDown(self):
from zope.security.management import endInteraction
@@ -44,19 +36,23 @@
def _makeOne(self, env=None):
if env is None:
env = _makeEnviron()
- return self._getTargetClass()(env)
+ helper = self._getTargetClass()(env)
+ helper.request = DummyRequest(env)
+ return helper
def test_ctor(self):
environ = {}
helper = self._makeOne(environ)
self.assertEqual(helper.environ, environ)
- self.assertEqual(helper.request, None)
def test_setup(self):
from zope.security.management import queryInteraction
- helper = self._makeOne()
+ env = _makeEnviron()
+ env['SERVER_NAME'] = 'www.example.com'
+ env['SERVER_PORT'] = '80'
+ helper = self._makeOne(env)
helper.setup()
- self.assertEqual(helper.request['URL'], 'http://localhost:8080')
+ self.assertEqual(helper.request['URL'], 'http://www.example.com')
self.assertNotEqual(queryInteraction(), None)
def test_teardown(self):
@@ -71,83 +67,77 @@
def test_invoke(self):
published = DummyPublishedObject()
helper = self._makeOne()
- from repoze.zope2.obob_helper import makeRequest
- helper.request = makeRequest(_makeEnviron())
helper.invoke(published)
self.assertEqual(helper.request['URL'], 'http://localhost:8080')
def test_path_elements_bad_name(self):
- helper = self._makeOne()
- from paste.httpexceptions import HTTPNotFound
- self.assertRaises(HTTPNotFound, helper.path_elements, '/REQUEST')
- self.assertRaises(HTTPNotFound, helper.path_elements,'/foo/aq_self')
- self.assertRaises(HTTPNotFound, helper.path_elements,'/foo/bar/aq_base')
+ env = _makeEnviron()
+ helper = self._makeOne(env)
+ from paste.httpexceptions import HTTPForbidden
+ env['PATH_INFO'] = '/foo/REQUEST'
+ self.assertRaises(HTTPForbidden, helper.path_elements)
+ env['PATH_INFO'] = '/foo/aq_self'
+ self.assertRaises(HTTPForbidden, helper.path_elements)
+ env['PATH_INFO'] = '/foo/bar/aq_base'
+ self.assertRaises(HTTPForbidden, helper.path_elements)
def test_path_elements_startswith_endswith(self):
- helper = self._makeOne()
+ env = _makeEnviron()
+ env['PATH_INFO'] = '/foo/'
+ helper = self._makeOne(env)
from paste.httpexceptions import HTTPNotFound
- self.assertEqual(helper.path_elements('/foo/'), ['foo'])
+ self.assertEqual(helper.path_elements(), ['foo'])
self.assertEqual(helper.browser_path, '/foo/')
def test_path_elements_empty_elements(self):
- helper = self._makeOne()
+ env = _makeEnviron()
+ env['PATH_INFO'] = 'foo///'
+ helper = self._makeOne(env)
from paste.httpexceptions import HTTPNotFound
- self.assertEqual(helper.path_elements('foo///'), ['foo'])
+ self.assertEqual(helper.path_elements(), ['foo'])
self.assertEqual(helper.browser_path, 'foo///')
def test_path_elements_onedot(self):
- helper = self._makeOne()
+ env = _makeEnviron()
+ env['PATH_INFO'] = 'foo/./bar'
+ helper = self._makeOne(env)
from paste.httpexceptions import HTTPNotFound
- self.assertEqual(helper.path_elements('foo/./bar'), ['foo', 'bar'])
+ self.assertEqual(helper.path_elements(), ['foo', 'bar'])
self.assertEqual(helper.browser_path, 'foo/./bar')
def test_path_elements_twodots(self):
- helper = self._makeOne()
+ env = _makeEnviron()
+ env['PATH_INFO'] = 'foo/../bar'
+ helper = self._makeOne(env)
from paste.httpexceptions import HTTPNotFound
- self.assertEqual(helper.path_elements('foo/../bar'), ['bar'])
+ self.assertEqual(helper.path_elements(), ['bar'])
self.assertEqual(helper.browser_path, 'foo/../bar')
-class DummyHelper:
- def __init__(self, environ, config):
- self.environ = environ
- self.config = config
-
-class DummyPublishedObject:
- def __call__(self, request=None):
- self.request = request
-
-class DummyApplication:
- def __init__(self, conn):
- self.conn = conn
-
-class DummyConnection:
- closed = False
- debuginfo = None
- def __init__(self, db):
- self.db = db
-
- def close(self):
- self.closed = True
+ def test__before_traversal_nopath_nomethod(self):
+ helper = self._makeOne()
+ helper.request['REQUEST_METHOD'] = ''
+ from paste.httpexceptions import HTTPForbidden
+ self.assertRaises(HTTPForbidden, helper._before_traversal, [], '')
- def setDebugInfo(self, info):
- self.debuginfo = info
+ def test__before_traversal_xmlrpc_response_webdav_client(self):
+ helper = self._makeOne()
+ helper.request.maybe_webdav_client = True
+ helper._before_traversal(['a'], '/a')
+ self.assertEqual(helper.no_acquire_flag, True)
- def root(self):
- return {'Application':DummyApplication(self)}
-
-class DummyDB:
- def open(self):
- return DummyConnection(self)
+ def test__before_traversal_xmlrpc_response_not_webdav_client(self):
+ helper = self._makeOne()
+ helper.request.maybe_webdav_client = False
+ helper._before_traversal(['a'], '/a')
+ self.assertEqual(helper.no_acquire_flag, False)
-def dummy_configure(config):
- return DummyDB()
+ def dont_test_make_root(self):
+ # XXX this is hard
+ try:
+ helper = self._makeOne()
+ here = os.path.abspath(os.path.dirname(__file__))
+ config = {'zope.conf':os.path.join(here, 'fixtures', 'zope.conf')}
+ helper.make_root(config)
+ finally:
+ pass
-def _makeEnviron():
- from StringIO import StringIO
- stdin = StringIO()
- environ = {}
- environ['wsgi.input'] = stdin
- environ['SERVER_NAME'] = 'localhost'
- environ['SERVER_PORT'] = '8080'
- environ['PATH_INFO'] = '/foo'
- return environ
--- NEW FILE: test_root.py ---
import unittest
from repoze.zope2.tests.base import DummyDB
from repoze.zope2.tests.base import DummyTransaction
from repoze.zope2.tests.base import DummyApplication
from repoze.zope2.tests.base import DummyRequest
from repoze.zope2.tests.base import DummyConnection
from repoze.zope2.tests.base import _makeEnviron
class TestRoot(unittest.TestCase):
def _getTargetClass(self):
from repoze.zope2.root import Root
return Root
def _makeOne(self, db, name, txn):
return self._getTargetClass()(db, name, txn)
def test_ctor_noapp(self):
db = DummyDB()
db.conn.rootob = {}
txn = DummyTransaction()
root = self._makeOne(db, 'Application', txn)
from OFS.Application import Application
app = db.conn.rootob['Application']
self.failUnless(isinstance(app, Application), app)
self.assertEqual(txn.committed, True)
def test_ctor_withapp(self):
db = DummyDB()
txn = DummyTransaction()
root = self._makeOne(db, 'Application', txn)
app = db.conn.rootob['Application']
self.failUnless(isinstance(app, DummyApplication), app)
self.assertEqual(txn.committed, False)
def test_call(self):
db = DummyDB()
root = self._makeOne(db, 'Application', None)
app = root()
self.failUnless(isinstance(app, DummyApplication), app)
def test_bobo_traverse(self):
db = DummyDB()
env = _makeEnviron()
root = self._makeOne(db, 'Application', None)
app = root.__bobo_traverse__(DummyRequest(env))
self.failUnless(isinstance(app, DummyApplication), app)
self.failUnless('tm.cleanup' in env)
self.assertEqual(db.conn.debuginfo[0], env)
class CloserTests(unittest.TestCase):
def test_Closer(self):
from repoze.zope2.root import Closer
jar = DummyConnection('whatever')
a = Closer(jar)
del a
self.assertEqual(jar.closed, True)
--- NEW FILE: base.py ---
class DummyResponse:
pass
class DummyRequest:
def __init__(self, env):
self.environ = env
self.response = DummyResponse()
self.steps = []
self.args = []
self.maybe_webdav_client = False
self.other = {}
def get(self, name, default):
return self.environ.get(name, default)
def __getitem__(self, name):
return self.environ[name]
def __setitem__(self, name, value):
self.environ[name] = value
class DummyHelper:
def __init__(self, config):
self.config = config
def make_root(self):
return self.config
class DummyPublishedObject:
def __call__(self, request=None):
self.request = request
class DummyApplication:
def __init__(self, conn):
self.conn = conn
class DummyConnection:
closed = False
debuginfo = None
def __init__(self, db):
self.db = db
self.rootob = {'Application':DummyApplication(self)}
def close(self):
self.closed = True
def setDebugInfo(self, info, other):
self.debuginfo = (info, other)
def root(self):
return self.rootob
class DummyDB:
def __init__(self):
self.conn = DummyConnection(self)
def open(self):
return self.conn
class DummyTransaction:
committed = False
def commit(self):
self.committed = True
def _makeEnviron():
from StringIO import StringIO
stdin = StringIO()
environ = {}
# standard CGI/WSGI things
environ['wsgi.input'] = stdin
environ['SERVER_NAME'] = 'localhost'
environ['SERVER_PORT'] = '8080'
environ['PATH_INFO'] = '/foo'
# emulate Zope request
environ['REQUEST_METHOD'] = 'GET'
environ['URL'] = 'http://localhost:8080'
environ['PARENTS'] = [None]
return environ
_______________________________________________
Repoze-dev mailing list
Repoze-dev at lists.repoze.org
http://lists.repoze.org/mailman/listinfo/repoze-dev
More information about the Repoze-dev
mailing list