From a4e5a800223e83eed636b824a9ce7d53c372bd33 Mon Sep 17 00:00:00 2001 From: "@jjdaurora" Date: Mon, 23 Mar 2026 11:24:17 -0400 Subject: [PATCH 1/2] PrivacyRequestResubmit; location=existing_privacy_request.location; --- src/fides/service/privacy_request/privacy_request_service.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fides/service/privacy_request/privacy_request_service.py b/src/fides/service/privacy_request/privacy_request_service.py index 43b7c04d190..6aefc2a4623 100644 --- a/src/fides/service/privacy_request/privacy_request_service.py +++ b/src/fides/service/privacy_request/privacy_request_service.py @@ -559,6 +559,7 @@ def resubmit_privacy_request( property_id=existing_privacy_request.property_id, consent_preferences=existing_privacy_request.consent_preferences, source=existing_privacy_request.source, + location=existing_privacy_request.location, reviewed_at=existing_privacy_request.reviewed_at, reviewed_by=existing_privacy_request.reviewed_by, identity_verified_at=existing_privacy_request.identity_verified_at, From d95b48d9f0113817e4068ab1ba23ae5969bbeb02 Mon Sep 17 00:00:00 2001 From: "@jjdaurora" Date: Mon, 23 Mar 2026 12:03:25 -0400 Subject: [PATCH 2/2] test_privacy_request_service; update tests --- .../test_privacy_request_service.py | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/tests/service/privacy_request/test_privacy_request_service.py b/tests/service/privacy_request/test_privacy_request_service.py index b5fa5ac7baf..b8eeacb60eb 100644 --- a/tests/service/privacy_request/test_privacy_request_service.py +++ b/tests/service/privacy_request/test_privacy_request_service.py @@ -238,6 +238,86 @@ def test_can_resubmit_pending_privacy_request( assert resubmitted_request.status == PrivacyRequestStatus.complete assert resubmitted_request.get_persisted_identity().email == "user@example.com" + def test_resubmit_preserves_location_when_required( + self, + db: Session, + privacy_request_service: PrivacyRequestService, + policy: Policy, + ): + """ + Regression test: resubmit_privacy_request must carry forward the persisted + location value so that _validate_required_location_fields does not re-raise + when the Redis identity cache has expired and the PC config requires location. + """ + privacy_center_config_data = { + "config": { + "title": "Test Privacy Center", + "description": "Test privacy center for location validation", + "actions": [ + { + "policy_key": policy.key, + "title": "Test Action", + "description": "Test action for location validation", + "icon_path": "/test-icon.svg", + "identity_inputs": {"email": "required"}, + "custom_privacy_request_fields": { + "location": { + "label": "Your Location", + "field_type": "location", + "required": True, + "ip_geolocation_hint": False, + } + }, + } + ], + "consent": { + "button": { + "description": "Manage your consent preferences", + "description_subtext": [], + "icon_path": "/consent.svg", + "identity_inputs": {"email": "optional"}, + "title": "Manage preferences", + "modalTitle": "Manage your consent preferences", + "confirmButtonText": "Continue", + "cancelButtonText": "Cancel", + }, + "page": { + "consentOptions": [], + "description": "Manage your consent preferences", + "description_subtext": [], + "policy_key": "default_consent_policy", + "title": "Manage your consent", + }, + }, + } + } + + privacy_center_config = PrivacyCenterConfig.create_or_update( + db=db, data=privacy_center_config_data + ) + + try: + privacy_request = privacy_request_service.create_privacy_request( + PrivacyRequestCreate( + identity=Identity(email="user@example.com"), + policy_key=policy.key, + location="US-CA", + ), + authenticated=True, + ) + assert privacy_request.location == "US-CA" + + resubmitted = privacy_request_service.resubmit_privacy_request( + privacy_request.id + ) + db.refresh(resubmitted) + + assert resubmitted is not None + assert resubmitted.location == "US-CA" + assert resubmitted.status == PrivacyRequestStatus.pending + finally: + privacy_center_config.delete(db) + def test_cannot_resubmit_non_existent_privacy_request( self, privacy_request_service: PrivacyRequestService,