Throw in towel on unit test assertion names.
| | |
| | | if self._now_testing is not None: |
| | | self._setNowTesting(self._now_testing) |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.plugins.auth_tkt import AuthTktCookiePlugin |
| | | return AuthTktCookiePlugin |
| | |
| | | self.assertEqual(result['tokens'], ['']) |
| | | self.assertEqual(result['repoze.who.plugins.auth_tkt.userid'], 'userid') |
| | | self.assertEqual(result['userdata'], 'userdata') |
| | | self.failUnless('timestamp' in result) |
| | | self.assertTrue('timestamp' in result) |
| | | self.assertEqual(environ['REMOTE_USER_TOKENS'], ['']) |
| | | self.assertEqual(environ['REMOTE_USER_DATA'],'userdata') |
| | | self.assertEqual(environ['AUTH_TYPE'],'cookie') |
| | |
| | | self.assertEqual(result['tokens'], ['']) |
| | | self.assertEqual(result['repoze.who.plugins.auth_tkt.userid'], 'userid') |
| | | self.assertEqual(result['userdata'], 'userdata') |
| | | self.failUnless('timestamp' in result) |
| | | self.assertTrue('timestamp' in result) |
| | | self.assertEqual(environ['REMOTE_USER_TOKENS'], ['']) |
| | | self.assertEqual(environ['REMOTE_USER_DATA'],'userdata') |
| | | self.assertEqual(environ['AUTH_TYPE'],'cookie') |
| | |
| | | self.assertEqual(result['tokens'], ['']) |
| | | self.assertEqual(result['repoze.who.plugins.auth_tkt.userid'], 1) |
| | | self.assertEqual(result['userdata'], 'userid_type:int') |
| | | self.failUnless('timestamp' in result) |
| | | self.assertTrue('timestamp' in result) |
| | | self.assertEqual(environ['REMOTE_USER_TOKENS'], ['']) |
| | | self.assertEqual(environ['REMOTE_USER_DATA'],'userid_type:int') |
| | | self.assertEqual(environ['AUTH_TYPE'],'cookie') |
| | |
| | | self.assertEqual(result['tokens'], ['']) |
| | | self.assertEqual(result['repoze.who.plugins.auth_tkt.userid'], 'userid') |
| | | self.assertEqual(result['userdata'], 'userid_type:unknown') |
| | | self.failUnless('timestamp' in result) |
| | | self.assertTrue('timestamp' in result) |
| | | self.assertEqual(environ['REMOTE_USER_TOKENS'], ['']) |
| | | self.assertEqual(environ['REMOTE_USER_DATA'],'userid_type:unknown') |
| | | self.assertEqual(environ['AUTH_TYPE'],'cookie') |
| | |
| | | self.assertEqual(result['tokens'], ['']) |
| | | self.assertEqual(result['repoze.who.plugins.auth_tkt.userid'], 'existing') |
| | | self.assertEqual(result['userdata'], 'userdata') |
| | | self.failUnless('timestamp' in result) |
| | | self.assertTrue('timestamp' in result) |
| | | self.assertEqual(environ['REMOTE_USER_TOKENS'], ['']) |
| | | self.assertEqual(environ['REMOTE_USER_DATA'],'userdata') |
| | | self.assertEqual(environ['AUTH_TYPE'],'cookie') |
| | |
| | | name, value = result.pop(0) |
| | | |
| | | self.assertEqual('Set-Cookie', name) |
| | | self.failUnless( |
| | | self.assertTrue( |
| | | value.endswith('; Expires=Sun, 08 Nov 2009 16:23:42 GMT')) |
| | | |
| | | def test_remember_max_age(self): |
| | |
| | | |
| | | name, value = result.pop(0) |
| | | self.assertEqual('Set-Cookie', name) |
| | | self.failUnless( |
| | | self.assertTrue( |
| | | value.startswith('auth_tkt="%s"; Path=/; Max-Age=500' % tkt), |
| | | value) |
| | | self.failUnless( |
| | | self.assertTrue( |
| | | value.endswith('; Expires=Sun, 08 Nov 2009 16:23:42 GMT')) |
| | | |
| | | name, value = result.pop(0) |
| | | self.assertEqual('Set-Cookie', name) |
| | | self.failUnless( |
| | | self.assertTrue( |
| | | value.startswith( |
| | | 'auth_tkt="%s"; Path=/; Domain=example.com; Max-Age=500' |
| | | % tkt), value) |
| | | self.failUnless( |
| | | self.assertTrue( |
| | | value.endswith('; Expires=Sun, 08 Nov 2009 16:23:42 GMT')) |
| | | |
| | | name, value = result.pop(0) |
| | | self.assertEqual('Set-Cookie', name) |
| | | self.failUnless( |
| | | self.assertTrue( |
| | | value.startswith( |
| | | 'auth_tkt="%s"; Path=/; Domain=.example.com; Max-Age=500' % tkt), |
| | | value) |
| | | self.failUnless( |
| | | self.assertTrue( |
| | | value.endswith('; Expires=Sun, 08 Nov 2009 16:23:42 GMT')) |
| | | |
| | | def test_forget(self): |
| | |
| | | 'max_age': u('500')}) |
| | | name, value = result.pop(0) |
| | | self.assertEqual('Set-Cookie', name) |
| | | self.failUnless(isinstance(value, str)) |
| | | self.failUnless( |
| | | self.assertTrue(isinstance(value, str)) |
| | | self.assertTrue( |
| | | value.startswith('auth_tkt="%s"; Path=/; Max-Age=500' % tkt), |
| | | (value, tkt)) |
| | | self.failUnless('; Expires=' in value) |
| | | self.assertTrue('; Expires=' in value) |
| | | |
| | | name,value = result.pop(0) |
| | | self.assertEqual('Set-Cookie', name) |
| | | self.failUnless( |
| | | self.assertTrue( |
| | | value.startswith( |
| | | 'auth_tkt="%s"; Path=/; Domain=example.com; Max-Age=500' |
| | | % tkt), value) |
| | | self.failUnless('; Expires=' in value) |
| | | self.assertTrue('; Expires=' in value) |
| | | |
| | | name,value = result.pop(0) |
| | | self.assertEqual('Set-Cookie', name) |
| | | self.failUnless( |
| | | self.assertTrue( |
| | | value.startswith( |
| | | 'auth_tkt="%s"; Path=/; Domain=.example.com; Max-Age=500' % tkt), |
| | | value) |
| | | self.failUnless('; Expires=' in value) |
| | | self.assertTrue('; Expires=' in value) |
| | | |
| | | |
| | | def dummy_userid_checker(userid): |
| | |
| | | import unittest |
| | | |
| | | |
| | | class TestBasicAuthPlugin(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | |
| | | def _makeOne(self, *arg, **kw): |
| | | plugin = self._getTargetClass()(*arg, **kw) |
| | | return plugin |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | def _makeEnviron(self, kw=None): |
| | | from wsgiref.util import setup_testing_defaults |
| | |
| | | for item in app_iter: |
| | | items.append(item) |
| | | response = b''.join(items).decode('utf-8') |
| | | self.failUnless(response.startswith('401 Unauthorized')) |
| | | self.assertTrue(response.startswith('401 Unauthorized')) |
| | | |
| | | def test_identify_noauthinfo(self): |
| | | plugin = self._makeOne('realm') |
| | |
| | | environ['wsgi.version'] = (1,0) |
| | | return environ |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | def failIf(self, predicate, message=''): |
| | | self.assertFalse(predicate, message) # Nannies go home! |
| | | |
| | | def test_implements(self): |
| | | from zope.interface.verify import verifyClass |
| | | from repoze.who.interfaces import IAuthenticator |
| | |
| | | result = plugin.authenticate(environ, creds) |
| | | self.assertEqual(result, None) |
| | | self.assertEqual(len(logger.warnings), 1) |
| | | self.failUnless('could not open htpasswd' in logger.warnings[0]) |
| | | self.assertTrue('could not open htpasswd' in logger.warnings[0]) |
| | | |
| | | def test_crypt_check(self): |
| | | import sys |
| | |
| | | |
| | | def test_plain_check(self): |
| | | from repoze.who.plugins.htpasswd import plain_check |
| | | self.failUnless(plain_check('password', 'password')) |
| | | self.failIf(plain_check('notpassword', 'password')) |
| | | self.assertTrue(plain_check('password', 'password')) |
| | | self.assertFalse(plain_check('notpassword', 'password')) |
| | | |
| | | def test_factory_no_filename_raises(self): |
| | | from repoze.who.plugins.htpasswd import make_plugin |
| | |
| | | import unittest |
| | | |
| | | class _Base(unittest.TestCase): |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | |
| | | class TestRedirectorPlugin(_Base): |
| | | class TestRedirectorPlugin(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.plugins.redirector import RedirectorPlugin |
| | |
| | | [('forget', '1')]) |
| | | sr = DummyStartResponse() |
| | | result = b''.join(app(environ, sr)).decode('ascii') |
| | | self.failUnless(result.startswith('302 Found')) |
| | | self.assertTrue(result.startswith('302 Found')) |
| | | self.assertEqual(sr.headers[0][0], 'forget') |
| | | self.assertEqual(sr.headers[0][1], '1') |
| | | self.assertEqual(sr.headers[1][0], 'Location') |
| | |
| | | [('forget', '1')]) |
| | | sr = DummyStartResponse() |
| | | result = b''.join(app(environ, sr)).decode('ascii') |
| | | self.failUnless(result.startswith('302 Found')) |
| | | self.assertTrue(result.startswith('302 Found')) |
| | | self.assertEqual(sr.headers[1][0], 'Location') |
| | | url = sr.headers[1][1] |
| | | parts = urlparse(url) |
| | |
| | | [('forget', '1')]) |
| | | sr = DummyStartResponse() |
| | | result = b''.join(app(environ, sr)).decode('ascii') |
| | | self.failUnless(result.startswith('302 Found')) |
| | | self.assertTrue(result.startswith('302 Found')) |
| | | self.assertEqual(sr.headers[1][0], 'Location') |
| | | url = sr.headers[1][1] |
| | | parts = urlparse(url) |
| | |
| | | [('forget', '1')]) |
| | | sr = DummyStartResponse() |
| | | result = b''.join(app(environ, sr)).decode('ascii') |
| | | self.failUnless(result.startswith('302 Found')) |
| | | self.assertTrue(result.startswith('302 Found')) |
| | | self.assertEqual(sr.headers[0][0], "forget") |
| | | self.assertEqual(sr.headers[0][1], "1") |
| | | self.assertEqual(sr.headers[1][0], 'Location') |
| | |
| | | [('forget', '1')]) |
| | | sr = DummyStartResponse() |
| | | result = b''.join(app(environ, sr)).decode('ascii') |
| | | self.failUnless(result.startswith('302 Found')) |
| | | self.assertTrue(result.startswith('302 Found')) |
| | | self.assertEqual(sr.headers[1][0], 'Location') |
| | | url = sr.headers[1][1] |
| | | parts = urlparse(url) |
| | |
| | | [('forget', '1')]) |
| | | sr = DummyStartResponse() |
| | | result = b''.join(app(environ, sr)).decode('ascii') |
| | | self.failUnless(result.startswith('302 Found')) |
| | | self.assertTrue(result.startswith('302 Found')) |
| | | self.assertEqual(sr.headers[1][0], 'Location') |
| | | url = sr.headers[1][1] |
| | | parts = urlparse(url) |
| | |
| | | [('forget', '1')]) |
| | | sr = DummyStartResponse() |
| | | result = b''.join(app(environ, sr)).decode('ascii') |
| | | self.failUnless(result.startswith('302 Found')) |
| | | self.assertTrue(result.startswith('302 Found')) |
| | | self.assertEqual(sr.headers[1][0], 'Location') |
| | | url = sr.headers[1][1] |
| | | parts = urlparse(url) |
| | |
| | | []) |
| | | sr = DummyStartResponse() |
| | | result = b''.join(app(environ, sr)).decode('ascii') |
| | | self.failUnless(result.startswith('302 Found')) |
| | | self.assertTrue(result.startswith('302 Found')) |
| | | self.assertEqual(sr.headers[0][0], 'set-cookie') |
| | | self.assertEqual(sr.headers[0][1], 'a') |
| | | self.assertEqual(sr.headers[1][0], 'set-cookie') |
| | | self.assertEqual(sr.headers[1][1], 'b') |
| | | |
| | | class Test_make_redirecting_plugin(_Base): |
| | | class Test_make_redirecting_plugin(unittest.TestCase): |
| | | |
| | | def _callFUT(self, *args, **kw): |
| | | from repoze.who.plugins.redirector import make_plugin |
| | |
| | | import unittest |
| | | |
| | | class _Base(unittest.TestCase): |
| | | |
| | | def failIf(self, predicate, message=''): |
| | | self.assertFalse(predicate, message) # Nannies go home! |
| | | |
| | | class TestSQLAuthenticatorPlugin(_Base): |
| | | class TestSQLAuthenticatorPlugin(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.plugins.sql import SQLAuthenticatorPlugin |
| | |
| | | self.assertEqual(dummy_factory.query, None) |
| | | self.assertEqual(dummy_factory.closed, False) |
| | | |
| | | class TestDefaultPasswordCompare(_Base): |
| | | class TestDefaultPasswordCompare(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.plugins.sql import default_password_compare |
| | |
| | | result = compare('notpassword', stored) |
| | | self.assertEqual(result, False) |
| | | |
| | | class TestSQLMetadataProviderPlugin(_Base): |
| | | class TestSQLMetadataProviderPlugin(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.plugins.sql import SQLMetadataProviderPlugin |
| | |
| | | self.assertEqual(dummy_factory.closed, True) |
| | | self.assertEqual(identity['md'], [ [1,2,3] ]) |
| | | self.assertEqual(dummy_factory.query, 'select foo from bar') |
| | | self.failIf('__userid' in identity) |
| | | self.assertFalse('__userid' in identity) |
| | | |
| | | class TestMakeSQLAuthenticatorPlugin(_Base): |
| | | class TestMakeSQLAuthenticatorPlugin(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.plugins.sql import make_authenticator_plugin |
| | |
| | | self.assertEqual(plugin.conn_factory, DummyConnFactory) |
| | | self.assertEqual(plugin.compare_fn, make_dummy_connfactory) |
| | | |
| | | class TestMakeSQLMetadataProviderPlugin(_Base): |
| | | class TestMakeSQLMetadataProviderPlugin(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.plugins.sql import make_metadata_plugin |
| | |
| | | import unittest |
| | | |
| | | class _Base(unittest.TestCase): |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | class AuthTicketTests(_Base): |
| | | class AuthTicketTests(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from .._auth_tkt import AuthTicket |
| | |
| | | self.assertEqual(cookie['oatmeal']['secure'], 'true') |
| | | |
| | | |
| | | class BadTicketTests(_Base): |
| | | class BadTicketTests(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from .._auth_tkt import BadTicket |
| | |
| | | self.assertEqual(exc.expected, 'foo') |
| | | |
| | | |
| | | class Test_parse_ticket(_Base): |
| | | class Test_parse_ticket(unittest.TestCase): |
| | | |
| | | def _callFUT(self, secret='SEEKRIT', ticket=None, ip='1.2.3.4'): |
| | | from .._auth_tkt import parse_ticket |
| | |
| | | try: |
| | | self._callFUT(ticket=TICKET) |
| | | except BadTicket as e: |
| | | self.failUnless(e.args[0].startswith( |
| | | self.assertTrue(e.args[0].startswith( |
| | | 'Timestamp is not a hex integer:')) |
| | | else: # pragma: no cover |
| | | self.fail('Did not raise') |
| | |
| | | self.assertEqual(user_data, 'DATA') |
| | | |
| | | |
| | | class Test_helpers(_Base): |
| | | class Test_helpers(unittest.TestCase): |
| | | |
| | | # calculate_digest is not very testable, and fully exercised throug callers. |
| | | |
| | |
| | | def test_maybe_encode_bytes(self): |
| | | from .._auth_tkt import maybe_encode |
| | | foo = b'foo' |
| | | self.failUnless(maybe_encode(foo) is foo) |
| | | self.assertTrue(maybe_encode(foo) is foo) |
| | | |
| | | def test_maybe_encode_native_string(self): |
| | | from .._auth_tkt import maybe_encode |
| | |
| | | import unittest |
| | | |
| | | class CompatTests(unittest.TestCase): |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | class CompatTests(unittest.TestCase): |
| | | |
| | | def test_REQUEST_METHOD_miss(self): |
| | | # PEP 3333 says CONTENT_TYPE is mandatory |
| | |
| | | from .._compat import SimpleCookie |
| | | environ = {'HTTP_COOKIE': 'qux=spam'} |
| | | cookies = get_cookies(environ) |
| | | self.failUnless(isinstance(cookies, SimpleCookie)) |
| | | self.assertTrue(isinstance(cookies, SimpleCookie)) |
| | | self.assertEqual(len(cookies), 1) |
| | | self.assertEqual(cookies['qux'].value, 'spam') |
| | | self.assertEqual(environ['paste.cookies'], (cookies, 'qux=spam')) |
| | |
| | | 'paste.cookies': (object(), 'foo=bar'), |
| | | } |
| | | cookies = get_cookies(environ) |
| | | self.failUnless(isinstance(cookies, SimpleCookie)) |
| | | self.assertTrue(isinstance(cookies, SimpleCookie)) |
| | | self.assertEqual(len(cookies), 1) |
| | | self.assertEqual(cookies['qux'].value, 'spam') |
| | | self.assertEqual(environ['paste.cookies'], (cookies, 'qux=spam')) |
| | |
| | | 'paste.cookies': (existing, 'qux=spam'), |
| | | } |
| | | cookies = get_cookies(environ) |
| | | self.failUnless(cookies is existing) |
| | | self.assertTrue(cookies is existing) |
| | | |
| | | def test_construct_url(self): |
| | | from .._compat import construct_url |
| | |
| | | def test_must_decode_non_string(self): |
| | | from .._compat import must_decode |
| | | foo = object() |
| | | self.failUnless(must_decode(foo) is foo) |
| | | self.assertTrue(must_decode(foo) is foo) |
| | | |
| | | def test_must_decode_unicode(self): |
| | | from .._compat import must_decode |
| | | from .._compat import u |
| | | foo = u('foo') |
| | | self.failUnless(must_decode(foo) is foo) |
| | | self.assertTrue(must_decode(foo) is foo) |
| | | |
| | | def test_must_decode_utf8(self): |
| | | from .._compat import must_decode |
| | |
| | | def test_must_encode_non_string(self): |
| | | from .._compat import must_encode |
| | | foo = object() |
| | | self.failUnless(must_encode(foo) is foo) |
| | | self.assertTrue(must_encode(foo) is foo) |
| | | |
| | | def test_must_encode_unicode(self): |
| | | from .._compat import must_encode |
| | |
| | | def test_must_encode_utf8(self): |
| | | from .._compat import must_encode |
| | | foo = b'b\xc3\xa2tard' |
| | | self.failUnless(must_encode(foo) is foo) |
| | | self.assertTrue(must_encode(foo) is foo) |
| | | |
| | | def test_must_encode_latin1(self): |
| | | from .._compat import must_encode |
| | | foo = b'b\xe2tard' |
| | | self.failUnless(must_encode(foo) is foo) |
| | | self.assertTrue(must_encode(foo) is foo) |
| | | |
| | |
| | | import unittest |
| | | |
| | | class _Base(unittest.TestCase): |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | def failIf(self, predicate, message=''): |
| | | self.assertFalse(predicate, message) # Nannies go home! |
| | | |
| | | class Test_get_api(_Base): |
| | | class Test_get_api(unittest.TestCase): |
| | | |
| | | def _callFUT(self, environ): |
| | | from repoze.who.api import get_api |
| | |
| | | def test___call___empty_environ(self): |
| | | environ = {} |
| | | api = self._callFUT(environ) |
| | | self.failUnless(api is None) |
| | | self.assertTrue(api is None) |
| | | |
| | | def test___call___w_api_in_environ(self): |
| | | expected = object() |
| | | environ = {'repoze.who.api': expected} |
| | | api = self._callFUT(environ) |
| | | self.failUnless(api is expected) |
| | | self.assertTrue(api is expected) |
| | | |
| | | class APIFactoryTests(_Base): |
| | | class APIFactoryTests(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.api import APIFactory |
| | |
| | | environ = {} |
| | | factory = self._makeOne() |
| | | api = factory(environ) |
| | | self.failUnless(isinstance(api, API)) |
| | | self.failUnless(environ['repoze.who.api'] is api) |
| | | self.assertTrue(isinstance(api, API)) |
| | | self.assertTrue(environ['repoze.who.api'] is api) |
| | | |
| | | def test___call___w_api_in_environ(self): |
| | | expected = object() |
| | | environ = {'repoze.who.api': expected} |
| | | factory = self._makeOne() |
| | | api = factory(environ) |
| | | self.failUnless(api is expected) |
| | | self.assertTrue(api is expected) |
| | | |
| | | |
| | | class TestMakeRegistries(_Base): |
| | | class TestMakeRegistries(unittest.TestCase): |
| | | |
| | | def _callFUT(self, identifiers, authenticators, challengers, mdproviders): |
| | | from repoze.who.api import make_registries |
| | |
| | | self.assertEqual(name_reg['challenger'], dummy_challenger) |
| | | self.assertEqual(name_reg['mdprovider'], dummy_mdprovider) |
| | | |
| | | class TestMatchClassification(_Base): |
| | | class TestMatchClassification(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.api import match_classification |
| | |
| | | # any for either |
| | | self.assertEqual(f(IAuthenticator, plugins, 'buz'), [multi1, multi2]) |
| | | |
| | | class APITests(_Base): |
| | | class APITests(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.api import API |
| | |
| | | logger=logger) |
| | | identity = api.authenticate() |
| | | self.assertEqual(identity['repoze.who.userid'], 'chrisid') |
| | | self.failUnless(identity['identifier'] is identifier) |
| | | self.failUnless(identity['authenticator'] is authenticator) |
| | | self.assertTrue(identity['identifier'] is identifier) |
| | | self.assertTrue(identity['authenticator'] is authenticator) |
| | | |
| | | self.assertEqual(len(logger._info), 1) |
| | | self.assertEqual(logger._info[0], 'request classification: browser') |
| | |
| | | self.assertEqual(logger._info[0], 'request classification: match') |
| | | self.assertEqual(logger._info[1], 'no challenge app returned') |
| | | self.assertEqual(len(logger._debug), 2) |
| | | self.failUnless(logger._debug[0].startswith( |
| | | self.assertTrue(logger._debug[0].startswith( |
| | | 'challengers registered: [')) |
| | | self.failUnless(logger._debug[1].startswith( |
| | | self.assertTrue(logger._debug[1].startswith( |
| | | 'challengers matched for ' |
| | | 'classification "match": [')) |
| | | |
| | |
| | | self.assertEqual(environ['challenged'], app) |
| | | self.assertEqual(len(logger._info), 2) |
| | | self.assertEqual(logger._info[0], 'request classification: match') |
| | | self.failUnless(logger._info[1].startswith('challenger plugin ')) |
| | | self.failUnless(logger._info[1].endswith( |
| | | self.assertTrue(logger._info[1].startswith('challenger plugin ')) |
| | | self.assertTrue(logger._info[1].endswith( |
| | | '"challenge" returned an app')) |
| | | self.assertEqual(len(logger._debug), 2) |
| | | self.failUnless(logger._debug[0].startswith( |
| | | self.assertTrue(logger._debug[0].startswith( |
| | | 'challengers registered: [')) |
| | | self.failUnless(logger._debug[1].startswith( |
| | | self.assertTrue(logger._debug[1].startswith( |
| | | 'challengers matched for ' |
| | | 'classification "match": [')) |
| | | |
| | |
| | | self.assertEqual(identifier.forgotten, identity) |
| | | self.assertEqual(len(logger._info), 3) |
| | | self.assertEqual(logger._info[0], 'request classification: match') |
| | | self.failUnless(logger._info[1].startswith('forgetting via headers ')) |
| | | self.assertTrue(logger._info[1].startswith('forgetting via headers ')) |
| | | self.assertEqual(logger._info[2], 'no challenge app returned') |
| | | self.assertEqual(len(logger._debug), 2) |
| | | self.failUnless(logger._debug[0].startswith( |
| | | self.assertTrue(logger._debug[0].startswith( |
| | | 'challengers registered: [')) |
| | | self.failUnless(logger._debug[1].startswith( |
| | | self.assertTrue(logger._debug[1].startswith( |
| | | 'challengers matched for ' |
| | | 'classification "match": [')) |
| | | |
| | |
| | | self.assertEqual(identifier.forgotten, identity) |
| | | self.assertEqual(len(logger._info), 3) |
| | | self.assertEqual(logger._info[0], 'request classification: match') |
| | | self.failUnless(logger._info[1].startswith('forgetting via headers ')) |
| | | self.failUnless(logger._info[2].startswith('challenger plugin ')) |
| | | self.failUnless(logger._info[2].endswith( |
| | | self.assertTrue(logger._info[1].startswith('forgetting via headers ')) |
| | | self.assertTrue(logger._info[2].startswith('challenger plugin ')) |
| | | self.assertTrue(logger._info[2].endswith( |
| | | '"challenge" returned an app')) |
| | | self.assertEqual(len(logger._debug), 2) |
| | | self.failUnless(logger._debug[0].startswith( |
| | | self.assertTrue(logger._debug[0].startswith( |
| | | 'challengers registered: [')) |
| | | self.failUnless(logger._debug[1].startswith( |
| | | self.assertTrue(logger._debug[1].startswith( |
| | | 'challengers matched for ' |
| | | 'classification "match": [')) |
| | | |
| | |
| | | self.assertEqual(challenger._challenged_with[3], FORGET_HEADERS) |
| | | self.assertEqual(len(logger._info), 3) |
| | | self.assertEqual(logger._info[0], 'request classification: match') |
| | | self.failUnless(logger._info[1].startswith( |
| | | self.assertTrue(logger._info[1].startswith( |
| | | 'forgetting via headers from')) |
| | | self.failUnless(logger._info[1].endswith(repr(FORGET_HEADERS))) |
| | | self.failUnless(logger._info[2].startswith('challenger plugin ')) |
| | | self.failUnless(logger._info[2].endswith( |
| | | self.assertTrue(logger._info[1].endswith(repr(FORGET_HEADERS))) |
| | | self.assertTrue(logger._info[2].startswith('challenger plugin ')) |
| | | self.assertTrue(logger._info[2].endswith( |
| | | '"challenge" returned an app')) |
| | | self.assertEqual(len(logger._debug), 2) |
| | | self.failUnless(logger._debug[0].startswith( |
| | | self.assertTrue(logger._debug[0].startswith( |
| | | 'challengers registered: [')) |
| | | self.failUnless(logger._debug[1].startswith( |
| | | self.assertTrue(logger._debug[1].startswith( |
| | | 'challengers matched for ' |
| | | 'classification "match": [')) |
| | | |
| | |
| | | self.assertEqual(api.remember(), HEADERS) |
| | | self.assertEqual(len(logger._info), 2) |
| | | self.assertEqual(logger._info[0], 'request classification: browser') |
| | | self.failUnless(logger._info[1].startswith( |
| | | self.assertTrue(logger._info[1].startswith( |
| | | 'remembering via headers from')) |
| | | self.failUnless(logger._info[1].endswith(repr(HEADERS))) |
| | | self.assertTrue(logger._info[1].endswith(repr(HEADERS))) |
| | | self.assertEqual(len(logger._debug), 0) |
| | | |
| | | def test_remember_w_identity_passed_no_identifier(self): |
| | |
| | | self.assertEqual(api.remember(identity), HEADERS) |
| | | self.assertEqual(len(logger._info), 2) |
| | | self.assertEqual(logger._info[0], 'request classification: browser') |
| | | self.failUnless(logger._info[1].startswith( |
| | | self.assertTrue(logger._info[1].startswith( |
| | | 'remembering via headers from')) |
| | | self.failUnless(logger._info[1].endswith(repr(HEADERS))) |
| | | self.assertTrue(logger._info[1].endswith(repr(HEADERS))) |
| | | self.assertEqual(len(logger._debug), 0) |
| | | |
| | | def test_forget_identifier_plugin_returns_none(self): |
| | |
| | | self.assertEqual(api.forget(), HEADERS) |
| | | self.assertEqual(len(logger._info), 2) |
| | | self.assertEqual(logger._info[0], 'request classification: browser') |
| | | self.failUnless(logger._info[1].startswith( |
| | | self.assertTrue(logger._info[1].startswith( |
| | | 'forgetting via headers from')) |
| | | self.failUnless(logger._info[1].endswith(repr(HEADERS))) |
| | | self.assertTrue(logger._info[1].endswith(repr(HEADERS))) |
| | | self.assertEqual(len(logger._debug), 0) |
| | | |
| | | def test_forget_w_identity_passed_no_identifier(self): |
| | |
| | | self.assertEqual(api.forget(identity), HEADERS) |
| | | self.assertEqual(len(logger._info), 2) |
| | | self.assertEqual(logger._info[0], 'request classification: browser') |
| | | self.failUnless(logger._info[1].startswith( |
| | | self.assertTrue(logger._info[1].startswith( |
| | | 'forgetting via headers from')) |
| | | self.failUnless(logger._info[1].endswith(repr(HEADERS))) |
| | | self.assertTrue(logger._info[1].endswith(repr(HEADERS))) |
| | | self.assertEqual(len(logger._debug), 0) |
| | | |
| | | def test_login_w_identifier_name_hit(self): |
| | |
| | | authenticators=[('authentic', authenticator)], |
| | | environ=environ) |
| | | api.logout() |
| | | self.failIf('repoze.who.identity' in environ) |
| | | self.assertFalse('repoze.who.identity' in environ) |
| | | |
| | | def test__identify_success(self): |
| | | environ = self._makeEnviron() |
| | |
| | | self.assertEqual(len(logger._info), 1) |
| | | self.assertEqual(logger._info[0], 'request classification: browser') |
| | | self.assertEqual(len(logger._debug), 4) |
| | | self.failUnless(logger._debug[0].startswith( |
| | | self.assertTrue(logger._debug[0].startswith( |
| | | 'identifier plugins registered: [')) |
| | | self.failUnless(logger._debug[1].startswith( |
| | | self.assertTrue(logger._debug[1].startswith( |
| | | 'identifier plugins matched for ' |
| | | 'classification "browser": [')) |
| | | self.failUnless(logger._debug[2].startswith( |
| | | self.assertTrue(logger._debug[2].startswith( |
| | | 'no identity returned from <')) |
| | | self.failUnless(logger._debug[2].endswith('> (None)')) |
| | | self.assertTrue(logger._debug[2].endswith('> (None)')) |
| | | self.assertEqual(logger._debug[3], 'identities found: []') |
| | | |
| | | def test__identify_success_skip_noresults(self): |
| | |
| | | self.assertEqual(len(logger._info), 1) |
| | | self.assertEqual(logger._info[0], 'request classification: browser') |
| | | self.assertEqual(len(logger._debug), 5) |
| | | self.failUnless(logger._debug[0].startswith( |
| | | self.assertTrue(logger._debug[0].startswith( |
| | | 'authenticator plugins registered: [')) |
| | | self.failUnless(logger._debug[1].startswith( |
| | | self.assertTrue(logger._debug[1].startswith( |
| | | 'authenticator plugins matched for ' |
| | | 'classification "browser": [')) |
| | | self.failUnless(logger._debug[2].startswith('no userid returned from')) |
| | | self.failUnless(logger._debug[3].startswith('userid returned from')) |
| | | self.failUnless(logger._debug[3].endswith('"chris"')) |
| | | self.failUnless(logger._debug[4].startswith( |
| | | self.assertTrue(logger._debug[2].startswith('no userid returned from')) |
| | | self.assertTrue(logger._debug[3].startswith('userid returned from')) |
| | | self.assertTrue(logger._debug[3].endswith('"chris"')) |
| | | self.assertTrue(logger._debug[4].startswith( |
| | | 'identities authenticated: [((1, 0),')) |
| | | |
| | | def test__authenticate_success_multiresult(self): |
| | |
| | | self.assertEqual(len(logger._info), 1) |
| | | self.assertEqual(logger._info[0], 'request classification: browser') |
| | | self.assertEqual(len(logger._debug), 5) |
| | | self.failUnless(logger._debug[0].startswith( |
| | | self.assertTrue(logger._debug[0].startswith( |
| | | 'authenticator plugins registered: [')) |
| | | self.failUnless(logger._debug[1].startswith( |
| | | self.assertTrue(logger._debug[1].startswith( |
| | | 'authenticator plugins matched for ' |
| | | 'classification "browser": [')) |
| | | self.failUnless(logger._debug[2].startswith('userid returned from')) |
| | | self.failUnless(logger._debug[2].endswith('"chris_id1"')) |
| | | self.failUnless(logger._debug[3].startswith('userid returned from')) |
| | | self.failUnless(logger._debug[3].endswith('"chris_id2"')) |
| | | self.failUnless(logger._debug[4].startswith( |
| | | self.assertTrue(logger._debug[2].startswith('userid returned from')) |
| | | self.assertTrue(logger._debug[2].endswith('"chris_id1"')) |
| | | self.assertTrue(logger._debug[3].startswith('userid returned from')) |
| | | self.assertTrue(logger._debug[3].endswith('"chris_id2"')) |
| | | self.assertTrue(logger._debug[4].startswith( |
| | | 'identities authenticated: [((0, 0),') |
| | | ) |
| | | |
| | |
| | | self.assertEqual(identity.get('fuz'), None) |
| | | |
| | | |
| | | class TestIdentityDict(_Base): |
| | | class TestIdentityDict(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.api import Identity |
| | |
| | | |
| | | def test_str(self): |
| | | identity = self._makeOne(foo=1) |
| | | self.failUnless(str(identity).startswith('<repoze.who identity')) |
| | | self.assertTrue(str(identity).startswith('<repoze.who identity')) |
| | | self.assertEqual(identity['foo'], 1) |
| | | |
| | | def test_repr(self): |
| | | identity = self._makeOne(foo=1) |
| | | self.failUnless(str(identity).startswith('<repoze.who identity')) |
| | | self.assertTrue(str(identity).startswith('<repoze.who identity')) |
| | | self.assertEqual(identity['foo'], 1) |
| | | |
| | | |
| | |
| | | import unittest |
| | | |
| | | class _Base(unittest.TestCase): |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | def failIf(self, predicate, message=''): |
| | | self.assertFalse(predicate, message) # Nannies go home! |
| | | |
| | | class TestDefaultRequestClassifier(_Base): |
| | | class TestDefaultRequestClassifier(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.classifiers import default_request_classifier |
| | |
| | | |
| | | def test_conforms_to_IRequestClassifier(self): |
| | | from repoze.who.interfaces import IRequestClassifier |
| | | self.failUnless(IRequestClassifier.providedBy(self._getFUT())) |
| | | self.assertTrue(IRequestClassifier.providedBy(self._getFUT())) |
| | | |
| | | def test_classify_dav_method(self): |
| | | classifier = self._getFUT() |
| | |
| | | self.assertEqual(result, 'browser') |
| | | |
| | | |
| | | class TestDefaultChallengeDecider(_Base): |
| | | class TestDefaultChallengeDecider(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.classifiers import default_challenge_decider |
| | |
| | | |
| | | def test_conforms_to_IChallengeDecider(self): |
| | | from repoze.who.interfaces import IChallengeDecider |
| | | self.failUnless(IChallengeDecider.providedBy(self._getFUT())) |
| | | self.assertTrue(IChallengeDecider.providedBy(self._getFUT())) |
| | | |
| | | def test_challenges_on_401(self): |
| | | decider = self._getFUT() |
| | | self.failUnless(decider({}, '401 Unauthorized', [])) |
| | | self.assertTrue(decider({}, '401 Unauthorized', [])) |
| | | |
| | | def test_doesnt_challenges_on_non_401(self): |
| | | decider = self._getFUT() |
| | | self.failIf(decider({}, '200 Ok', [])) |
| | | self.assertFalse(decider({}, '200 Ok', [])) |
| | | |
| | | class TestPassthroughChallengeDecider(_Base): |
| | | class TestPassthroughChallengeDecider(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.classifiers import passthrough_challenge_decider |
| | |
| | | |
| | | def test_conforms_to_IChallengeDecider(self): |
| | | from repoze.who.interfaces import IChallengeDecider |
| | | self.failUnless(IChallengeDecider.providedBy(self._getFUT())) |
| | | self.assertTrue(IChallengeDecider.providedBy(self._getFUT())) |
| | | |
| | | def test_challenges_on_bare_401(self): |
| | | decider = self._getFUT() |
| | | self.failUnless(decider({}, '401 Unauthorized', [])) |
| | | self.assertTrue(decider({}, '401 Unauthorized', [])) |
| | | |
| | | def test_doesnt_challenges_on_non_401(self): |
| | | decider = self._getFUT() |
| | | self.failIf(decider({}, '200 Ok', [])) |
| | | self.assertFalse(decider({}, '200 Ok', [])) |
| | | |
| | | def test_doesnt_challenges_on_401_with_WWW_Authenticate(self): |
| | | decider = self._getFUT() |
| | | self.failIf(decider({}, '401 Ok', [('WWW-Authenticate', 'xxx')])) |
| | | self.assertFalse(decider({}, '401 Ok', [('WWW-Authenticate', 'xxx')])) |
| | | |
| | | def test_doesnt_challenges_on_401_with_text_html(self): |
| | | decider = self._getFUT() |
| | | self.failIf(decider({}, '401 Ok', [('Content-Type', 'text/html')])) |
| | | self.assertFalse(decider({}, '401 Ok', [('Content-Type', 'text/html')])) |
| | |
| | | import unittest |
| | | |
| | | class _Base(unittest.TestCase): |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | class TestWhoConfig(_Base): |
| | | class TestWhoConfig(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.config import WhoConfig |
| | |
| | | config = self._makeOne() |
| | | config.parse(PLUGINS_ONLY) |
| | | self.assertEqual(len(config.plugins), 2) |
| | | self.failUnless(isinstance(config.plugins['foo'], |
| | | self.assertTrue(isinstance(config.plugins['foo'], |
| | | DummyPlugin)) |
| | | bar = config.plugins['bar'] |
| | | self.failUnless(isinstance(bar, DummyPlugin)) |
| | | self.assertTrue(isinstance(bar, DummyPlugin)) |
| | | self.assertEqual(bar.credentials, 'qux') |
| | | |
| | | def test_parse_general_empty(self): |
| | |
| | | PLUGIN_CLASS = self._getDummyPluginClass(IDummy) |
| | | config = self._makeOne() |
| | | config.parse(GENERAL_ONLY) |
| | | self.failUnless(isinstance(config.request_classifier, PLUGIN_CLASS)) |
| | | self.failUnless(isinstance(config.challenge_decider, PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(config.request_classifier, PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(config.challenge_decider, PLUGIN_CLASS)) |
| | | self.assertEqual(config.remote_user_key, 'ANOTHER_REMOTE_USER') |
| | | self.assertEqual(len(config.plugins), 0) |
| | | |
| | |
| | | PLUGIN_CLASS = self._getDummyPluginClass(IDummy) |
| | | config = self._makeOne() |
| | | config.parse(GENERAL_WITH_PLUGINS) |
| | | self.failUnless(isinstance(config.request_classifier, PLUGIN_CLASS)) |
| | | self.failUnless(isinstance(config.challenge_decider, PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(config.request_classifier, PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(config.challenge_decider, PLUGIN_CLASS)) |
| | | |
| | | def test_parse_identifiers_only(self): |
| | | from repoze.who.interfaces import IIdentifier |
| | |
| | | self.assertEqual(len(identifiers), 2) |
| | | first, second = identifiers |
| | | self.assertEqual(first[0], 'repoze.who.tests.test_config:DummyPlugin') |
| | | self.failUnless(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertEqual(len(first[1].classifications), 1) |
| | | self.assertEqual(first[1].classifications[IIdentifier], 'klass1') |
| | | self.assertEqual(second[0], 'repoze.who.tests.test_config:DummyPlugin') |
| | | self.failUnless(isinstance(second[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(second[1], PLUGIN_CLASS)) |
| | | |
| | | def test_parse_identifiers_with_plugins(self): |
| | | from repoze.who.interfaces import IIdentifier |
| | |
| | | self.assertEqual(len(identifiers), 2) |
| | | first, second = identifiers |
| | | self.assertEqual(first[0], 'foo') |
| | | self.failUnless(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertEqual(len(first[1].classifications), 1) |
| | | self.assertEqual(first[1].classifications[IIdentifier], 'klass1') |
| | | self.assertEqual(second[0], 'bar') |
| | | self.failUnless(isinstance(second[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(second[1], PLUGIN_CLASS)) |
| | | |
| | | def test_parse_authenticators_only(self): |
| | | from repoze.who.interfaces import IAuthenticator |
| | |
| | | self.assertEqual(len(authenticators), 2) |
| | | first, second = authenticators |
| | | self.assertEqual(first[0], 'repoze.who.tests.test_config:DummyPlugin') |
| | | self.failUnless(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertEqual(len(first[1].classifications), 1) |
| | | self.assertEqual(first[1].classifications[IAuthenticator], 'klass1') |
| | | self.assertEqual(second[0], 'repoze.who.tests.test_config:DummyPlugin') |
| | | self.failUnless(isinstance(second[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(second[1], PLUGIN_CLASS)) |
| | | |
| | | def test_parse_authenticators_with_plugins(self): |
| | | from repoze.who.interfaces import IAuthenticator |
| | |
| | | self.assertEqual(len(authenticators), 2) |
| | | first, second = authenticators |
| | | self.assertEqual(first[0], 'foo') |
| | | self.failUnless(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertEqual(len(first[1].classifications), 1) |
| | | self.assertEqual(first[1].classifications[IAuthenticator], 'klass1') |
| | | self.assertEqual(second[0], 'bar') |
| | | self.failUnless(isinstance(second[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(second[1], PLUGIN_CLASS)) |
| | | |
| | | def test_parse_challengers_only(self): |
| | | from repoze.who.interfaces import IChallenger |
| | |
| | | self.assertEqual(len(challengers), 2) |
| | | first, second = challengers |
| | | self.assertEqual(first[0], 'repoze.who.tests.test_config:DummyPlugin') |
| | | self.failUnless(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertEqual(len(first[1].classifications), 1) |
| | | self.assertEqual(first[1].classifications[IChallenger], 'klass1') |
| | | self.assertEqual(second[0], 'repoze.who.tests.test_config:DummyPlugin') |
| | | self.failUnless(isinstance(second[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(second[1], PLUGIN_CLASS)) |
| | | |
| | | def test_parse_challengers_with_plugins(self): |
| | | from repoze.who.interfaces import IChallenger |
| | |
| | | self.assertEqual(len(challengers), 2) |
| | | first, second = challengers |
| | | self.assertEqual(first[0], 'foo') |
| | | self.failUnless(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertEqual(len(first[1].classifications), 1) |
| | | self.assertEqual(first[1].classifications[IChallenger], 'klass1') |
| | | self.assertEqual(second[0], 'bar') |
| | | self.failUnless(isinstance(second[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(second[1], PLUGIN_CLASS)) |
| | | |
| | | def test_parse_mdproviders_only(self): |
| | | from repoze.who.interfaces import IMetadataProvider |
| | |
| | | self.assertEqual(len(mdproviders), 2) |
| | | first, second = mdproviders |
| | | self.assertEqual(first[0], 'repoze.who.tests.test_config:DummyPlugin') |
| | | self.failUnless(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertEqual(len(first[1].classifications), 1) |
| | | self.assertEqual(first[1].classifications[IMetadataProvider], 'klass1') |
| | | self.assertEqual(second[0], 'repoze.who.tests.test_config:DummyPlugin') |
| | | self.failUnless(isinstance(second[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(second[1], PLUGIN_CLASS)) |
| | | |
| | | def test_parse_mdproviders_with_plugins(self): |
| | | from repoze.who.interfaces import IMetadataProvider |
| | |
| | | self.assertEqual(len(mdproviders), 2) |
| | | first, second = mdproviders |
| | | self.assertEqual(first[0], 'foo') |
| | | self.failUnless(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(first[1], PLUGIN_CLASS)) |
| | | self.assertEqual(len(first[1].classifications), 1) |
| | | self.assertEqual(first[1].classifications[IMetadataProvider], 'klass1') |
| | | self.assertEqual(second[0], 'bar') |
| | | self.failUnless(isinstance(second[1], PLUGIN_CLASS)) |
| | | self.assertTrue(isinstance(second[1], PLUGIN_CLASS)) |
| | | |
| | | def test_parse_make_plugin_names(self): |
| | | # see http://bugs.repoze.org/issue92 |
| | |
| | | config.parse(MAKE_PLUGIN_ARG_NAMES) |
| | | self.assertEqual(len(config.plugins), 1) |
| | | foo = config.plugins['foo'] |
| | | self.failUnless(isinstance(foo, DummyPlugin)) |
| | | self.assertTrue(isinstance(foo, DummyPlugin)) |
| | | self.assertEqual(foo.iface, 'iface') |
| | | self.assertEqual(foo.name, 'name') |
| | | self.assertEqual(foo.template, '%(template)s') |
| | |
| | | template_with_eq = template_with_eq = %%(template_with_eq)s |
| | | """ |
| | | |
| | | class TestConfigMiddleware(_Base): |
| | | class TestConfigMiddleware(unittest.TestCase): |
| | | _tempdir = None |
| | | |
| | | def setUp(self): |
| | |
| | | self.assertEqual(len(api_factory.authenticators), 1) |
| | | self.assertEqual(len(api_factory.challengers), 2) |
| | | self.assertEqual(len(api_factory.mdproviders), 0) |
| | | self.failUnless(middleware.logger, middleware.logger) |
| | | self.assertTrue(middleware.logger, middleware.logger) |
| | | self.assertEqual(middleware.logger.getEffectiveLevel(), logging.DEBUG) |
| | | |
| | | def test_sample_config_no_log_level(self): |
| | |
| | | self.assertEqual(middleware.logger.getEffectiveLevel(), logging.WARN) |
| | | handlers = middleware.logger.handlers |
| | | self.assertEqual(len(handlers), 1) |
| | | self.failUnless(isinstance(handlers[0], logging.StreamHandler)) |
| | | self.assertTrue(isinstance(handlers[0], logging.StreamHandler)) |
| | | self.assertEqual(handlers[0].stream.name, logfile) |
| | | logging.shutdown() |
| | | handlers[0].stream.close() |
| | |
| | | self.assertEqual(middleware.logger.getEffectiveLevel(), logging.INFO) |
| | | handlers = middleware.logger.handlers |
| | | self.assertEqual(len(handlers), 1) |
| | | self.failUnless(isinstance(handlers[0], NullHandler)) |
| | | self.assertTrue(isinstance(handlers[0], NullHandler)) |
| | | logging.shutdown() |
| | | |
| | | class NullHandlerTests(_Base): |
| | | class NullHandlerTests(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.config import NullHandler |
| | |
| | | def test_inheritance(self): |
| | | import logging |
| | | handler = self._makeOne() |
| | | self.failUnless(isinstance(handler, logging.Handler)) |
| | | self.assertTrue(isinstance(handler, logging.Handler)) |
| | | |
| | | def test_emit_doesnt_raise_NotImplementedError(self): |
| | | handler = self._makeOne() |
| | | handler.emit(object()) |
| | | |
| | | class Test_make_api_factory_with_config(_Base): |
| | | class Test_make_api_factory_with_config(unittest.TestCase): |
| | | _tempdir = None |
| | | |
| | | def setUp(self): |
| | |
| | | self.assertEqual(len(api_factory.challengers), 0) |
| | | self.assertEqual(len(api_factory.mdproviders), 0) |
| | | self.assertEqual(api_factory.remote_user_key, 'REMOTE_USER') |
| | | self.failUnless(api_factory.logger is None) |
| | | self.failUnless(warned) |
| | | self.assertTrue(api_factory.logger is None) |
| | | self.assertTrue(warned) |
| | | |
| | | def test_bad_config_content(self): |
| | | import warnings |
| | |
| | | self.assertEqual(len(api_factory.challengers), 0) |
| | | self.assertEqual(len(api_factory.mdproviders), 0) |
| | | self.assertEqual(api_factory.remote_user_key, 'REMOTE_USER') |
| | | self.failUnless(api_factory.logger is None) |
| | | self.failUnless(warned) |
| | | self.assertTrue(api_factory.logger is None) |
| | | self.assertTrue(warned) |
| | | |
| | | def test_sample_config_no_logger(self): |
| | | factory = self._getFactory() |
| | |
| | | self.assertEqual(len(api_factory.challengers), 2) |
| | | self.assertEqual(len(api_factory.mdproviders), 0) |
| | | self.assertEqual(api_factory.remote_user_key, 'REMOTE_USER') |
| | | self.failUnless(api_factory.logger is None) |
| | | self.assertTrue(api_factory.logger is None) |
| | | |
| | | def test_sample_config_w_remote_user_key(self): |
| | | factory = self._getFactory() |
| | |
| | | self.assertEqual(len(api_factory.authenticators), 1) |
| | | self.assertEqual(len(api_factory.challengers), 2) |
| | | self.assertEqual(len(api_factory.mdproviders), 0) |
| | | self.failUnless(api_factory.logger is logger) |
| | | self.assertTrue(api_factory.logger is logger) |
| | | |
| | | SAMPLE_CONFIG = """\ |
| | | [plugin:redirector] |
| | |
| | | import unittest |
| | | |
| | | class _Base(unittest.TestCase): |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | class TestMiddleware(_Base): |
| | | class TestMiddleware(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.middleware import PluggableAuthenticationMiddleware |
| | |
| | | start_response = DummyStartResponse() |
| | | result = b''.join(mw(environ, start_response)).decode('ascii') |
| | | self.assertEqual(environ['challenged'], challenge_app) |
| | | self.failUnless(result.startswith('401 Unauthorized')) |
| | | self.assertTrue(result.startswith('401 Unauthorized')) |
| | | |
| | | def test_call_401_challenger_and_identifier_no_authenticator(self): |
| | | from webob.exc import HTTPUnauthorized |
| | |
| | | |
| | | result = b''.join(mw(environ, start_response)).decode('ascii') |
| | | self.assertEqual(environ['challenged'], challenge_app) |
| | | self.failUnless(result.startswith('401 Unauthorized')) |
| | | self.assertTrue(result.startswith('401 Unauthorized')) |
| | | self.assertEqual(identifier.forgotten, False) |
| | | self.assertEqual(environ.get('REMOTE_USER'), None) |
| | | |
| | |
| | | start_response = DummyStartResponse() |
| | | result = b''.join(mw(environ, start_response)).decode('ascii') |
| | | self.assertEqual(environ['challenged'], challenge_app) |
| | | self.failUnless(result.startswith('401 Unauthorized')) |
| | | self.assertTrue(result.startswith('401 Unauthorized')) |
| | | # @@ unfuck |
| | | ## self.assertEqual(identifier.forgotten, identifier.credentials) |
| | | self.assertEqual(environ['REMOTE_USER'], 'chris') |
| | |
| | | mdproviders=mdproviders) |
| | | start_response = DummyStartResponse() |
| | | result = b''.join(mw(environ, start_response)).decode('ascii') |
| | | self.failUnless(result.startswith('302 Found')) |
| | | self.assertTrue(result.startswith('302 Found')) |
| | | self.assertEqual(start_response.status, '302 Found') |
| | | headers = start_response.headers |
| | | #self.assertEqual(len(headers), 3, headers) |
| | |
| | | self.assertEqual(headers[3], |
| | | ('a', '1')) |
| | | self.assertEqual(start_response.exc_info, None) |
| | | self.failIf('repoze.who.application' in environ) |
| | | self.assertFalse('repoze.who.application' in environ) |
| | | |
| | | def test_call_app_doesnt_call_start_response(self): |
| | | from webob.exc import HTTPUnauthorized |
| | |
| | | mdproviders=mdproviders) |
| | | start_response = DummyStartResponse() |
| | | result = b''.join(mw(environ, start_response)).decode('ascii') |
| | | self.failUnless(result.startswith('401 Unauthorized')) |
| | | self.failUnless(app._iterable._closed) |
| | | self.assertTrue(result.startswith('401 Unauthorized')) |
| | | self.assertTrue(app._iterable._closed) |
| | | |
| | | def test_call_w_challenge_but_no_challenger_still_closes_iterable(self): |
| | | environ = self._makeEnviron() |
| | |
| | | mdproviders=mdproviders) |
| | | start_response = DummyStartResponse() |
| | | self.assertRaises(RuntimeError, mw, environ, start_response) |
| | | self.failUnless(app._iterable._closed) |
| | | self.assertTrue(app._iterable._closed) |
| | | |
| | | # XXX need more call tests: |
| | | # - auth_id sorting |
| | | |
| | | class TestStartResponseWrapper(_Base): |
| | | class TestStartResponseWrapper(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.middleware import StartResponseWrapper |
| | |
| | | wrapper = self._makeOne(None) |
| | | self.assertEqual(wrapper.start_response, None) |
| | | self.assertEqual(wrapper.headers, []) |
| | | self.failUnless(wrapper.buffer) |
| | | self.assertTrue(wrapper.buffer) |
| | | |
| | | def test_finish_response(self): |
| | | from repoze.who._compat import StringIO |
| | |
| | | self.assertEqual(datases[0], 'written') |
| | | self.assertEqual(closededs[0], True) |
| | | |
| | | class WrapGeneratorTests(_Base): |
| | | class WrapGeneratorTests(unittest.TestCase): |
| | | |
| | | def _callFUT(self, iterable): |
| | | from repoze.who.middleware import wrap_generator |
| | |
| | | yield 'b' |
| | | iterable = DummyIterableWithClose(gen()) |
| | | newgen = self._callFUT(iterable) |
| | | self.failIf(iterable._closed) |
| | | self.assertFalse(iterable._closed) |
| | | self.assertEqual(list(newgen), ['a', 'b']) |
| | | self.failUnless(iterable._closed) |
| | | self.assertTrue(iterable._closed) |
| | | |
| | | class TestMakeTestMiddleware(_Base): |
| | | class TestMakeTestMiddleware(unittest.TestCase): |
| | | |
| | | def setUp(self): |
| | | import os |
| | |
| | | import unittest |
| | | |
| | | class _Base(unittest.TestCase): |
| | | |
| | | def failUnless(self, predicate, message=''): |
| | | self.assertTrue(predicate, message) # Nannies go home! |
| | | |
| | | def failIf(self, predicate, message=''): |
| | | self.assertFalse(predicate, message) # Nannies go home! |
| | | |
| | | class AuthenticatedPredicateTests(_Base): |
| | | class AuthenticatedPredicateTests(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.restrict import authenticated_predicate |
| | |
| | | def test___call___no_identity_returns_False(self): |
| | | predicate = self._getFUT() |
| | | environ = {} |
| | | self.failIf(predicate(environ)) |
| | | self.assertFalse(predicate(environ)) |
| | | |
| | | def test___call___w_REMOTE_AUTH_returns_True(self): |
| | | predicate = self._getFUT() |
| | | environ = {'REMOTE_USER': 'fred'} |
| | | self.failUnless(predicate(environ)) |
| | | self.assertTrue(predicate(environ)) |
| | | |
| | | def test___call___w_repoze_who_identity_returns_True(self): |
| | | predicate = self._getFUT() |
| | | environ = {'repoze.who.identity': {'login': 'fred'}} |
| | | self.failUnless(predicate(environ)) |
| | | self.assertTrue(predicate(environ)) |
| | | |
| | | class MakeAuthenticatedRestrictionTests(_Base): |
| | | class MakeAuthenticatedRestrictionTests(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.restrict import make_authenticated_restriction |
| | |
| | | |
| | | filter = fut(app, {}, enabled=True) |
| | | |
| | | self.failUnless(filter.app is app) |
| | | self.failUnless(filter.enabled) |
| | | self.assertTrue(filter.app is app) |
| | | self.assertTrue(filter.enabled) |
| | | predicate = filter.predicate |
| | | self.failUnless(predicate({'REMOTE_USER': 'fred'})) |
| | | self.failUnless(predicate({'repoze.who.identity': {'login': 'fred'}})) |
| | | self.assertTrue(predicate({'REMOTE_USER': 'fred'})) |
| | | self.assertTrue(predicate({'repoze.who.identity': {'login': 'fred'}})) |
| | | |
| | | class PredicateRestrictionTests(_Base): |
| | | class PredicateRestrictionTests(unittest.TestCase): |
| | | |
| | | def _getTargetClass(self): |
| | | from repoze.who.restrict import PredicateRestriction |
| | |
| | | self.assertEqual(len(_tested), 1) |
| | | self.assertEqual(restrict.app.environ, environ) |
| | | |
| | | class MakePredicateRestrictionTests(_Base): |
| | | class MakePredicateRestrictionTests(unittest.TestCase): |
| | | |
| | | def _getFUT(self): |
| | | from repoze.who.restrict import make_predicate_restriction |
| | |
| | | |
| | | filter = fut(app, {}, predicate=_factory) |
| | | |
| | | self.failUnless(filter.app is app) |
| | | self.failUnless(filter.predicate is _predicate) |
| | | self.failUnless(filter.enabled) |
| | | self.assertTrue(filter.app is app) |
| | | self.assertTrue(filter.predicate is _predicate) |
| | | self.assertTrue(filter.enabled) |
| | | |
| | | def test_disabled_non_string_predicate_w_args(self): |
| | | fut = self._getFUT() |
| | |
| | | filter = fut(app, {}, predicate=DummyPredicate, enabled=False, |
| | | foo='Foo') |
| | | |
| | | self.failUnless(filter.app is app) |
| | | self.failUnless(isinstance(filter.predicate, DummyPredicate)) |
| | | self.assertTrue(filter.app is app) |
| | | self.assertTrue(isinstance(filter.predicate, DummyPredicate)) |
| | | self.assertEqual(filter.predicate.foo, 'Foo') |
| | | self.failIf(filter.enabled) |
| | | self.assertFalse(filter.enabled) |
| | | |
| | | def test_enabled_string_predicate_w_args(self): |
| | | fut = self._getFUT() |
| | |
| | | predicate='repoze.who.tests.test_restrict:DummyPredicate', |
| | | enabled=True, foo='Foo') |
| | | |
| | | self.failUnless(filter.app is app) |
| | | self.failUnless(isinstance(filter.predicate, DummyPredicate)) |
| | | self.assertTrue(filter.app is app) |
| | | self.assertTrue(isinstance(filter.predicate, DummyPredicate)) |
| | | self.assertEqual(filter.predicate.foo, 'Foo') |
| | | self.failUnless(filter.enabled) |
| | | self.assertTrue(filter.enabled) |
| | | |
| | | |
| | | class DummyApp(object): |