import pytest from rest_framework_jwt.settings import api_settings from funkwhale_api.common.auth import TokenAuthMiddleware jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER @pytest.mark.parametrize('query_string', [ b'token=wrong', b'', ]) def test_header_anonymous(query_string, factories): def callback(scope): assert scope['user'].is_anonymous scope = { 'query_string': query_string } consumer = TokenAuthMiddleware(callback) consumer(scope) def test_header_correct_token(factories): user = factories['users.User']() payload = jwt_payload_handler(user) token = jwt_encode_handler(payload) def callback(scope): assert scope['user'] == user scope = { 'query_string': 'token={}'.format(token).encode('utf-8') } consumer = TokenAuthMiddleware(callback) consumer(scope)