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

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

 1  import unittest 
 2   
3 -class TestInsecureCookiePlugin(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 IIdentifier 23 klass = self._getTargetClass() 24 verifyClass(IIdentifier, klass)
25
26 - def test_identify_nocookies(self):
27 plugin = self._makeOne('oatmeal') 28 environ = self._makeEnviron() 29 result = plugin.identify(environ) 30 self.assertEqual(result, None)
31
33 plugin = self._makeOne('oatmeal') 34 environ = self._makeEnviron({'HTTP_COOKIE':'oatmeal=a'}) 35 result = plugin.identify(environ) 36 self.assertEqual(result, None)
37
39 plugin = self._makeOne('oatmeal') 40 auth = 'bogus'.encode('base64').rstrip() 41 environ = self._makeEnviron({'HTTP_COOKIE':'oatmeal=%s' % auth}) 42 result = plugin.identify(environ) 43 self.assertEqual(result, None)
44
45 - def test_identify_success(self):
46 plugin = self._makeOne('oatmeal') 47 auth = 'foo:password'.encode('base64').rstrip() 48 environ = self._makeEnviron({'HTTP_COOKIE':'oatmeal=%s;' % auth}) 49 result = plugin.identify(environ) 50 self.assertEqual(result, {'login':'foo', 'password':'password'})
51
53 plugin = self._makeOne('oatmeal') 54 creds = {'login':'foo', 'password':'password'} 55 auth = 'foo:password'.encode('base64').rstrip() 56 auth = 'oatmeal=%s;' % auth 57 environ = self._makeEnviron({'HTTP_COOKIE':auth}) 58 result = plugin.remember(environ, creds) 59 self.assertEqual(result, None)
60
62 plugin = self._makeOne('oatmeal') 63 creds = {'login':'bar', 'password':'password'} 64 auth = 'foo:password'.encode('base64').rstrip() 65 creds_auth = 'bar:password'.encode('base64').rstrip() 66 environ = self._makeEnviron({'HTTP_COOKIE':'oatmeal=%s;' % auth}) 67 result = plugin.remember(environ, creds) 68 expected = 'oatmeal=%s; Path=/;' % creds_auth 69 self.assertEqual(result, [('Set-Cookie', expected)])
70
71 - def test_factory(self):
72 from repoze.who.plugins.cookie import make_plugin 73 plugin = make_plugin('foo') 74 self.assertEqual(plugin.cookie_name, 'foo')
75
76 - def test_forget(self):
77 plugin = self._makeOne('oatmeal') 78 headers = plugin.forget({}, None) 79 self.assertEqual(len(headers), 1) 80 header = headers[0] 81 name, value = header 82 self.assertEqual(name, 'Set-Cookie') 83 self.assertEqual(value, 84 'oatmeal=""; Path=/; Expires=Sun, 10-May-1971 11:59:00 GMT')
85