"""Fingerprint tests for YealinkDriver.""" from napalm_device_types import DeviceTypeDriver, FingerprintRule from napalm_yealink import YealinkDriver def test_yealink_is_device_type_driver(): assert issubclass(YealinkDriver, DeviceTypeDriver) def test_type_label(): assert YealinkDriver.TYPE_LABEL == "Phone" def test_vendor(): assert YealinkDriver.VENDOR == "Yealink" def test_driver_name(): assert YealinkDriver.DRIVER_NAME == "yealink" def test_snmp_oid_prefix(): assert YealinkDriver.SNMP_OBJECT_ID_PREFIX == "1.3.6.1.4.1.37403" def test_http_fingerprint_mandatory_yealink(): mandatory = [r for r in YealinkDriver.HTTP_FINGERPRINT if r.mandatory] assert any(r.pattern == "yealink" for r in mandatory) def test_fingerprint_matches_t58_title(): """'Yealink T58 Phone' im Titel → mandatory 'yealink' trifft zu.""" combined = "yealink t58 phone nginx " mandatory = [r for r in YealinkDriver.HTTP_FINGERPRINT if r.mandatory] assert all(r.pattern in combined for r in mandatory) def test_fingerprint_does_not_match_cisco(): """Cisco-Seite enthält kein 'yealink' → mandatory Pattern fehlt.""" combined = "cisco ip phone cp-8841 " mandatory = [r for r in YealinkDriver.HTTP_FINGERPRINT if r.mandatory] assert not all(r.pattern in combined for r in mandatory)