68 lines
2.7 KiB
Python
68 lines
2.7 KiB
Python
import unittest
|
|
from unittest.mock import Mock, patch
|
|
from pyvncs.server import VNCServer
|
|
|
|
class TestVNCServer(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.socket_mock = Mock()
|
|
self.vnc_config_mock = Mock()
|
|
self.vnc_config_mock.win_title = "Test Window Title"
|
|
self.vnc_server = VNCServer(socket=self.socket_mock, password="test_password", auth_type=2, vnc_config=self.vnc_config_mock)
|
|
|
|
def test_constructor(self):
|
|
self.assertEqual(self.vnc_server.password, "test_password")
|
|
self.assertIsNotNone(self.vnc_server.socket)
|
|
|
|
def test_send_message(self):
|
|
message = "Test message"
|
|
encoded_message = bytes(message, 'iso8859-1')
|
|
message_length = len(encoded_message)
|
|
with patch('struct.pack') as mock_pack:
|
|
mock_pack.return_value = b'' # Simulate the packed message
|
|
self.vnc_server.send_message(message)
|
|
mock_pack.assert_called() # Verificar que se llamó, pero no con argumentos específicos
|
|
self.socket_mock.send.assert_called() # Verificar que se envió el mensaje
|
|
|
|
def test_get_buffer_timeout(self):
|
|
self.socket_mock.recv.side_effect = TimeoutError
|
|
result = self.vnc_server.get_buffer(30)
|
|
self.assertIsNone(result)
|
|
|
|
def test_init(self):
|
|
# Mock the responses for version handshake and security type handshake
|
|
self.socket_mock.recv.side_effect = [
|
|
b"RFB 003.008\n", # Client version response
|
|
b"\x02" # Security type response (VNCAuth)
|
|
]
|
|
|
|
# Mock ImageGrab.grab() called in server_init
|
|
with patch('pyvncs.server.ImageGrab.grab') as mock_grab:
|
|
mock_grab.return_value.size = (1024, 768)
|
|
# Mock any other dependencies in server_init here if necessary
|
|
|
|
result = self.vnc_server.init()
|
|
self.assertTrue(result)
|
|
|
|
def test_server_init(self):
|
|
with patch('pyvncs.server.ImageGrab.grab') as mock_grab:
|
|
mock_grab.return_value.size = (1024, 768)
|
|
self.vnc_server.server_init()
|
|
self.assertEqual(self.vnc_server.width, 1024)
|
|
self.assertEqual(self.vnc_server.height, 768)
|
|
|
|
def test_handle_client_keyboard_event(self):
|
|
# Simulate a keyboard event
|
|
self.socket_mock.recv.side_effect = [
|
|
b'\x04', # Indicating a keyboard event
|
|
b'additional data for the keyboard event'
|
|
]
|
|
with patch('pyvncs.server.kbdctrl.KeyboardController.process_event') as mock_kbd_event:
|
|
self.vnc_server.handle_client()
|
|
mock_kbd_event.assert_called_with(b'additional data for the keyboard event')
|
|
|
|
# TODO: Agregar más pruebas según sea necesario
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|