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)