From 387e5a345ff982afeb32a69a3f6463b07a11e806 Mon Sep 17 00:00:00 2001 From: wangxiaolei Date: Wed, 18 Mar 2026 14:54:12 +0800 Subject: [PATCH] fix(api): make CreatorUserRole accept both `end-user` and `end_user` (#33638) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- api/models/enums.py | 7 +++++++ .../models/test_enums_creator_user_role.py | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 api/tests/unit_tests/models/test_enums_creator_user_role.py diff --git a/api/models/enums.py b/api/models/enums.py index 6af74cddc8..6499c5b443 100644 --- a/api/models/enums.py +++ b/api/models/enums.py @@ -11,6 +11,13 @@ class CreatorUserRole(StrEnum): ACCOUNT = "account" END_USER = "end_user" + @classmethod + def _missing_(cls, value): + if value == "end-user": + return cls.END_USER + else: + return super()._missing_(value) + class WorkflowRunTriggeredFrom(StrEnum): DEBUGGING = "debugging" diff --git a/api/tests/unit_tests/models/test_enums_creator_user_role.py b/api/tests/unit_tests/models/test_enums_creator_user_role.py new file mode 100644 index 0000000000..6317166fdc --- /dev/null +++ b/api/tests/unit_tests/models/test_enums_creator_user_role.py @@ -0,0 +1,19 @@ +import pytest + +from models.enums import CreatorUserRole + + +def test_creator_user_role_missing_maps_hyphen_to_enum(): + # given an alias with hyphen + value = "end-user" + + # when converting to enum (invokes StrEnum._missing_ override) + role = CreatorUserRole(value) + + # then it should map to END_USER + assert role is CreatorUserRole.END_USER + + +def test_creator_user_role_missing_raises_for_unknown(): + with pytest.raises(ValueError): + CreatorUserRole("unknown")