From 285ecb0f5a7c3248236dca98278c56fdfad2ad67 Mon Sep 17 00:00:00 2001 From: sricharan varanasi <59170910+sricharan-varanasi@users.noreply.github.com> Date: Thu, 9 Apr 2026 14:52:44 -0400 Subject: [PATCH] fix: return 404 for deleted activity in activity_retrieve endpoint - Add null check after ActivitiesCRUD.get_by_id() to raise ActivityDoeNotExist - Update test assertion to expect HTTP 404 instead of generic != 200 --- src/apps/activities/api/activities.py | 3 +++ src/apps/answers/tests/test_cross_version_flow.py | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/apps/activities/api/activities.py b/src/apps/activities/api/activities.py index da56b96a32a..be302d1cf17 100644 --- a/src/apps/activities/api/activities.py +++ b/src/apps/activities/api/activities.py @@ -19,6 +19,7 @@ from apps.activities.domain.activity_item import ( ActivityItemSingleLanguageDetail, ) +from apps.activities.errors import ActivityDoeNotExist from apps.activities.filters import AppletActivityFilter from apps.activities.services.activity import ActivityItemService, ActivityService from apps.activity_assignments.service import ActivityAssignmentService @@ -126,6 +127,8 @@ async def activity_retrieve( await CheckAccessService(session, user.id).check_applet_detail_access(applet_id) else: schema = await ActivitiesCRUD(session).get_by_id(activity_id) + if schema is None: + raise ActivityDoeNotExist() await CheckAccessService(session, user.id).check_applet_detail_access(schema.applet_id) activity = await ActivityService(session, user.id).get_single_language_by_id(activity_id, language) result = ActivitySingleLanguageWithItemsDetailPublic.model_validate(activity) diff --git a/src/apps/answers/tests/test_cross_version_flow.py b/src/apps/answers/tests/test_cross_version_flow.py index e4ead8a772b..3930896a140 100644 --- a/src/apps/answers/tests/test_cross_version_flow.py +++ b/src/apps/answers/tests/test_cross_version_flow.py @@ -232,11 +232,11 @@ async def test_fetch_deleted_activity_from_history( update_data = AppletUpdate(**data) await srv.update(applet_with_flow.id, update_data) - # Fetching the deleted activity without version should fail + # Fetching the deleted activity without version should return 404 response = await client.get( self.activity_url.format(activity_id=original_activity.id), ) - assert response.status_code != http.HTTPStatus.OK + assert response.status_code == http.HTTPStatus.NOT_FOUND # Fetching with the original version should succeed from history response = await client.get(