forked from fedbiomed/fedbiomed
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_common_utils.py
154 lines (118 loc) · 6.08 KB
/
test_common_utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import configparser
import unittest
import tempfile
import os
import shutil
from unittest.mock import patch, MagicMock
from fedbiomed.common.utils._config_utils import _get_fedbiomed_root, get_component_config, \
get_component_certificate_from_config, get_all_existing_config_files, get_all_existing_certificates, \
get_existing_component_db_names
from fedbiomed.common.exceptions import FedbiomedError
class TestCommonConfigUtils(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_01_common_config_utils_get_fedbiomed_root(self):
"""Test fedbiomed get root """
root = _get_fedbiomed_root()
dirpaths_to_check = [root, os.path.join(root,"fedbiomed"), os.path.join(root, "fedbiomed/common"), os.path.join(root, "fedbiomed/node"), os.path.join(root, "fedbiomed/researcher") ]
for dirpath in dirpaths_to_check:
self.assertTrue( os.path.exists(dirpath), f"a required path does not exist. Offending value = {dirpath}" )
self.assertTrue( os.path.isdir(dirpath), f"a required path is not a directory. Offending value = {dirpath}" )
@patch("fedbiomed.common.utils._config_utils.configparser")
def test_02_common_config_utils_get_component_config(self,
mock_configparser):
config_mock = MagicMock()
mock_configparser.ConfigParser.return_value = config_mock
# Get component config
get_component_config("dummy/path")
config_mock.read.assert_called_once_with("dummy/path")
config_mock.read.side_effect = Exception
with self.assertRaises(FedbiomedError):
get_component_config("dummy/path")
@patch("fedbiomed.common.utils._config_utils.get_component_config")
@patch("fedbiomed.common.utils._config_utils.os.path.isfile")
def test_03_common_config_utils_get_component_certificate_from_config(self,
mock_is_file,
mock_get_component_config):
cfg = configparser.ConfigParser()
cfg["default"] = {
"id": "node-id",
"component": "NODE"
}
cfg["mpspdz"] = {
"mpspdz_ip": "localhost",
"mpspdz_port": 1234,
"public_key": "path/to/certificate"
}
mock_get_component_config.return_value = cfg
mock_is_file.return_value = False
with self.assertRaises(FedbiomedError):
get_component_certificate_from_config("dummy/path/to/config")
mock_is_file.return_value = True
with patch("builtins.open") as mock_open:
mock_open.side_effect = Exception
with self.assertRaises(FedbiomedError):
get_component_certificate_from_config("dummy/path/to/config")
mock_open.side_effect = None
mock_open.return_value.__enter__.return_value.read.return_value = "test-certificate"
cert = get_component_certificate_from_config("dummy/path/to/config")
self.assertDictEqual(cert, {'certificate': 'test-certificate',
'component': 'NODE',
'ip': 'localhost',
'party_id': 'node-id',
'port': '1234'}
)
def test_03_common_config_utils_get_all_existing_config_files(self):
test_dir = tempfile.mkdtemp()
os.mkdir(os.path.join(test_dir, "etc"))
file_ = os.path.join(test_dir, "etc", "test-test-config-util.ini")
with open(file_, "w") as file:
file.write("Hello world")
file.close()
with patch('fedbiomed.common.utils._config_utils.ROOT_DIR', test_dir):
files = get_all_existing_config_files()
self.assertListEqual(files, [file_])
shutil.rmtree(test_dir)
@patch("fedbiomed.common.utils._config_utils.get_all_existing_config_files")
@patch("fedbiomed.common.utils._config_utils.get_component_certificate_from_config")
def test_03_common_config_utils_get_all_existing_certificates(self,
mock_get_component_certificate,
mock_get_all_existing_config_files):
certificates = [
{
"party_id": 'node-1',
"certificate": "test-certificate-1",
"ip": "localhost",
"port": 1234,
"component": "NODE"
},
{
"party_id": 'node-1',
"certificate": "test-certificate-1",
"ip": "localhost",
"port": 1234,
"component": "NODE"
}
]
mock_get_component_certificate.side_effect = certificates
mock_get_all_existing_config_files.return_value = ["test", "test"]
certificates_ = get_all_existing_certificates()
self.assertListEqual(certificates_, certificates)
@patch("fedbiomed.common.utils._config_utils.get_all_existing_config_files")
@patch("fedbiomed.common.utils._config_utils.get_component_config")
def test_03_common_config_utils_get_existing_component_db_names(self,
mock_get_component_config,
mock_get_all_existing_config_files
):
cfg_1 = configparser.ConfigParser()
cfg_2 = configparser.ConfigParser()
cfg_1["default"] = {"id": "node-1"}
cfg_2["default"] = {"id": "node-2"}
mock_get_all_existing_config_files.return_value = ["test", "test"]
mock_get_component_config.side_effect = [cfg_1, cfg_2]
result = get_existing_component_db_names()
self.assertDictEqual(result, {"node-1": "db_node-1", "node-2": "db_node-2"})
if __name__ == "__main__":
unittest.main()