Files
2026-07-13 13:17:40 +08:00

67 lines
2.0 KiB
Python

"""Tests for Ray exceptions."""
import sys
from enum import Enum
from unittest.mock import MagicMock, patch
import pytest
from ray.exceptions import AuthenticationError, RayError
class FakeAuthMode(Enum):
DISABLED = 0
TOKEN = 1
class TestAuthenticationError:
"""Tests for AuthenticationError exception."""
auth_doc_url = "https://docs.ray.io/en/latest/ray-security/token-auth.html"
def test_basic_creation(self):
"""Test basic AuthenticationError creation and message format."""
error = AuthenticationError("Token is missing")
error_str = str(error)
# Original message preserved
assert "Token is missing" in error_str
# Doc URL included
assert self.auth_doc_url in error_str
def test_is_ray_error_subclass(self):
"""Test that AuthenticationError is a RayError subclass."""
error = AuthenticationError("Test")
assert isinstance(error, RayError)
@pytest.mark.parametrize(
"auth_mode,expected_note",
[
(FakeAuthMode.DISABLED, "RAY_AUTH_MODE is currently 'disabled'"),
(FakeAuthMode.TOKEN, None),
],
ids=["disabled", "token"],
)
def test_auth_mode_note_in_message(self, auth_mode, expected_note):
"""Test that error message includes auth mode note when not in token mode."""
with patch.dict(
"sys.modules",
{
"ray._raylet": MagicMock(
AuthenticationMode=FakeAuthMode,
get_authentication_mode=lambda: auth_mode,
)
},
):
error = AuthenticationError("Token is missing")
error_str = str(error)
assert "Token is missing" in error_str
if expected_note:
assert expected_note in error_str
else:
assert "RAY_AUTH_MODE is currently" not in error_str
if __name__ == "__main__":
sys.exit(pytest.main(["-v", __file__]))