osgos_postinstall/tests/test_docker.py

68 lines
2.6 KiB
Python
Raw Normal View History

2025-06-09 14:32:16 +05:00
import unittest
from unittest.mock import patch, MagicMock
from docker_config import DockerConfig, REGISTRY_URL, REGISTRY_LOGIN, REGISTRY_PASSWORD, DOCKER_COMPOSE_FILE_PATH
class TestDockerConfig(unittest.TestCase):
def setUp(self):
self.docker_config = DockerConfig()
@patch("subprocess.run")
def test_check_installed_true(self, mock_run):
mock_run.return_value.returncode = 0
self.assertTrue(self.docker_config.check_installed("docker"))
@patch("subprocess.run")
def test_check_installed_false(self, mock_run):
mock_run.return_value.returncode = 1
self.assertFalse(self.docker_config.check_installed("docker"))
@patch("subprocess.run")
def test_install_docker(self, mock_run):
self.docker_config.install_docker()
mock_run.assert_any_call(["apt-get", "update"], check=True)
mock_run.assert_any_call(["apt-get", "install", "-y", "docker.io"], check=True)
mock_run.assert_any_call(
["apt-get", "install", "-y", "docker-compose"], check=True
)
@patch("subprocess.run")
def test_check_docker_login_success(self, mock_run):
mock_run.return_value.stdout = "Login Succeeded"
self.assertTrue(self.docker_config.check_docker_login("registry_url"))
@patch("subprocess.run")
def test_check_docker_login_failure(self, mock_run):
mock_run.return_value.stdout = "Login Failed"
self.assertFalse(self.docker_config.check_docker_login("registry_url"))
@patch("subprocess.run")
@patch("docker_config.DockerConfig.check_docker_login")
def test_login_to_registry(self, mock_check_login, mock_run):
mock_check_login.return_value = False
self.docker_config.login_to_registry()
mock_run.assert_called_once()
@patch("subprocess.run")
@patch("docker_config.DockerConfig.check_docker_login")
@patch("docker_config.DockerConfig.login_to_registry")
@patch("builtins.open", new_callable=unittest.mock.mock_open)
def test_install_portainer(self, mock_open, mock_login, mock_check_login, mock_run):
mock_check_login.return_value = True
self.docker_config.install_portainer("9000", "admin", "password", "127.0.0.1")
mock_open.assert_called()
mock_run.assert_called()
def test_validate_input_success(self):
self.assertTrue(
self.docker_config.validate_input("admin", r"^[a-zA-Z0-9_-]+$", "Error")
)
def test_validate_input_failure(self):
self.assertFalse(
self.docker_config.validate_input("admin@", r"^[a-zA-Z0-9_-]+$", "Error")
)
if __name__ == "__main__":
unittest.main()