Simplify OSUpdate by using ConnectivityManager

This commit is contained in:
Thomas Farstrike
2025-11-18 12:20:01 +01:00
parent aa1b358fac
commit 8ed59476c6
2 changed files with 77 additions and 167 deletions
+1 -86
View File
@@ -39,92 +39,7 @@ from mpos import PackageManager
# Import the actual classes we're testing
# Tests run from internal_filesystem/, so we add the assets directory to path
sys.path.append('builtin/apps/com.micropythonos.osupdate/assets')
from osupdate import NetworkMonitor, UpdateChecker, UpdateDownloader, round_up_to_multiple
class TestNetworkMonitor(unittest.TestCase):
"""Test NetworkMonitor class."""
def test_is_connected_with_connected_network(self):
"""Test that is_connected returns True when network is connected."""
mock_network = MockNetwork(connected=True)
monitor = NetworkMonitor(network_module=mock_network)
self.assertTrue(monitor.is_connected())
def test_is_connected_with_disconnected_network(self):
"""Test that is_connected returns False when network is disconnected."""
mock_network = MockNetwork(connected=False)
monitor = NetworkMonitor(network_module=mock_network)
self.assertFalse(monitor.is_connected())
def test_is_connected_without_network_module(self):
"""Test that is_connected returns True when no network module (desktop mode)."""
monitor = NetworkMonitor(network_module=None)
# Should return True (assume connected) in desktop mode
self.assertTrue(monitor.is_connected())
def test_is_connected_with_exception(self):
"""Test that is_connected returns False when WLAN raises exception."""
class BadNetwork:
STA_IF = 0
def WLAN(self, interface):
raise Exception("WLAN error")
monitor = NetworkMonitor(network_module=BadNetwork())
self.assertFalse(monitor.is_connected())
def test_network_state_change_detection(self):
"""Test detecting network state changes."""
mock_network = MockNetwork(connected=True)
monitor = NetworkMonitor(network_module=mock_network)
# Initially connected
self.assertTrue(monitor.is_connected())
# Disconnect
mock_network.set_connected(False)
self.assertFalse(monitor.is_connected())
# Reconnect
mock_network.set_connected(True)
self.assertTrue(monitor.is_connected())
def test_multiple_checks_when_connected(self):
"""Test that multiple checks return consistent results."""
mock_network = MockNetwork(connected=True)
monitor = NetworkMonitor(network_module=mock_network)
# Multiple checks should all return True
for _ in range(5):
self.assertTrue(monitor.is_connected())
def test_wlan_with_different_interface_types(self):
"""Test that correct interface type is used."""
class NetworkWithInterface:
STA_IF = 0
CALLED_WITH = None
class MockWLAN:
def __init__(self, interface):
NetworkWithInterface.CALLED_WITH = interface
self._connected = True
def isconnected(self):
return self._connected
def WLAN(self, interface):
return self.MockWLAN(interface)
network = NetworkWithInterface()
monitor = NetworkMonitor(network_module=network)
monitor.is_connected()
# Should have been called with STA_IF
self.assertEqual(NetworkWithInterface.CALLED_WITH, 0)
from osupdate import UpdateChecker, UpdateDownloader, round_up_to_multiple
class TestUpdateChecker(unittest.TestCase):