File: test_control.py

package info (click to toggle)
tractor 5.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 248 kB
  • sloc: python: 1,489; xml: 71; makefile: 4; sh: 2
file content (112 lines) | stat: -rw-r--r-- 3,273 bytes parent folder | download
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
# Released under GPLv3+ License
# Danial Behzadi <dani.behzi@ubuntu.com>, 2024.
"""
Unit tests for db
"""

import unittest
from unittest.mock import patch, MagicMock
from tractor import control


class SendSignal(unittest.TestCase):
    """
    test case for send_signal
    """

    @patch("tractor.control._get_controller")
    def test_send_signal_term(self, mock_get_controller, *_):
        """
        send defined signals
        """
        # Arrange
        mock_controller = MagicMock()
        mock_get_controller.return_value = mock_controller
        # Act & Assert
        control.send_signal("term")
        mock_controller.signal.assert_called_once_with("TERM")

    @patch("tractor.control._get_controller")
    def test_send_signal_newnym(self, mock_get_controller, *_):
        """
        send defined signals
        """
        # Arrange
        mock_controller = MagicMock()
        mock_get_controller.return_value = mock_controller
        # Act & Assert
        control.send_signal("newnym")
        mock_controller.signal.assert_called_once_with("NEWNYM")

    @patch("tractor.control._get_controller", return_value=True)
    def test_send_signal_fail(self, mock_get_controller, *_):
        """
        undefined signal
        """
        # Arrange
        mock_controller = MagicMock()
        mock_get_controller.return_value = mock_controller
        # Act & Assert
        with self.assertRaises(ValueError):
            control.send_signal("kill")


class GetListener(unittest.TestCase):
    """
    test case for get_listener
    """

    @patch("tractor.control._get_controller")
    def test_get_listener_success(self, mock_get_controller, *_):
        """
        get listener of any type
        """
        # Arrange
        mock_controller = MagicMock()
        mock_controller.get_listeners.return_value = [9052]
        mock_get_controller.return_value = mock_controller
        # Act
        result = control.get_listener("socks")
        # Assert
        mock_get_controller.assert_called_once()
        mock_controller.get_listeners.assert_called_once_with("socks")
        self.assertEqual(result, 9052)

    @patch("tractor.control._get_controller", return_value = False)
    def test_get_listener_fail(self, *_):
        """
        get listener of any type
        """
        # Act & Assert
        with self.assertRaises(ValueError):
            control.get_listener("ftp")


class GetPid(unittest.TestCase):
    """
    test case for get_pid
    """

    @patch("tractor.control._get_controller")
    def test_get_pid_success(self, mock_get_controller, *_):
        """
        Test get_pid returns a valid PID when controller is available.
        """
        # Arrange
        mock_controller = MagicMock()
        mock_controller.get_pid.return_value = 5678
        mock_get_controller.return_value = mock_controller
        # Act
        result = control.get_pid()
        # Assert
        self.assertEqual(result, 5678)

    @patch("tractor.control._get_controller", return_value = False)
    def test_get_pid_fail(self, *_):
        """
        Test get_pid returns 0 when no controller is returned.
        """
        # Act
        result = control.get_pid()
        # Assert
        self.assertEqual(result, 0)