/ tests / test_topology.py
test_topology.py
 1  # Python Imports
 2  import unittest
 3  from unittest.mock import patch
 4  
 5  # Project Imports
 6  from src import topology
 7  
 8  
 9  class TestTopology(unittest.TestCase):
10      @patch('builtins.open')
11      @patch('tomllib.load')
12      def test_load_topics_nwaku(self, mock_toml_load, mock_open):
13          mock_node_info = {
14              "node_config": "config.toml",
15              "image": "nim-waku",
16          }
17          mock_nodes = {"node1": {}, "node2": {}}
18          mock_toml_config = {"topics": "topic1 topic2 topic3"}
19          mock_toml_load.return_value = mock_toml_config
20  
21          topology._load_topics(mock_node_info, mock_nodes, "node1", "/path/to/tomls/")
22          mock_open.assert_called_once_with('/path/to/tomls/config.toml', mode='rb')
23          mock_toml_load.assert_called_once_with(mock_open.return_value.__enter__.return_value)
24          self.assertListEqual(mock_nodes["node1"]["topics"], ["topic1", "topic2", "topic3"])
25  
26      @patch('builtins.open')
27      @patch('tomllib.load')
28      def test_load_topics_gowaku(self, mock_toml_load, mock_open):
29          mock_node_info = {
30              "node_config": "config.toml",
31              "image": "go-waku",
32          }
33          mock_nodes = {"node1": {}, "node2": {}}
34          mock_toml_config = {"topics": ["topic1", "topic2", "topic3"]}
35          mock_toml_load.return_value = mock_toml_config
36  
37          topology._load_topics(mock_node_info, mock_nodes, "node1", "/path/to/tomls/")
38          mock_open.assert_called_once_with('/path/to/tomls/config.toml', mode='rb')
39          mock_toml_load.assert_called_once_with(mock_open.return_value.__enter__.return_value)
40          self.assertListEqual(mock_nodes["node1"]["topics"], ["topic1", "topic2", "topic3"])
41  
42      @patch('builtins.open')
43      @patch('tomllib.load')
44      def test_load_topics_into_topology(self, mock_toml_load, mock_open):
45          nodes = {
46              "nodes": {
47                  "node1": {
48                      "node_config": "config.toml",
49                      "image": "nim-waku",
50                  },
51                  "node2": {
52                      "node_config": "config.toml",
53                      "image": "nim-waku",
54                  }}
55          }
56          mock_toml_config = {"topics": "topic1 topic2 topic3"}
57          mock_toml_load.return_value = mock_toml_config
58  
59          topology.load_topics_into_topology(nodes, "")
60  
61          self.assertEqual(nodes["nodes"]["node1"]["topics"], ["topic1", "topic2", "topic3"])
62          self.assertEqual(nodes["nodes"]["node2"]["topics"], ["topic1", "topic2", "topic3"])