litellm/tests/test_litellm/proxy
Ron Zhong 73fd5a41e4
feat: Singapore guardrail policies (PDPA + MAS AI Risk Management) (#21948)
* feat: Singapore PDPA PII protection guardrail policy template

Add Singapore Personal Data Protection Act (PDPA) guardrail support:

Regex patterns (patterns.json):
- sg_nric: NRIC/FIN detection ([STFGM] + 7 digits + checksum letter)
- sg_phone: Singapore phone numbers (+65/0065/65 prefix)
- sg_postal_code: 6-digit postal codes (contextual)
- passport_singapore: Passport numbers (E/K + 7 digits, contextual)
- sg_uen: Unique Entity Numbers (3 formats)
- sg_bank_account: Bank account numbers (dash format, contextual)

YAML policy templates (5 sub-guardrails):
- sg_pdpa_personal_identifiers: s.13 Consent
- sg_pdpa_sensitive_data: Advisory Guidelines
- sg_pdpa_do_not_call: Part IX DNC Registry
- sg_pdpa_data_transfer: s.26 overseas transfers
- sg_pdpa_profiling_automated_decisions: Model AI Governance Framework

Policy template entry in policy_templates.json with 9 guardrail definitions
(4 regex-based + 5 YAML conditional keyword matching).

Tests:
- test_sg_patterns.py: regex pattern unit tests
- test_sg_pdpa_guardrails.py: conditional keyword matching tests (100+ cases)

* feat: MAS AI Risk Management Guidelines guardrail policy template

Add Monetary Authority of Singapore (MAS) AI Risk Management Guidelines
guardrail support for financial institutions:

YAML policy templates (5 sub-guardrails):
- sg_mas_fairness_bias: Blocks discriminatory financial AI (credit/loans/insurance by protected attributes)
- sg_mas_transparency_explainability: Blocks opaque/unexplainable AI for consequential financial decisions
- sg_mas_human_oversight: Blocks fully automated financial decisions without human-in-the-loop
- sg_mas_data_governance: Blocks unauthorized sharing/mishandling of financial customer data
- sg_mas_model_security: Blocks adversarial attacks, model poisoning, inversion on financial AI

Policy template entry in policy_templates.json with 5 guardrail definitions.
Aligned with MAS FEAT Principles, Project MindForge, and NIST AI RMF.

Tests:
- test_sg_mas_ai_guardrails.py: conditional keyword matching tests (100+ cases)

* fix: address SG pattern review feedback

- Update NRIC lowercase test for IGNORECASE runtime behavior
- Add keyword context guard to sg_uen pattern to reduce false positives

* docs: clarify MAS AIRM timeline references

- Explicitly mark MAS AIRM as Nov 2025 consultation draft
- Add 2018 qualifier for FEAT principles in MAS policy descriptions
- Update MAS guardrail wording to avoid release-year ambiguity

* chore: commit resolved MAS policy conflicts

* test:

* chore:
2026-02-23 12:08:22 -08:00
..
_experimental/mcp_server Add test for base url extraction and migration 2026-02-20 13:47:44 +05:30
agent_endpoints tests 2026-02-13 22:01:28 -08:00
anthropic_endpoints
auth Revert "fix(vertex_ai): enable context-1m-2025-08-07 beta header (#21870)" (#21876) 2026-02-21 20:12:01 -08:00
client
common_utils Merge pull request #21924 from BerriAI/main 2026-02-23 18:11:36 +05:30
db fix(tests): use counter-based mock for time.time in prisma self-heal test 2026-02-23 13:25:02 -03:00
discovery_endpoints fix(azure): preserve content_policy_violation error details from Azure OpenAI (#20883) 2026-02-10 22:47:03 -08:00
experimental/mcp_server
google_endpoints
guardrails feat: Singapore guardrail policies (PDPA + MAS AI Risk Management) (#21948) 2026-02-23 12:08:22 -08:00
health_endpoints fix: resolve flaky test failures in health, spend logs, and CLI tests (#21769) 2026-02-21 10:02:24 -08:00
hooks fix(tests): isolate flaky tests - restore global state in setup/teardown (#21791) 2026-02-21 11:30:35 -08:00
image_endpoints fixing core proxy tests 2026-02-12 17:54:32 -08:00
management_endpoints Merge pull request #21926 from BerriAI/main 2026-02-23 18:17:30 +05:30
management_helpers
middleware test: add backwards compatibility tests for PrometheusAuthMiddleware 2026-02-21 12:06:31 -08:00
openai_files_endpoint fix(tests): isolate flaky files endpoint tests from global proxy state (#21788) 2026-02-21 11:20:32 -08:00
pass_through_endpoints fix(tests): isolate auth in vertex passthrough and spend logs date range tests (#21824) 2026-02-21 14:14:50 -08:00
policy_engine Guardrail Policy Versioning (#21862) 2026-02-21 20:14:31 -08:00
prompts
public_endpoints
rag_endpoints tests and route permissions (#21508) 2026-02-18 16:58:38 -08:00
response_api_endpoints
spend_tracking fix(tests): isolate auth in vertex passthrough and spend logs date range tests (#21824) 2026-02-21 14:14:50 -08:00
test_configs
ui_crud_endpoints Merge pull request #21926 from BerriAI/main 2026-02-23 18:17:30 +05:30
vector_store_endpoints
__init__.py
conftest.py
test_api_key_masking_in_errors.py fix: mask API keys in error responses for invalid/malformed keys (#20289) 2026-02-12 19:58:05 +05:30
test_batch_metadata_none_fix.py
test_caching_routes.py
test_chat_completion_metadata.py
test_common_request_processing.py fix: ensure arrival_time is set before calculating queue time 2026-02-23 17:04:47 +05:30
test_custom_proxy.py
test_empty_model_list.py
test_enforce_user_param.py
test_fallback_management_endpoints.py
test_fastapi_offline_routes.py
test_health_check_functions.py
test_litellm_pre_call_utils.py Guardrail Policy Versioning (#21862) 2026-02-21 20:14:31 -08:00
test_model_dump_with_preserved_fields.py fix: address PR review comments for model_dump_with_preserved_fields 2026-02-21 10:48:10 -08:00
test_model_id_header_propagation.py
test_proxy_cli.py fix(tests): fix flaky test_use_prisma_db_push_flag_behavior (#21849) 2026-02-21 15:23:55 -08:00
test_proxy_server.py Merge origin/main into litellm_fix_streaming_connection_pool_leak 2026-02-21 12:44:50 -08:00
test_proxy_types.py
test_proxy_utils.py
test_pyroscope.py Fix CI/CD pyroscope test failure (#21219) 2026-02-14 12:07:20 -08:00
test_response_model_sanitization.py
test_route_a2a_models.py
test_route_llm_request.py
test_shared_health_check.py
test_spend_log_cleanup.py
test_swagger_chat_completions.py fix(tests): isolate flaky tests - restore global state in setup/teardown (#21791) 2026-02-21 11:30:35 -08:00
test_team_member_update.py