refactor: update workspace permission checks and improve test structure by removing unnecessary mocks

This commit is contained in:
GareArc
2026-01-03 19:09:15 -08:00
parent 5045c4df84
commit 68ebb113df
2 changed files with 12 additions and 24 deletions

View File

@@ -23,7 +23,8 @@ def check_workspace_member_invite_permission(workspace_id: str) -> None:
Check if workspace allows member invitations at both billing and policy levels.
Checks performed:
1. Enterprise policy level - Admin-configured workspace permission
1. Billing/plan level - For future expansion (currently no plan-level restriction)
2. Enterprise policy level - Admin-configured workspace permission
Args:
workspace_id: The workspace ID to check permissions for

View File

@@ -13,18 +13,16 @@ class TestWorkspacePermissionHelper:
"""Test workspace permission helper functions."""
@patch("libs.workspace_permission.dify_config")
@patch("libs.workspace_permission.FeatureService")
def test_community_edition_allows_invite(self, mock_feature_service, mock_config):
"""Community edition should always allow invitations without calling enterprise service."""
@patch("libs.workspace_permission.EnterpriseService")
def test_community_edition_allows_invite(self, mock_enterprise_service, mock_config):
"""Community edition should always allow invitations without calling any service."""
mock_config.ENTERPRISE_ENABLED = False
mock_features = Mock()
mock_feature_service.get_features.return_value = mock_features
# Should not raise
check_workspace_member_invite_permission("test-workspace-id")
# FeatureService should be called but EnterpriseService should not
mock_feature_service.get_features.assert_called_once_with("test-workspace-id")
# EnterpriseService should NOT be called in community edition
mock_enterprise_service.WorkspacePermission.get_permission.assert_not_called()
@patch("libs.workspace_permission.dify_config")
@patch("libs.workspace_permission.FeatureService")
@@ -42,12 +40,9 @@ class TestWorkspacePermissionHelper:
@patch("libs.workspace_permission.EnterpriseService")
@patch("libs.workspace_permission.dify_config")
@patch("libs.workspace_permission.FeatureService")
def test_enterprise_blocks_invite_when_disabled(self, mock_feature_service, mock_config, mock_enterprise_service):
def test_enterprise_blocks_invite_when_disabled(self, mock_config, mock_enterprise_service):
"""Enterprise edition should block invitations when workspace policy is False."""
mock_config.ENTERPRISE_ENABLED = True
mock_features = Mock()
mock_feature_service.get_features.return_value = mock_features
mock_permission = Mock()
mock_permission.allow_member_invite = False
@@ -60,12 +55,9 @@ class TestWorkspacePermissionHelper:
@patch("libs.workspace_permission.EnterpriseService")
@patch("libs.workspace_permission.dify_config")
@patch("libs.workspace_permission.FeatureService")
def test_enterprise_allows_invite_when_enabled(self, mock_feature_service, mock_config, mock_enterprise_service):
def test_enterprise_allows_invite_when_enabled(self, mock_config, mock_enterprise_service):
"""Enterprise edition should allow invitations when workspace policy is True."""
mock_config.ENTERPRISE_ENABLED = True
mock_features = Mock()
mock_feature_service.get_features.return_value = mock_features
mock_permission = Mock()
mock_permission.allow_member_invite = True
@@ -135,14 +127,9 @@ class TestWorkspacePermissionHelper:
@patch("libs.workspace_permission.logger")
@patch("libs.workspace_permission.EnterpriseService")
@patch("libs.workspace_permission.dify_config")
@patch("libs.workspace_permission.FeatureService")
def test_enterprise_service_error_fails_open(
self, mock_feature_service, mock_config, mock_enterprise_service, mock_logger
):
def test_enterprise_service_error_fails_open(self, mock_config, mock_enterprise_service, mock_logger):
"""On enterprise service error, should fail-open (allow) and log error."""
mock_config.ENTERPRISE_ENABLED = True
mock_features = Mock()
mock_feature_service.get_features.return_value = mock_features
# Simulate enterprise service error
mock_enterprise_service.WorkspacePermission.get_permission.side_effect = Exception("Service unavailable")
@@ -151,5 +138,5 @@ class TestWorkspacePermissionHelper:
check_workspace_member_invite_permission("test-workspace-id")
# Should log the error
mock_logger.error.assert_called_once()
assert "Failed to check workspace invite permission" in str(mock_logger.error.call_args)
mock_logger.exception.assert_called_once()
assert "Failed to check workspace invite permission" in str(mock_logger.exception.call_args)