|
1 | 1 | import os |
2 | 2 | import time |
3 | 3 | from time import sleep |
| 4 | +from unittest.mock import MagicMock |
4 | 5 |
|
5 | 6 | import mock |
6 | 7 | import pytest |
7 | 8 |
|
8 | | -from node_cli.utils.docker_utils import docker_cleanup, save_container_logs, safe_rm |
| 9 | +from node_cli.utils.docker_utils import ( |
| 10 | + docker_cleanup, |
| 11 | + get_all_ima_containers, |
| 12 | + get_all_skaled_containers, |
| 13 | + save_container_logs, |
| 14 | + safe_rm, |
| 15 | +) |
9 | 16 | from node_cli.configs import REMOVED_CONTAINERS_FOLDER_PATH |
10 | 17 |
|
11 | 18 |
|
@@ -95,3 +102,56 @@ def test_docker_cleanup(dclient, simple_container): |
95 | 102 |
|
96 | 103 | with mock.patch('node_cli.utils.docker_utils.run_cmd', side_effect=ValueError): |
97 | 104 | docker_cleanup(dclient=dclient) |
| 105 | + |
| 106 | + |
| 107 | +def _make_container(name: str) -> MagicMock: |
| 108 | + c = MagicMock() |
| 109 | + c.name = name |
| 110 | + c.id = name |
| 111 | + return c |
| 112 | + |
| 113 | + |
| 114 | +def test_get_all_skaled_containers_both_prefixes(): |
| 115 | + new_container = _make_container('sk_skaled_chain1') |
| 116 | + legacy_container = _make_container('skale_schain_chain2') |
| 117 | + |
| 118 | + def fake_list(all=True, filters=None): |
| 119 | + prefix = filters['name'] |
| 120 | + if prefix == 'sk_skaled_': |
| 121 | + return [new_container] |
| 122 | + if prefix == 'skale_schain_': |
| 123 | + return [legacy_container] |
| 124 | + return [] |
| 125 | + |
| 126 | + mock_dc = MagicMock() |
| 127 | + mock_dc.containers.list.side_effect = fake_list |
| 128 | + |
| 129 | + with mock.patch('node_cli.utils.docker_utils.docker_client', return_value=mock_dc): |
| 130 | + result = get_all_skaled_containers() |
| 131 | + |
| 132 | + assert len(result) == 2 |
| 133 | + names = {c.name for c in result} |
| 134 | + assert names == {'sk_skaled_chain1', 'skale_schain_chain2'} |
| 135 | + |
| 136 | + |
| 137 | +def test_get_all_ima_containers_both_prefixes(): |
| 138 | + new_container = _make_container('sk_ima_chain1') |
| 139 | + legacy_container = _make_container('skale_ima_chain2') |
| 140 | + |
| 141 | + def fake_list(all=True, filters=None): |
| 142 | + prefix = filters['name'] |
| 143 | + if prefix == 'sk_ima_': |
| 144 | + return [new_container] |
| 145 | + if prefix == 'skale_ima_': |
| 146 | + return [legacy_container] |
| 147 | + return [] |
| 148 | + |
| 149 | + mock_dc = MagicMock() |
| 150 | + mock_dc.containers.list.side_effect = fake_list |
| 151 | + |
| 152 | + with mock.patch('node_cli.utils.docker_utils.docker_client', return_value=mock_dc): |
| 153 | + result = get_all_ima_containers() |
| 154 | + |
| 155 | + assert len(result) == 2 |
| 156 | + names = {c.name for c in result} |
| 157 | + assert names == {'sk_ima_chain1', 'skale_ima_chain2'} |
0 commit comments