Package repoze :: Package who :: Package plugins :: Package tests :: Module test_basicauth
[hide private]

Source Code for Module repoze.who.plugins.tests.test_basicauth

  1  import unittest 
  2   
3 -class TestBasicAuthPlugin(unittest.TestCase):
4
5 - def _getTargetClass(self):
8
9 - def _makeOne(self, *arg, **kw):
10 plugin = self._getTargetClass()(*arg, **kw) 11 return plugin
12
13 - def _makeEnviron(self, kw=None):
14 environ = {} 15 environ['wsgi.version'] = (1,0) 16 if kw is not None: 17 environ.update(kw) 18 return environ
19
20 - def test_implements(self):
21 from zope.interface.verify import verifyClass 22 from repoze.who.interfaces import IChallenger 23 from repoze.who.interfaces import IIdentifier 24 klass = self._getTargetClass() 25 verifyClass(IChallenger, klass) 26 verifyClass(IIdentifier, klass)
27
28 - def test_challenge(self):
29 plugin = self._makeOne('realm') 30 environ = self._makeEnviron() 31 result = plugin.challenge(environ, '401 Unauthorized', [], []) 32 self.assertNotEqual(result, None) 33 app_iter = result(environ, lambda *arg: None) 34 items = [] 35 for item in app_iter: 36 items.append(item) 37 response = ''.join(items) 38 self.failUnless(response.startswith('401 Unauthorized'))
39
40 - def test_identify_noauthinfo(self):
41 plugin = self._makeOne('realm') 42 environ = self._makeEnviron() 43 creds = plugin.identify(environ) 44 self.assertEqual(creds, None)
45
46 - def test_identify_nonbasic(self):
47 plugin = self._makeOne('realm') 48 environ = self._makeEnviron({'HTTP_AUTHORIZATION':'Digest abc'}) 49 creds = plugin.identify(environ) 50 self.assertEqual(creds, None)
51
53 plugin = self._makeOne('realm') 54 environ = self._makeEnviron({'HTTP_AUTHORIZATION':'Basic abc'}) 55 creds = plugin.identify(environ) 56 self.assertEqual(creds, None)
57
59 plugin = self._makeOne('realm') 60 value = 'foo'.encode('base64') 61 environ = self._makeEnviron({'HTTP_AUTHORIZATION':'Basic %s' % value}) 62 creds = plugin.identify(environ) 63 self.assertEqual(creds, None)
64
65 - def test_identify_basic_ok(self):
66 plugin = self._makeOne('realm') 67 value = 'foo:bar'.encode('base64') 68 environ = self._makeEnviron({'HTTP_AUTHORIZATION':'Basic %s' % value}) 69 creds = plugin.identify(environ) 70 self.assertEqual(creds, {'login':'foo', 'password':'bar'})
71
72 - def test_remember(self):
73 plugin = self._makeOne('realm') 74 creds = {} 75 environ = self._makeEnviron() 76 result = plugin.remember(environ, creds) 77 self.assertEqual(result, None)
78
79 - def test_forget(self):
80 plugin = self._makeOne('realm') 81 creds = {'login':'foo', 'password':'password'} 82 environ = self._makeEnviron() 83 result = plugin.forget(environ, creds) 84 self.assertEqual(result, [('WWW-Authenticate', 'Basic realm="realm"')] )
85
87 plugin = self._makeOne('realm') 88 creds = {'login':'foo', 'password':'password'} 89 environ = self._makeEnviron() 90 forget = plugin._get_wwwauth() 91 result = plugin.challenge(environ, '401 Unauthorized', [], forget) 92 self.assertEqual(result.headers, forget)
93
95 plugin = self._makeOne('realm') 96 creds = {'login':'foo', 'password':'password'} 97 environ = self._makeEnviron() 98 forget = plugin._get_wwwauth() 99 result = plugin.challenge(environ, '401 Unauthorized', [], []) 100 self.assertEqual(result.headers, forget)
101 102
103 - def test_factory(self):
104 from repoze.who.plugins.basicauth import make_plugin 105 plugin = make_plugin('realm') 106 self.assertEqual(plugin.realm, 'realm')
107