mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-29 15:25:02 +08:00

The PrintInformation test wasn't cleaning up after itself correclty. This left some stuff behind that the other tests were using. Since this is bad (as at that point tests can influence other tests), i've fixed that
140 lines
5.8 KiB
Python
140 lines
5.8 KiB
Python
import time
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from PyQt5.QtNetwork import QNetworkAccessManager
|
|
from PyQt5.QtCore import QUrl
|
|
from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState
|
|
from cura.PrinterOutput.PrinterOutputDevice import ConnectionState
|
|
|
|
|
|
def test_properties():
|
|
properties = { b"firmware_version": b"12", b"printer_type": b"BHDHAHHADAD", b"address": b"ZOMG", b"name": b":(", b"testProp": b"zomg"}
|
|
with patch("UM.Qt.QtApplication.QtApplication.getInstance"):
|
|
output_device = NetworkedPrinterOutputDevice(device_id = "test", address = "127.0.0.1", properties = properties)
|
|
assert output_device.address == "ZOMG"
|
|
assert output_device.firmwareVersion == "12"
|
|
assert output_device.printerType == "BHDHAHHADAD"
|
|
assert output_device.ipAddress == "127.0.0.1"
|
|
assert output_device.name == ":("
|
|
assert output_device.key == "test"
|
|
assert output_device.getProperties() == properties
|
|
|
|
assert output_device.getProperty("testProp") == "zomg"
|
|
assert output_device.getProperty("whateverr") == ""
|
|
|
|
|
|
def test_authenticationState():
|
|
with patch("UM.Qt.QtApplication.QtApplication.getInstance"):
|
|
output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={})
|
|
|
|
output_device.setAuthenticationState(AuthState.Authenticated)
|
|
|
|
assert output_device.authenticationState == AuthState.Authenticated
|
|
|
|
|
|
def test_post():
|
|
with patch("UM.Qt.QtApplication.QtApplication.getInstance"):
|
|
output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={})
|
|
mocked_network_manager = MagicMock()
|
|
output_device._manager = mocked_network_manager
|
|
|
|
# Create a fake reply (we cant use a QReply, since those are abstract C++)
|
|
reply = MagicMock()
|
|
reply.operation = MagicMock(return_value=QNetworkAccessManager.PostOperation)
|
|
reply.url = MagicMock(return_value=QUrl("127.0.0.1"))
|
|
mocked_network_manager.post = MagicMock(return_value = reply)
|
|
|
|
mocked_callback_handler = MagicMock()
|
|
output_device.post("whatever", "omgzomg", on_finished = mocked_callback_handler.onFinished)
|
|
|
|
# So we now fake that the request was sucesful.
|
|
output_device._handleOnFinished(reply)
|
|
|
|
# We expect to get a callback regarding this.
|
|
mocked_callback_handler.onFinished.assert_called_once_with(reply)
|
|
|
|
|
|
def test_get():
|
|
with patch("UM.Qt.QtApplication.QtApplication.getInstance"):
|
|
output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={})
|
|
mocked_network_manager = MagicMock()
|
|
output_device._manager = mocked_network_manager
|
|
|
|
# Create a fake reply (we cant use a QReply, since those are abstract C++)
|
|
reply = MagicMock()
|
|
reply.operation = MagicMock(return_value=QNetworkAccessManager.PostOperation)
|
|
reply.url = MagicMock(return_value=QUrl("127.0.0.1"))
|
|
mocked_network_manager.get = MagicMock(return_value=reply)
|
|
|
|
mocked_callback_handler = MagicMock()
|
|
output_device.get("whatever", on_finished=mocked_callback_handler.onFinished)
|
|
|
|
# So we now fake that the request was sucesful.
|
|
output_device._handleOnFinished(reply)
|
|
|
|
# We expect to get a callback regarding this.
|
|
mocked_callback_handler.onFinished.assert_called_once_with(reply)
|
|
|
|
|
|
def test_delete():
|
|
with patch("UM.Qt.QtApplication.QtApplication.getInstance"):
|
|
output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={})
|
|
mocked_network_manager = MagicMock()
|
|
output_device._manager = mocked_network_manager
|
|
|
|
# Create a fake reply (we cant use a QReply, since those are abstract C++)
|
|
reply = MagicMock()
|
|
reply.operation = MagicMock(return_value=QNetworkAccessManager.PostOperation)
|
|
reply.url = MagicMock(return_value=QUrl("127.0.0.1"))
|
|
mocked_network_manager.deleteResource = MagicMock(return_value=reply)
|
|
|
|
mocked_callback_handler = MagicMock()
|
|
output_device.delete("whatever", on_finished=mocked_callback_handler.onFinished)
|
|
|
|
# So we now fake that the request was sucesful.
|
|
output_device._handleOnFinished(reply)
|
|
|
|
# We expect to get a callback regarding this.
|
|
mocked_callback_handler.onFinished.assert_called_once_with(reply)
|
|
|
|
|
|
def test_put():
|
|
with patch("UM.Qt.QtApplication.QtApplication.getInstance"):
|
|
output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={})
|
|
mocked_network_manager = MagicMock()
|
|
output_device._manager = mocked_network_manager
|
|
|
|
# Create a fake reply (we cant use a QReply, since those are abstract C++)
|
|
reply = MagicMock()
|
|
reply.operation = MagicMock(return_value=QNetworkAccessManager.PostOperation)
|
|
reply.url = MagicMock(return_value=QUrl("127.0.0.1"))
|
|
mocked_network_manager.put = MagicMock(return_value = reply)
|
|
|
|
mocked_callback_handler = MagicMock()
|
|
output_device.put("whatever", "omgzomg", on_finished = mocked_callback_handler.onFinished)
|
|
|
|
# So we now fake that the request was sucesful.
|
|
output_device._handleOnFinished(reply)
|
|
|
|
# We expect to get a callback regarding this.
|
|
mocked_callback_handler.onFinished.assert_called_once_with(reply)
|
|
|
|
|
|
def test_timeout():
|
|
with patch("UM.Qt.QtApplication.QtApplication.getInstance"):
|
|
output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={})
|
|
output_device.setConnectionState(ConnectionState.Connected)
|
|
|
|
assert output_device.connectionState == ConnectionState.Connected
|
|
output_device._update()
|
|
# Pretend we didn't get any response for 15 seconds
|
|
output_device._last_response_time = time.time() - 15
|
|
# But we did recently ask for a response!
|
|
output_device._last_request_time = time.time() - 5
|
|
output_device._update()
|
|
|
|
# The connection should now be closed, since it went into timeout.
|
|
assert output_device.connectionState == ConnectionState.Closed
|
|
|
|
|