Tres Seaver
2009-04-18 0ee58d4d0f031865f5c0782731076de9bee0c639
Extended auth_tkt plugin factory to allow passing secret in a separate
file from the main config file. See http://bugs.repoze.org/issue40 .

4 files modified
48 ■■■■ changed files
CHANGES.txt 6 ●●●●● patch | view | raw | blame | history
repoze/who/plugins/auth_tkt.py 17 ●●●● patch | view | raw | blame | history
repoze/who/plugins/tests.py 23 ●●●●● patch | view | raw | blame | history
setup.py 2 ●●● patch | view | raw | blame | history
CHANGES.txt
@@ -2,6 +2,12 @@
repoze.who changes
==================
After 1.0.11
============
- Extended auth_tkt plugin factory to allow passing secret in a separate
  file from the main config file.  See http://bugs.repoze.org/issue40 .
1.0.11 (2009/4/10)
==================
repoze/who/plugins/auth_tkt.py
@@ -1,5 +1,6 @@
from codecs import utf_8_decode
from codecs import utf_8_encode
import os
from paste.request import get_cookies
from paste.auth import auth_tkt
@@ -153,10 +154,20 @@
    return value
def make_plugin(secret=None,
                secretfile=None,
                cookie_name='auth_tkt',
                secure=False, include_ip=False):
    if secret is None:
        raise ValueError('secret must not be None')
                secure=False,
                include_ip=False,
               ):
    if (secret is None and secretfile is None):
        raise ValueError("One of 'secret' or 'secretfile' must not be None.")
    if (secret is not None and secretfile is not None):
        raise ValueError("Specify only one of 'secret' or 'secretfile'.")
    if secretfile:
        secretfile = os.path.abspath(os.path.expanduser(secretfile))
        if not os.path.exists(secretfile):
            raise ValueError("No such 'secretfile': %s" % secretfile)
        secret = open(secretfile).read().strip()
    plugin = AuthTktCookiePlugin(secret, cookie_name,
                                 _bool(secure), _bool(include_ip))
    return plugin
repoze/who/plugins/tests.py
@@ -954,7 +954,19 @@
        self.assertEqual(name, 'Set-Cookie')
        self.assertEqual(value, 'auth_tkt=""""; Path=/; Domain=.localhost')
    def test_factory(self):
    def test_factory_wo_secret_wo_secretfile_raises_ValueError(self):
        from repoze.who.plugins.auth_tkt import make_plugin
        self.assertRaises(ValueError, make_plugin)
    def test_factory_w_secret_w_secretfile_raises_ValueError(self):
        from repoze.who.plugins.auth_tkt import make_plugin
        self.assertRaises(ValueError, make_plugin, 'secret', 'secretfile')
    def test_factory_w_bad_secretfile_raises_ValueError(self):
        from repoze.who.plugins.auth_tkt import make_plugin
        self.assertRaises(ValueError, make_plugin, secretfile='nonesuch.txt')
    def test_factory_w_secret(self):
        from repoze.who.plugins.auth_tkt import make_plugin
        plugin = make_plugin('secret')
        self.assertEqual(plugin.cookie_name, 'auth_tkt')
@@ -962,6 +974,15 @@
        self.assertEqual(plugin.include_ip, False)
        self.assertEqual(plugin.secure, False)
    def test_factory_w_secretfile(self):
        from tempfile import NamedTemporaryFile
        from repoze.who.plugins.auth_tkt import make_plugin
        ntf = NamedTemporaryFile()
        ntf.write('s33kr1t\n')
        ntf.flush()
        plugin = make_plugin(secretfile=ntf.name)
        self.assertEqual(plugin.secret, 's33kr1t')
class TestSQLAuthenticatorPlugin(unittest.TestCase):
    def _makeEnviron(self, kw=None):
setup.py
@@ -19,7 +19,7 @@
from setuptools import setup, find_packages
__version__ = '1.0.11'
__version__ = '1.0.11+'
here = os.path.abspath(os.path.dirname(__file__))
README = open(os.path.join(here, 'README.txt')).read()