diff --git a/tests/test_user_role.py b/tests/test_user_role.py new file mode 100644 index 0000000..cf77957 --- /dev/null +++ b/tests/test_user_role.py @@ -0,0 +1,69 @@ +import pytest + +from uncertainty_engine_types.user_role import UserRole + + +@pytest.mark.parametrize( + "role, expected", + [ + (UserRole.MEMBER, "member"), + (UserRole.ADMIN, "admin"), + ], +) +def test_member_value( + role: UserRole, + expected: str, +) -> None: + """Test that the value of each UserRole member is correct.""" + + assert role == expected + + +@pytest.mark.parametrize( + "role", + [ + UserRole.MEMBER, + UserRole.ADMIN, + ], +) +def test_is_str_instance(role: UserRole) -> None: + """Test that each UserRole member is an instance of str.""" + + assert isinstance(role, str) + + +@pytest.mark.parametrize( + "value, expected", + [ + ("member", UserRole.MEMBER), + ("admin", UserRole.ADMIN), + ], +) +def test_from_value(value: str, expected: UserRole) -> None: + """Test that a UserRole can be created from its value.""" + + assert UserRole(value) is expected + + +@pytest.mark.parametrize( + "bad_value", + [ + "su", + "owner", + "", + "ADMIN", + "Member", + ], +) +def test_invalid_value_raises(bad_value: str) -> None: + """Test that creating a UserRole with an invalid value raises a ValueError.""" + + with pytest.raises(ValueError): + UserRole(bad_value) + + +def test_all_members() -> None: + """Test that all UserRole members are correctly defined.""" + + members = {role.value for role in UserRole} + assert members == {"member", "admin"} diff --git a/uncertainty_engine_types/__init__.py b/uncertainty_engine_types/__init__.py index fe5f42a..61e8ac4 100644 --- a/uncertainty_engine_types/__init__.py +++ b/uncertainty_engine_types/__init__.py @@ -53,6 +53,7 @@ from uncertainty_engine_types.token import Token from uncertainty_engine_types.tool_metadata import ToolMetadata from uncertainty_engine_types.uncertainty_plot import UncertaintyPlot +from uncertainty_engine_types.user_role import UserRole from uncertainty_engine_types.vector_store import VectorStoreConfig, VectorStoreProvider from uncertainty_engine_types.version import __version__ @@ -102,6 +103,7 @@ "Token", "UserContext", "UncertaintyPlot", + "UserRole", "utils", "VectorStoreConfig", "VectorStoreProvider", diff --git a/uncertainty_engine_types/user_role.py b/uncertainty_engine_types/user_role.py new file mode 100644 index 0000000..0da6176 --- /dev/null +++ b/uncertainty_engine_types/user_role.py @@ -0,0 +1,8 @@ +from enum import Enum + + +class UserRole(str, Enum): + """Defines user roles for access control.""" + + ADMIN = "admin" + MEMBER = "member" diff --git a/uncertainty_engine_types/version.py b/uncertainty_engine_types/version.py index 6a726d8..5963297 100644 --- a/uncertainty_engine_types/version.py +++ b/uncertainty_engine_types/version.py @@ -1 +1 @@ -__version__ = "0.21.0" +__version__ = "0.22.0"