[Repoze-checkins] r779 - in repoze.trac/trunk: . repoze/trac
Chris McDonough
chrism at agendaless.com
Thu Mar 6 04:08:10 UTC 2008
Author: Chris McDonough <chrism at agendaless.com>
Date: Wed Mar 5 23:08:10 2008
New Revision: 779
Log:
0.5 (2008-03-05)
- Added 'remote_user_header' config value; if this is present,
repoze.trac will turn this value in the environment into the
REMOTE_USER value (if a REMOTE_USER is not already set).
- Added some tests.
Added:
repoze.trac/trunk/repoze/trac/tests.py (contents, props changed)
Modified:
repoze.trac/trunk/CHANGES.txt
repoze.trac/trunk/repoze/trac/__init__.py
repoze.trac/trunk/setup.py
Modified: repoze.trac/trunk/CHANGES.txt
==============================================================================
--- repoze.trac/trunk/CHANGES.txt (original)
+++ repoze.trac/trunk/CHANGES.txt Wed Mar 5 23:08:10 2008
@@ -1,3 +1,11 @@
+0.5 (2008-03-05)
+
+ - Added 'remote_user_header' config value; if this is present,
+ repoze.trac will turn this value in the environment into the
+ REMOTE_USER value (if a REMOTE_USER is not already set).
+
+ - Added some tests.
+
0.4
- Added egg-info directory to ignores (rocky)
Modified: repoze.trac/trunk/repoze/trac/__init__.py
==============================================================================
--- repoze.trac/trunk/repoze/trac/__init__.py (original)
+++ repoze.trac/trunk/repoze/trac/__init__.py Wed Mar 5 23:08:10 2008
@@ -7,23 +7,35 @@
from trac.web.main import dispatch_request
class TracApp:
- def __init__(self, environkw):
+ def __init__(self, environkw, remote_user_header,
+ dispatch_request=dispatch_request):
self.environkw = environkw
+ self.remote_user_header = remote_user_header
+ self.dispatch_request = dispatch_request
def __call__(self, environ, start_response):
+ if (not environ.has_key('REMOTE_USER')) and self.remote_user_header:
+ remote_user = environ.get(self.remote_user_header)
+ if remote_user:
+ environ['REMOTE_USER'] = remote_user
for k, v in self.environkw.items():
environ[k] = v
- return dispatch_request(environ, start_response)
+ return self.dispatch_request(environ, start_response)
-def make_trac(global_conig, **kw):
+def make_trac(global_config, **kw):
path = kw.get('env_path', None)
if path is None:
raise ValueError('"env_path=" required for make_trac setup')
environkw = {}
+ remote_user_header = None
for k, v in kw.items():
- environkw['trac.'+k] = v
- return TracApp(environkw)
+ if k == 'remote_user_header':
+ remote_user_header = v
+ else:
+ environkw['trac.'+k] = v
+
+ return TracApp(environkw, remote_user_header)
here = os.path.abspath(os.path.dirname(__file__))
Added: repoze.trac/trunk/repoze/trac/tests.py
==============================================================================
--- (empty file)
+++ repoze.trac/trunk/repoze/trac/tests.py Wed Mar 5 23:08:10 2008
@@ -0,0 +1,68 @@
+import unittest
+
+class TestMakeTrac(unittest.TestCase):
+ def _getFUT(self):
+ from repoze.trac import make_trac
+ return make_trac
+
+ def test_no_env_path(self):
+ f = self._getFUT()
+ self.assertRaises(ValueError, f, None)
+
+ def test_other(self):
+ f = self._getFUT()
+ result = f(None, env_path='foo', remote_user_header='bar', dummy='yup')
+ self.assertEqual(result.environkw, {'trac.env_path':'foo',
+ 'trac.dummy':'yup'})
+ self.assertEqual(result.remote_user_header, 'bar')
+
+class TestTracApp(unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.trac import TracApp
+ return TracApp
+
+ def _makeOne(self, environkw, remote_user_header, dispatch):
+ return self._getTargetClass()(environkw, remote_user_header, dispatch)
+
+ def test_call_with_remoteuser(self):
+ next = DummyApp()
+ app = self._makeOne({}, 'ru_header', next)
+ environ = {'REMOTE_USER':'fred', 'ru_header':'otherguy'}
+ app(environ, None)
+ self.assertEqual(environ['REMOTE_USER'], 'fred')
+
+ def test_call_noremote_user_with_header_in_environ_no_option(self):
+ next = DummyApp()
+ app = self._makeOne({}, None, next)
+ environ = {'ru_header':'otherguy'}
+ app(environ, None)
+ self.failIf('REMOTE_USER' in environ)
+
+ def test_call_remote_user_with_header_in_environ_with_option(self):
+ next = DummyApp()
+ app = self._makeOne({}, 'ru_header', next)
+ environ = {'REMOTE_USER':'fred', 'ru_header':'otherguy'}
+ app(environ, None)
+ self.assertEqual(environ['REMOTE_USER'], 'fred')
+
+ def test_call_noremote_user_with_header_in_environ_with_option(self):
+ next = DummyApp()
+ app = self._makeOne({}, 'ru_header', next)
+ environ = {'ru_header':'otherguy'}
+ app(environ, None)
+ self.assertEqual(environ['REMOTE_USER'], 'otherguy')
+
+ def test_app_called_with_values(self):
+ next = DummyApp()
+ app = self._makeOne({'trac.biz':'baz'}, 'ru_header', next)
+ environ = {}
+ app(environ, None)
+ self.assertEqual(environ['trac.biz'], 'baz')
+
+class DummyApp:
+ def __call__(self, environ, start_response):
+ self.environ = environ
+ self.start_response = start_response
+
+
+
Modified: repoze.trac/trunk/setup.py
==============================================================================
--- repoze.trac/trunk/setup.py (original)
+++ repoze.trac/trunk/setup.py Wed Mar 5 23:08:10 2008
@@ -12,7 +12,7 @@
#
##############################################################################
-__version__ = '0.4'
+__version__ = '0.5'
import os
@@ -47,9 +47,9 @@
include_package_data=True,
namespace_packages=['repoze'],
zip_safe=False,
- tests_require = [],
+ tests_require = ['setuptools', 'trac', 'pysqlite', 'PasteScript'],
install_requires=['setuptools', 'trac', 'pysqlite', 'PasteScript'],
- #test_suite="repoze.",
+ test_suite="repoze.trac.tests",
entry_points = """\
[repoze.project]
initialize = repoze.trac:make_instance
More information about the Repoze-checkins
mailing list