From 9fa0817ced650bea893548b1f9c802469a201f26 Mon Sep 17 00:00:00 2001 From: Dawn Pattison Date: Thu, 26 Oct 2023 11:41:18 -0500 Subject: [PATCH 1/3] Add a filter that prevents TCF Privacy Experience config from showing up in GET /privacy-experience-config if TCF is not enabled. --- .../privacy_experience_config_endpoints.py | 6 + ...est_privacy_experience_config_endpoints.py | 236 +++++++++++++++--- 2 files changed, 213 insertions(+), 29 deletions(-) diff --git a/src/fides/api/api/v1/endpoints/privacy_experience_config_endpoints.py b/src/fides/api/api/v1/endpoints/privacy_experience_config_endpoints.py index 1fcf8eb2c8..5023d49be4 100644 --- a/src/fides/api/api/v1/endpoints/privacy_experience_config_endpoints.py +++ b/src/fides/api/api/v1/endpoints/privacy_experience_config_endpoints.py @@ -39,6 +39,7 @@ from fides.common.api import scope_registry from fides.common.api.scope_registry import PRIVACY_EXPERIENCE_UPDATE from fides.common.api.v1 import urn_registry as urls +from fides.config import CONFIG router = APIRouter(tags=["Privacy Experience Config"], prefix=urls.V1_URL_PREFIX) @@ -86,6 +87,11 @@ def experience_config_list( should_unescape = request.headers.get(UNESCAPE_SAFESTR_HEADER) privacy_experience_config_query: Query = db.query(PrivacyExperienceConfig) + if not CONFIG.consent.tcf_enabled: + privacy_experience_config_query = privacy_experience_config_query.filter( + PrivacyExperienceConfig.component != ComponentType.tcf_overlay + ) + if component: privacy_experience_config_query = privacy_experience_config_query.filter( PrivacyExperienceConfig.component == component diff --git a/tests/ops/api/v1/endpoints/test_privacy_experience_config_endpoints.py b/tests/ops/api/v1/endpoints/test_privacy_experience_config_endpoints.py index 029d67b7ea..a858aba1af 100644 --- a/tests/ops/api/v1/endpoints/test_privacy_experience_config_endpoints.py +++ b/tests/ops/api/v1/endpoints/test_privacy_experience_config_endpoints.py @@ -77,12 +77,154 @@ def test_get_experience_config_list( assert response.status_code == 200 resp = response.json() assert ( - resp["total"] == 5 - ) # Three default configs loaded on startup plus two here + resp["total"] == 4 + ) # Two default configs loaded on startup plus two here. TCF Experience is excluded. assert resp["page"] == 1 assert resp["size"] == 50 data = resp["items"] - assert len(data) == 5 + assert len(data) == 4 + + first_config = data[0] + assert first_config["id"] == experience_config_overlay.id + assert first_config["component"] == "overlay" + assert first_config["banner_enabled"] == "enabled_where_required" + assert first_config["disabled"] is False + assert first_config["regions"] == ["us_ca"] + assert first_config["version"] == 1.0 + assert first_config["created_at"] is not None + assert first_config["updated_at"] is not None + assert ( + first_config["experience_config_history_id"] + == experience_config_overlay.experience_config_history_id + ) + + second_config = data[1] + assert second_config["id"] == experience_config_privacy_center.id + assert ( + second_config["description"] == "user's description