feat: report the firmware Netgear offers, not a warning (0.4.0)
CI / test (3.10) (push) Successful in 25s
CI / test (3.11) (push) Successful in 23s
CI / test (3.12) (push) Successful in 26s
CI / test (3.10) (pull_request) Successful in 24s
CI / test (3.11) (pull_request) Successful in 23s
CI / test (3.12) (pull_request) Successful in 25s
CI / test (3.10) (push) Successful in 25s
CI / test (3.11) (push) Successful in 23s
CI / test (3.12) (push) Successful in 26s
CI / test (3.10) (pull_request) Successful in 24s
CI / test (3.11) (pull_request) Successful in 23s
CI / test (3.12) (pull_request) Successful in 25s
The Plus driver looked the newest firmware up in Netgear's download catalogue and named firmware_update_available itself. It now reports get_firmware_offer() (napalm-device-types 4.16 FirmwareOfferMixin): what runs, the newest offered, whether that is newer by Netgear's versioning, and the download link; netOrk names the warning (netOrk #1111). The Smart driver's empty get_device_warnings goes too. Requires napalm-device-types 4.16.0.
This commit is contained in:
1 parent
ff86370f2f
commit
4ccb2b5879
5 files changed
+81
-47
No files matched your search
@@ -0,0 +1,59 @@
|
||||
"""The newest firmware Netgear offers, as a fact (netOrk #1111).
|
||||
|
||||
The Plus driver looked the newest firmware up in Netgear's download catalogue
|
||||
and named ``firmware_update_available`` itself. It reports the offer now --
|
||||
what runs, what is offered, whether that is newer by Netgear's versioning --
|
||||
and the application decides on the warning.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from types import SimpleNamespace
|
||||
|
||||
import pytest
|
||||
|
||||
from napalm_netgear import netgear_plus
|
||||
from napalm_netgear.netgear_plus import NetgearPlusDriver
|
||||
from napalm_netgear.netgear_smart import NetgearSmartDriver
|
||||
|
||||
|
||||
def _driver(monkeypatch, *, model="GS308E", running="1.00.10", latest="1.00.12"):
|
||||
d = NetgearPlusDriver("sw", "admin", "pw")
|
||||
d._connector = SimpleNamespace(switch_model=SimpleNamespace(MODEL_NAME=model))
|
||||
monkeypatch.setattr(d, "_get_switch_infos", lambda: {"switch_firmware": running})
|
||||
monkeypatch.setattr(netgear_plus, "_fw_get_latest", lambda m: latest)
|
||||
return d
|
||||
|
||||
|
||||
def test_a_newer_offer(monkeypatch):
|
||||
assert _driver(monkeypatch).get_firmware_offer() == {
|
||||
"current_version": "1.00.10",
|
||||
"latest_version": "1.00.12",
|
||||
"newer": True,
|
||||
"download_url": f"{netgear_plus._FW_CDN_BASE}/GS308E/GS308E_1.00.12.zip",
|
||||
}
|
||||
|
||||
|
||||
def test_running_the_newest(monkeypatch):
|
||||
offer = _driver(monkeypatch, running="1.00.12").get_firmware_offer()
|
||||
assert offer["newer"] is False
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"kwargs",
|
||||
[{"latest": None}, {"running": ""}, {"running": "beta"}],
|
||||
ids=["catalogue-unknown", "no-version", "unparsable"],
|
||||
)
|
||||
def test_cannot_tell(monkeypatch, kwargs):
|
||||
assert _driver(monkeypatch, **kwargs).get_firmware_offer() is None
|
||||
|
||||
|
||||
def test_not_connected_cannot_tell(monkeypatch):
|
||||
d = _driver(monkeypatch)
|
||||
d._connector = None
|
||||
assert d.get_firmware_offer() is None
|
||||
|
||||
|
||||
@pytest.mark.parametrize("cls", [NetgearPlusDriver, NetgearSmartDriver])
|
||||
def test_no_warnings_of_their_own(cls):
|
||||
assert "get_device_warnings" not in vars(cls)
|
||||
Reference in new issue
Block a user