diff --git a/presidio-analyzer/presidio_analyzer/conf/default_recognizers.yaml b/presidio-analyzer/presidio_analyzer/conf/default_recognizers.yaml index 2f3840441..35f7f6adf 100644 --- a/presidio-analyzer/presidio_analyzer/conf/default_recognizers.yaml +++ b/presidio-analyzer/presidio_analyzer/conf/default_recognizers.yaml @@ -84,6 +84,13 @@ recognizers: enabled: false country_code: us + - name: AbaRoutingRecognizer + supported_languages: + - en + type: predefined + enabled: false + country_code: us + - name: NhsRecognizer supported_languages: - en @@ -139,6 +146,13 @@ recognizers: enabled: false country_code: sg + - name: SgUenRecognizer + supported_languages: + - en + type: predefined + enabled: false + country_code: sg + - name: AuAbnRecognizer supported_languages: - en @@ -279,6 +293,13 @@ recognizers: type: predefined country_code: pl + - name: FiPersonalIdentityCodeRecognizer + supported_languages: + - fi + type: predefined + enabled: false + country_code: fi + - name: KrBrnRecognizer supported_languages: - ko diff --git a/presidio-analyzer/tests/test_recognizer_registry.py b/presidio-analyzer/tests/test_recognizer_registry.py index 474d10541..d06ead8a9 100644 --- a/presidio-analyzer/tests/test_recognizer_registry.py +++ b/presidio-analyzer/tests/test_recognizer_registry.py @@ -3,6 +3,7 @@ from pathlib import Path import pytest +import yaml import regex as re from presidio_analyzer import ( AnalyzerEngine, @@ -11,6 +12,7 @@ PatternRecognizer, RecognizerRegistry, ) +from presidio_analyzer.recognizer_registry import RecognizerRegistryProvider from presidio_analyzer.predefined_recognizers import SpacyRecognizer, UsSsnRecognizer @@ -696,3 +698,38 @@ def test_load_predefined_recognizers_validates_countries_input(): # --------------------------------------------------------------------------- # YAML ``country_code`` cross-validation # --------------------------------------------------------------------------- + + +# --------------------------------------------------------------------------- +# Newly registered pattern recognizers are enable-safe +# --------------------------------------------------------------------------- + + +def test_when_newly_registered_yaml_recognizers_enabled_then_they_load(tmp_path): + """AbaRouting, FiPersonalIdentityCode and SgUen were exported in code but + missing from ``default_recognizers.yaml``; their entries ship + ``enabled: false``, so this flips them on and asserts they instantiate.""" + conf_path = ( + Path(__file__).parent.parent + / "presidio_analyzer" + / "conf" + / "default_recognizers.yaml" + ) + conf = yaml.safe_load(conf_path.read_text()) + targets = { + "AbaRoutingRecognizer", + "FiPersonalIdentityCodeRecognizer", + "SgUenRecognizer", + } + conf["supported_languages"] = ["en", "fi"] + for recognizer_conf in conf["recognizers"]: + if recognizer_conf["name"] in targets: + recognizer_conf["enabled"] = True + enabled_conf = tmp_path / "enabled.yaml" + enabled_conf.write_text(yaml.safe_dump(conf)) + + registry = RecognizerRegistryProvider( + conf_file=str(enabled_conf) + ).create_recognizer_registry() + + assert targets <= _recognizer_class_names(registry)