diff --git a/backend/app/core/validators/config/pii_remover_safety_validator_config.py b/backend/app/core/validators/config/pii_remover_safety_validator_config.py index fbc7e7a..27a8c6a 100644 --- a/backend/app/core/validators/config/pii_remover_safety_validator_config.py +++ b/backend/app/core/validators/config/pii_remover_safety_validator_config.py @@ -1,21 +1,20 @@ from __future__ import annotations from typing import List, Literal -from pydantic import ConfigDict - from app.core.enum import PIIEntityType from app.core.validators.pii_remover import DEFAULT_ENTITY_TYPES, PIIRemover from app.core.validators.config.base_validator_config import BaseValidatorConfig class PIIRemoverSafetyValidatorConfig(BaseValidatorConfig): - model_config = ConfigDict(use_enum_values=True) - + # use_enum_values would also stringify the inherited on_fail/stage enums. type: Literal["pii_remover"] entity_types: List[PIIEntityType] = DEFAULT_ENTITY_TYPES def build(self): return PIIRemover( - entity_types=self.entity_types, + entity_types=[ + PIIEntityType(entity_type).value for entity_type in self.entity_types + ], on_fail=self.resolve_on_fail(), ) diff --git a/backend/app/tests/validators/test_pii_remover.py b/backend/app/tests/validators/test_pii_remover.py index 4dd83a9..58f8413 100644 --- a/backend/app/tests/validators/test_pii_remover.py +++ b/backend/app/tests/validators/test_pii_remover.py @@ -90,6 +90,15 @@ def test_config_default_entity_types_passed_as_strings(mock_presidio): assert v.entity_types == DEFAULT_ENTITY_TYPES +@pytest.mark.parametrize("on_fail", ["fix", "exception", "rephrase"]) +def test_config_explicit_on_fail_resolves(mock_presidio, on_fail): + config = PIIRemoverSafetyValidatorConfig(type="pii_remover", on_fail=on_fail) + assert config.resolve_on_fail() is not None + validator = config.build() + assert validator.entity_types == DEFAULT_ENTITY_TYPES + assert all(type(entity) is str for entity in validator.entity_types) + + def test_config_rejects_unknown_entity_type(): with pytest.raises(ValidationError): PIIRemoverSafetyValidatorConfig(type="pii_remover", entity_types=["AADHAR"])