blk_file_python/tests/test_app.py
2025-05-07 20:02:10 +05:30

60 lines
2.3 KiB
Python

import unittest
import os
import sys
from unittest.mock import patch, MagicMock
# Add parent directory to path so we can import the application
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from src.app import Application
from src.protocols.protocol_interface import FileTransferProtocol
from src.utils.config import Config
class TestApplication(unittest.TestCase):
"""Test cases for the main application"""
@patch('src.utils.config.Config')
def test_application_init(self, mock_config):
"""Test application initialization"""
# Set up mock configuration
mock_config_instance = MagicMock()
mock_config.return_value = mock_config_instance
# Initialize application
app = Application()
# Verify application initialized correctly
self.assertIsNotNone(app.logger)
self.assertIsNotNone(app.monitoring)
self.assertFalse(app.running)
@patch('src.utils.config.Config')
@patch('src.protocols.protocol_factory.ProtocolFactory.create_protocol')
def test_create_protocol(self, mock_create_protocol, mock_config):
"""Test protocol creation"""
# Set up mock configuration
mock_config_instance = MagicMock()
mock_config_instance.get.side_effect = lambda section, key: {
('app', 'TRANSFER_PROTOCOL'): 'SSH',
('server', 'REMOTE_HOST'): 'testhost',
('server', 'REMOTE_USER'): 'testuser',
('server', 'REMOTE_PASS'): 'testpass',
}.get((section, key))
mock_config_instance.get_int.return_value = 22
mock_config.return_value = mock_config_instance
# Set up mock protocol
mock_protocol = MagicMock(spec=FileTransferProtocol)
mock_create_protocol.return_value = mock_protocol
# Initialize application and create protocol
app = Application()
protocol = app._create_protocol()
# Verify protocol was created correctly
self.assertEqual(protocol, mock_protocol)
mock_create_protocol.assert_called_once_with('SSH', 'testhost', 'testuser', 'testpass', 22)
if __name__ == '__main__':
unittest.main()