Files
garmin-coach-to-cal-sync/tests/test_redact.py
2026-06-16 15:14:37 +02:00

46 lines
1.3 KiB
Python

from __future__ import annotations
from garmin_coach_clone.redact import redact
def test_redact_preserves_workout_schema_ids() -> None:
data = {
"stepType": {"stepTypeId": 1, "stepTypeKey": "warmup"},
"targetType": {"workoutTargetTypeId": 1, "workoutTargetTypeKey": "no.target"},
"endCondition": {"conditionTypeId": 2, "conditionTypeKey": "time"},
}
assert redact(data) == data
def test_redact_private_account_and_device_fields() -> None:
data = {
"email": "rider@example.com",
"displayName": "Rider",
"unitId": 123456,
"ownerId": 999,
"deviceId": 888,
}
redacted = redact(data)
assert redacted["email"] == "<redacted>"
assert redacted["displayName"] == "<redacted>"
assert redacted["unitId"] == "<redacted>"
assert redacted["ownerId"] == "<redacted>"
assert redacted["deviceId"] == "<redacted>"
def test_redact_sensitive_values_inside_strings() -> None:
data = {
"message": "Contact rider@example.com with Authorization: Bearer abc.def.ghi",
}
redacted = redact(data)
assert "rider@example.com" not in redacted["message"]
assert "abc.def.ghi" not in redacted["message"]
assert "<redacted-email>" in redacted["message"]
assert "Bearer <redacted-token>" in redacted["message"]