import pytest from flask import Flask @pytest.fixture def app(): app = Flask(__name__) return app @pytest.mark.unit class TestGetUserId: pass def test_returns_user_id_from_decoded_token(self, app): from application.api.user.utils import get_user_id with app.test_request_context(): from flask import request request.decoded_token = {"sub": "user_123"} assert get_user_id() == "user_123" def test_returns_none_when_no_decoded_token(self, app): from application.api.user.utils import get_user_id with app.test_request_context(): assert get_user_id() is None def test_returns_none_when_decoded_token_has_no_sub(self, app): from application.api.user.utils import get_user_id with app.test_request_context(): from flask import request request.decoded_token = {} assert get_user_id() is None @pytest.mark.unit class TestRequireAuth: pass def test_allows_authenticated_request(self, app): from application.api.user.utils import require_auth @require_auth def protected(): return "ok" with app.test_request_context(): from flask import request request.decoded_token = {"sub": "user_123"} assert protected() == "ok" def test_returns_401_when_unauthenticated(self, app): from application.api.user.utils import require_auth @require_auth def protected(): return "ok" with app.test_request_context(): result = protected() assert result.status_code == 401 @pytest.mark.unit class TestSuccessResponse: pass def test_default_success_response(self, app): from application.api.user.utils import success_response with app.app_context(): resp = success_response() assert resp.status_code == 200 assert resp.json["success"] is True @pytest.mark.unit class TestErrorResponse: pass def test_error_response_custom_status(self, app): from application.api.user.utils import error_response with app.app_context(): resp = error_response("Not found", 404) assert resp.status_code == 404 def test_error_response_extra_kwargs(self, app): from application.api.user.utils import error_response with app.app_context(): resp = error_response("Bad", 400, errors=["field1", "field2"]) assert resp.json["errors"] == ["field1", "field2"] @pytest.mark.unit class TestValidateObjectId: pass @pytest.mark.unit class TestValidatePagination: pass @pytest.mark.unit class TestCheckResourceOwnership: pass @pytest.mark.unit class TestSerializeObjectId: pass @pytest.mark.unit class TestSerializeList: pass @pytest.mark.unit class TestRequireFields: pass def test_allows_valid_request(self, app): from application.api.user.utils import require_fields @require_fields(["name", "email"]) def handler(): return "ok" with app.test_request_context( "/", method="POST", json={"name": "Alice", "email": "a@b.com"} ): assert handler() == "ok" def test_rejects_empty_body(self, app): from application.api.user.utils import require_fields @require_fields(["name"]) def handler(): return "ok" with app.test_request_context( "/", method="POST", json={} ): result = handler() assert result.status_code == 400 @pytest.mark.unit class TestSafeDbOperation: pass @pytest.mark.unit class TestValidateEnum: pass @pytest.mark.unit class TestExtractSortParams: pass