| from paste.auth import grantip |
| from paste.fixture import * |
| |
| def test_make_app(): |
| def application(environ, start_response): |
| start_response('200 OK', [('content-type', 'text/plain')]) |
| lines = [ |
| str(environ.get('REMOTE_USER')), |
| ':', |
| str(environ.get('REMOTE_USER_TOKENS')), |
| ] |
| if six.PY3: |
| lines = [line.encode('utf8') for line in lines] |
| return lines |
| ip_map = { |
| '127.0.0.1': (None, 'system'), |
| '192.168.0.0/16': (None, 'worker'), |
| '192.168.0.5<->192.168.0.8': ('bob', 'editor'), |
| '192.168.0.8': ('__remove__', '-worker'), |
| } |
| app = grantip.GrantIPMiddleware(application, ip_map) |
| app = TestApp(app) |
| return app |
| |
| def test_req(): |
| app = test_make_app() |
| def doit(remote_addr): |
| res = app.get('/', extra_environ={'REMOTE_ADDR': remote_addr}) |
| return res.body |
| assert doit('127.0.0.1') == b'None:system' |
| assert doit('192.168.15.12') == b'None:worker' |
| assert doit('192.168.0.4') == b'None:worker' |
| result = doit('192.168.0.5') |
| assert result.startswith(b'bob:') |
| assert b'editor' in result and b'worker' in result |
| assert result.count(b',') == 1 |
| assert doit('192.168.0.8') == b'None:editor' |