@@ -4944,6 +4944,51 @@ async def test_get_usb_ports_single_valid_port() -> None:
49444944 ]
49454945
49464946
4947+ async def test_get_usb_ports_ignored_devices () -> None :
4948+ """Test that get_usb_ports filters out ignored non-Z-Wave devices."""
4949+ mock_ports = [
4950+ ListPortInfo ("/dev/ttyUSB0" ),
4951+ ListPortInfo ("/dev/ttyUSB1" ),
4952+ ListPortInfo ("/dev/ttyUSB2" ),
4953+ ListPortInfo ("/dev/ttyUSB3" ),
4954+ ListPortInfo ("/dev/ttyUSB4" ),
4955+ ListPortInfo ("/dev/ttyUSB5" ),
4956+ ]
4957+ # ZBT-2, should be filtered
4958+ mock_ports [0 ].manufacturer = "Nabu Casa"
4959+ mock_ports [0 ].description = "ZBT-2"
4960+
4961+ # ZBT-1, should be filtered
4962+ mock_ports [2 ].manufacturer = "Nabu Casa"
4963+ mock_ports [2 ].description = "Home Assistant Connect ZBT-1"
4964+
4965+ # SkyConnect, should be filtered
4966+ mock_ports [1 ].manufacturer = "Nabu Casa"
4967+ mock_ports [1 ].description = "SkyConnect v1.0"
4968+
4969+ # ZWA-2, should be shown
4970+ mock_ports [3 ].manufacturer = "Nabu Casa"
4971+ mock_ports [3 ].description = "ZWA-2"
4972+
4973+ # unknown device with manufacturer/description, should be shown
4974+ mock_ports [4 ].manufacturer = "Another Manufacturer"
4975+ mock_ports [4 ].description = "Z-Wave USB Adapter"
4976+
4977+ # unknown device with no manufacturer/description, should be shown
4978+ mock_ports [5 ].manufacturer = None
4979+ mock_ports [5 ].description = None
4980+
4981+ with patch ("serial.tools.list_ports.comports" , return_value = mock_ports ):
4982+ result = get_usb_ports ()
4983+ descriptions = list (result .values ())
4984+
4985+ assert descriptions == [
4986+ "ZWA-2 - /dev/ttyUSB3, s/n: n/a - Nabu Casa" ,
4987+ "Z-Wave USB Adapter - /dev/ttyUSB4, s/n: n/a - Another Manufacturer" ,
4988+ "/dev/ttyUSB5, s/n: n/a" ,
4989+ ]
4990+
4991+
49474992@pytest .mark .usefixtures ("supervisor" , "addon_not_installed" , "addon_info" )
49484993async def test_intent_recommended_user (
49494994 hass : HomeAssistant ,
0 commit comments