from types import SimpleNamespace

from src.domain.cloud.sms_delivery import platform_default_sms_delivery


def test_platform_sms_policy_is_provider_neutral() -> None:
    policy = platform_default_sms_delivery(
        SimpleNamespace(cloud_sms_provider="twilio", cloud_sms_from="+15551234567")
    )
    assert policy.allowed is True
    assert policy.delivery_scope == "internal"
    assert policy.from_number == "+15551234567"
    assert not hasattr(policy, "provider")


def test_platform_sms_policy_denies_when_sender_is_missing() -> None:
    policy = platform_default_sms_delivery(
        SimpleNamespace(cloud_sms_provider="twilio", cloud_sms_from="")
    )
    assert policy.allowed is False
    assert policy.reason_code == "sms_provider_not_configured"


def test_platform_sms_policy_does_not_encode_a_vendor_allowlist() -> None:
    policy = platform_default_sms_delivery(
        SimpleNamespace(cloud_sms_provider="future-sms-adapter", cloud_sms_from="+15551234567")
    )
    assert policy.allowed is True
    assert policy.delivery_scope == "internal"
    assert policy.from_number == "+15551234567"
