init
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Add api directory to path
|
||||
api_dir = Path(__file__).parent.parent / 'api'
|
||||
sys.path.insert(0, str(api_dir))
|
||||
import unittest
|
||||
from unittest.mock import patch, MagicMock
|
||||
from container_manager import ContainerManager
|
||||
|
||||
class TestContainerManager(unittest.TestCase):
|
||||
@patch('docker.from_env')
|
||||
def test_list_containers(self, mock_from_env):
|
||||
mock_client = MagicMock()
|
||||
mock_container = MagicMock()
|
||||
mock_container.id = 'abc'
|
||||
mock_container.name = 'test'
|
||||
mock_container.status = 'running'
|
||||
mock_container.image.tags = ['img']
|
||||
mock_container.labels = {}
|
||||
mock_client.containers.list.return_value = [mock_container]
|
||||
mock_from_env.return_value = mock_client
|
||||
mgr = ContainerManager()
|
||||
result = mgr.list_containers()
|
||||
self.assertEqual(result[0]['name'], 'test')
|
||||
@patch('docker.from_env')
|
||||
def test_start_stop_restart_container(self, mock_from_env):
|
||||
mock_client = MagicMock()
|
||||
mock_container = MagicMock()
|
||||
mock_client.containers.get.return_value = mock_container
|
||||
mock_from_env.return_value = mock_client
|
||||
mgr = ContainerManager()
|
||||
# Start
|
||||
self.assertTrue(mgr.start_container('test'))
|
||||
mock_container.start.assert_called_once()
|
||||
# Stop
|
||||
self.assertTrue(mgr.stop_container('test'))
|
||||
mock_container.stop.assert_called_once()
|
||||
# Restart
|
||||
self.assertTrue(mgr.restart_container('test'))
|
||||
mock_container.restart.assert_called_once()
|
||||
# Exception cases
|
||||
mock_client.containers.get.side_effect = Exception('fail')
|
||||
self.assertFalse(mgr.start_container('bad'))
|
||||
self.assertFalse(mgr.stop_container('bad'))
|
||||
self.assertFalse(mgr.restart_container('bad'))
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user