diff --git a/airflow/api_connexion/endpoints/user_endpoint.py b/airflow/api_connexion/endpoints/user_endpoint.py index 506e11e00612c..a9482701a48fa 100644 --- a/airflow/api_connexion/endpoints/user_endpoint.py +++ b/airflow/api_connexion/endpoints/user_endpoint.py @@ -119,7 +119,7 @@ def post_user() -> APIResponse: user = security_manager.add_user(role=roles_to_add, **data) if not user: detail = f"Failed to add user `{username}`." - return Unknown(detail=detail) + raise Unknown(detail=detail) return user_schema.dump(user) diff --git a/tests/api_connexion/endpoints/test_user_endpoint.py b/tests/api_connexion/endpoints/test_user_endpoint.py index c56c989b34146..a84b7f1087afc 100644 --- a/tests/api_connexion/endpoints/test_user_endpoint.py +++ b/tests/api_connexion/endpoints/test_user_endpoint.py @@ -525,6 +525,20 @@ def test_invalid_payload(self, autoclean_user_payload, payload_converter, error_ "type": EXCEPTIONS_LINK_MAP[400], } + def test_internal_server_error(self, autoclean_user_payload): + with unittest.mock.patch.object(self.app.appbuilder.sm, "add_user", return_value=None): + response = self.client.post( + "/api/v1/users", + json=autoclean_user_payload, + environ_overrides={"REMOTE_USER": "test"}, + ) + assert response.json == { + "detail": "Failed to add user `example_user`.", + "status": 500, + "title": "Internal Server Error", + "type": EXCEPTIONS_LINK_MAP[500], + } + class TestPatchUser(TestUserEndpoint): @pytest.mark.usefixtures("autoclean_admin_user")