style: fix ruff formatting in test_dataset_permission.py

pull/20242/head
MioINAMIJIMA 1 year ago
parent 5fd1c57c22
commit 3396fee869

@ -1,6 +1,6 @@
import pytest
from unittest.mock import Mock, patch from unittest.mock import Mock, patch
from sqlalchemy.orm import Session
import pytest
from models.account import Account, TenantAccountRole from models.account import Account, TenantAccountRole
from models.dataset import Dataset, DatasetPermission, DatasetPermissionEnum from models.dataset import Dataset, DatasetPermission, DatasetPermissionEnum
@ -44,99 +44,93 @@ class TestDatasetPermissionService:
def test_permission_check_different_tenant_should_fail(self): def test_permission_check_different_tenant_should_fail(self):
"""Test that users from different tenants cannot access dataset""" """Test that users from different tenants cannot access dataset"""
self.normal_user.current_tenant_id = "different-tenant" self.normal_user.current_tenant_id = "different-tenant"
with pytest.raises(NoPermissionError, match="You do not have permission to access this dataset."): with pytest.raises(NoPermissionError, match="You do not have permission to access this dataset."):
DatasetService.check_dataset_permission(self.dataset, self.normal_user) DatasetService.check_dataset_permission(self.dataset, self.normal_user)
def test_owner_can_access_any_dataset(self): def test_owner_can_access_any_dataset(self):
"""Test that tenant owners can access any dataset regardless of permission""" """Test that tenant owners can access any dataset regardless of permission"""
self.dataset.permission = DatasetPermissionEnum.ONLY_ME self.dataset.permission = DatasetPermissionEnum.ONLY_ME
# Should not raise any exception # Should not raise any exception
DatasetService.check_dataset_permission(self.dataset, self.owner_user) DatasetService.check_dataset_permission(self.dataset, self.owner_user)
def test_only_me_permission_creator_can_access(self): def test_only_me_permission_creator_can_access(self):
"""Test ONLY_ME permission allows only creator to access""" """Test ONLY_ME permission allows only creator to access"""
self.dataset.permission = DatasetPermissionEnum.ONLY_ME self.dataset.permission = DatasetPermissionEnum.ONLY_ME
# Creator should be able to access # Creator should be able to access
DatasetService.check_dataset_permission(self.dataset, self.creator_user) DatasetService.check_dataset_permission(self.dataset, self.creator_user)
def test_only_me_permission_others_cannot_access(self): def test_only_me_permission_others_cannot_access(self):
"""Test ONLY_ME permission denies access to non-creators""" """Test ONLY_ME permission denies access to non-creators"""
self.dataset.permission = DatasetPermissionEnum.ONLY_ME self.dataset.permission = DatasetPermissionEnum.ONLY_ME
with pytest.raises(NoPermissionError, match="You do not have permission to access this dataset."): with pytest.raises(NoPermissionError, match="You do not have permission to access this dataset."):
DatasetService.check_dataset_permission(self.dataset, self.normal_user) DatasetService.check_dataset_permission(self.dataset, self.normal_user)
def test_all_team_permission_allows_access(self): def test_all_team_permission_allows_access(self):
"""Test ALL_TEAM permission allows any team member to access""" """Test ALL_TEAM permission allows any team member to access"""
self.dataset.permission = DatasetPermissionEnum.ALL_TEAM self.dataset.permission = DatasetPermissionEnum.ALL_TEAM
# Should not raise any exception for team members # Should not raise any exception for team members
DatasetService.check_dataset_permission(self.dataset, self.normal_user) DatasetService.check_dataset_permission(self.dataset, self.normal_user)
DatasetService.check_dataset_permission(self.dataset, self.creator_user) DatasetService.check_dataset_permission(self.dataset, self.creator_user)
@patch('services.dataset_service.db.session') @patch("services.dataset_service.db.session")
def test_partial_team_permission_creator_can_access(self, mock_session): def test_partial_team_permission_creator_can_access(self, mock_session):
"""Test PARTIAL_TEAM permission allows creator to access""" """Test PARTIAL_TEAM permission allows creator to access"""
self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM
# Should not raise any exception for creator # Should not raise any exception for creator
DatasetService.check_dataset_permission(self.dataset, self.creator_user) DatasetService.check_dataset_permission(self.dataset, self.creator_user)
# Should not query database for creator # Should not query database for creator
mock_session.query.assert_not_called() mock_session.query.assert_not_called()
@patch('services.dataset_service.db.session') @patch("services.dataset_service.db.session")
def test_partial_team_permission_with_explicit_permission(self, mock_session): def test_partial_team_permission_with_explicit_permission(self, mock_session):
"""Test PARTIAL_TEAM permission allows users with explicit permission""" """Test PARTIAL_TEAM permission allows users with explicit permission"""
self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM
# Mock database query to return a permission record # Mock database query to return a permission record
mock_permission = Mock(spec=DatasetPermission) mock_permission = Mock(spec=DatasetPermission)
mock_session.query().filter_by().first.return_value = mock_permission mock_session.query().filter_by().first.return_value = mock_permission
# Should not raise any exception # Should not raise any exception
DatasetService.check_dataset_permission(self.dataset, self.normal_user) DatasetService.check_dataset_permission(self.dataset, self.normal_user)
# Verify database was queried correctly # Verify database was queried correctly
mock_session.query().filter_by.assert_called_with( mock_session.query().filter_by.assert_called_with(dataset_id=self.dataset.id, account_id=self.normal_user.id)
dataset_id=self.dataset.id,
account_id=self.normal_user.id
)
@patch('services.dataset_service.db.session') @patch("services.dataset_service.db.session")
def test_partial_team_permission_without_explicit_permission(self, mock_session): def test_partial_team_permission_without_explicit_permission(self, mock_session):
"""Test PARTIAL_TEAM permission denies users without explicit permission""" """Test PARTIAL_TEAM permission denies users without explicit permission"""
self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM
# Mock database query to return None (no permission record) # Mock database query to return None (no permission record)
mock_session.query().filter_by().first.return_value = None mock_session.query().filter_by().first.return_value = None
with pytest.raises(NoPermissionError, match="You do not have permission to access this dataset."): with pytest.raises(NoPermissionError, match="You do not have permission to access this dataset."):
DatasetService.check_dataset_permission(self.dataset, self.normal_user) DatasetService.check_dataset_permission(self.dataset, self.normal_user)
# Verify database was queried correctly # Verify database was queried correctly
mock_session.query().filter_by.assert_called_with( mock_session.query().filter_by.assert_called_with(dataset_id=self.dataset.id, account_id=self.normal_user.id)
dataset_id=self.dataset.id,
account_id=self.normal_user.id
)
@patch('services.dataset_service.db.session') @patch("services.dataset_service.db.session")
def test_partial_team_permission_non_creator_without_permission_fails(self, mock_session): def test_partial_team_permission_non_creator_without_permission_fails(self, mock_session):
"""Test that non-creators without explicit permission are denied access""" """Test that non-creators without explicit permission are denied access"""
self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM
# Create a different user (not the creator) # Create a different user (not the creator)
other_user = Mock(spec=Account) other_user = Mock(spec=Account)
other_user.id = "other-user-123" other_user.id = "other-user-123"
other_user.current_tenant_id = self.tenant_id other_user.current_tenant_id = self.tenant_id
other_user.current_role = TenantAccountRole.NORMAL other_user.current_role = TenantAccountRole.NORMAL
# Mock database query to return None (no permission record) # Mock database query to return None (no permission record)
mock_session.query().filter_by().first.return_value = None mock_session.query().filter_by().first.return_value = None
with pytest.raises(NoPermissionError, match="You do not have permission to access this dataset."): with pytest.raises(NoPermissionError, match="You do not have permission to access this dataset."):
DatasetService.check_dataset_permission(self.dataset, other_user) DatasetService.check_dataset_permission(self.dataset, other_user)
@ -144,21 +138,21 @@ class TestDatasetPermissionService:
"""Test that the method correctly uses DatasetPermissionEnum.PARTIAL_TEAM""" """Test that the method correctly uses DatasetPermissionEnum.PARTIAL_TEAM"""
# This test ensures we're using the enum instead of string literals # This test ensures we're using the enum instead of string literals
self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM
# Creator should always have access # Creator should always have access
DatasetService.check_dataset_permission(self.dataset, self.creator_user) DatasetService.check_dataset_permission(self.dataset, self.creator_user)
@patch('services.dataset_service.logging') @patch("services.dataset_service.logging")
@patch('services.dataset_service.db.session') @patch("services.dataset_service.db.session")
def test_permission_denied_logs_debug_message(self, mock_session, mock_logging): def test_permission_denied_logs_debug_message(self, mock_session, mock_logging):
"""Test that permission denied events are logged""" """Test that permission denied events are logged"""
self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM self.dataset.permission = DatasetPermissionEnum.PARTIAL_TEAM
mock_session.query().filter_by().first.return_value = None mock_session.query().filter_by().first.return_value = None
with pytest.raises(NoPermissionError): with pytest.raises(NoPermissionError):
DatasetService.check_dataset_permission(self.dataset, self.normal_user) DatasetService.check_dataset_permission(self.dataset, self.normal_user)
# Verify debug message was logged # Verify debug message was logged
mock_logging.debug.assert_called_with( mock_logging.debug.assert_called_with(
f"User {self.normal_user.id} does not have permission to access dataset {self.dataset.id}" f"User {self.normal_user.id} does not have permission to access dataset {self.dataset.id}"
) )

Loading…
Cancel
Save