hot fixes for several UI and logic issues
This commit is contained in:
@@ -215,23 +215,63 @@ Missing,Columns,Here
|
||||
service.delete_config('nonexistent.yaml')
|
||||
|
||||
def test_delete_config_used_by_schedule(self, service, temp_configs_dir, sample_yaml_config, monkeypatch):
|
||||
"""Test deleting config that is used by schedules"""
|
||||
"""Test deleting config that is used by schedules - should cascade delete schedules"""
|
||||
# Create a config file
|
||||
config_path = os.path.join(temp_configs_dir, 'test-scan.yaml')
|
||||
with open(config_path, 'w') as f:
|
||||
f.write(sample_yaml_config)
|
||||
|
||||
# Mock get_schedules_using_config to return schedules
|
||||
def mock_get_schedules(filename):
|
||||
return ['Daily Scan', 'Weekly Audit']
|
||||
# Mock schedule service interactions
|
||||
deleted_schedule_ids = []
|
||||
|
||||
monkeypatch.setattr(service, 'get_schedules_using_config', mock_get_schedules)
|
||||
class MockScheduleService:
|
||||
def __init__(self, db):
|
||||
self.db = db
|
||||
|
||||
with pytest.raises(ValueError, match="used by the following schedules"):
|
||||
service.delete_config('test-scan.yaml')
|
||||
def list_schedules(self, page=1, per_page=10000):
|
||||
return {
|
||||
'schedules': [
|
||||
{
|
||||
'id': 1,
|
||||
'name': 'Daily Scan',
|
||||
'config_file': 'test-scan.yaml',
|
||||
'enabled': True
|
||||
},
|
||||
{
|
||||
'id': 2,
|
||||
'name': 'Weekly Audit',
|
||||
'config_file': 'test-scan.yaml',
|
||||
'enabled': False # Disabled schedule should also be deleted
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
# Config should still exist
|
||||
assert service.config_exists('test-scan.yaml')
|
||||
def delete_schedule(self, schedule_id):
|
||||
deleted_schedule_ids.append(schedule_id)
|
||||
return True
|
||||
|
||||
# Mock the ScheduleService import
|
||||
import sys
|
||||
from unittest.mock import MagicMock
|
||||
mock_module = MagicMock()
|
||||
mock_module.ScheduleService = MockScheduleService
|
||||
monkeypatch.setitem(sys.modules, 'web.services.schedule_service', mock_module)
|
||||
|
||||
# Mock current_app
|
||||
mock_app = MagicMock()
|
||||
mock_app.db_session = MagicMock()
|
||||
|
||||
import flask
|
||||
monkeypatch.setattr(flask, 'current_app', mock_app)
|
||||
|
||||
# Delete the config - should cascade delete associated schedules
|
||||
service.delete_config('test-scan.yaml')
|
||||
|
||||
# Config should be deleted
|
||||
assert not service.config_exists('test-scan.yaml')
|
||||
|
||||
# Both schedules (enabled and disabled) should be deleted
|
||||
assert deleted_schedule_ids == [1, 2]
|
||||
|
||||
def test_validate_config_content_valid(self, service):
|
||||
"""Test validating valid config content"""
|
||||
|
||||
Reference in New Issue
Block a user