fix skip_ipv4 and skip_ipv6 for unifi records
Build and Push Container / build-and-push (push) Successful in 45s

This commit is contained in:
2026-06-03 21:39:51 -04:00
parent 209d260b18
commit d7fd6e1104
3 changed files with 83 additions and 2 deletions
+73
View File
@@ -367,3 +367,76 @@ class TestUpdateRecords:
with patch("ddns.unifi_update._get_session", return_value=mock_session):
with pytest.raises(Exception, match="Update failed"):
update_records(unifi_config, ipv4="1.2.3.4", ipv6=None) # type: ignore[arg-type]
def test_update_records_skip_ipv4(self) -> None:
mock_session = MagicMock()
mock_response = MagicMock()
mock_response.json.return_value = {"data": []}
mock_response.raise_for_status = MagicMock()
mock_session.get.return_value = mock_response
mock_session.post.return_value = MagicMock()
mock_session.post.return_value.raise_for_status = MagicMock()
mock_session.verify = False
unifi_config = {
"host": "https://unifi.example.com",
"site_id": "site123",
"api_token": "my-token",
"verify_ssl": False,
"records": [{"record": "test.example.com", "ttl_seconds": 7200, "skip_ipv4": True}],
}
with patch("ddns.unifi_update._get_session", return_value=mock_session):
update_records(unifi_config, ipv4="1.2.3.4", ipv6="2001:db8::1") # type: ignore[arg-type]
mock_session.post.assert_called_once()
payload = mock_session.post.call_args[1]["json"]
assert payload["type"] == "AAAA_RECORD"
assert payload["ipv6Address"] == "2001:db8::1"
def test_update_records_skip_ipv6(self) -> None:
mock_session = MagicMock()
mock_response = MagicMock()
mock_response.json.return_value = {"data": []}
mock_response.raise_for_status = MagicMock()
mock_session.get.return_value = mock_response
mock_session.post.return_value = MagicMock()
mock_session.post.return_value.raise_for_status = MagicMock()
mock_session.verify = False
unifi_config = {
"host": "https://unifi.example.com",
"site_id": "site123",
"api_token": "my-token",
"verify_ssl": False,
"records": [{"record": "test.example.com", "ttl_seconds": 7200, "skip_ipv6": True}],
}
with patch("ddns.unifi_update._get_session", return_value=mock_session):
update_records(unifi_config, ipv4="1.2.3.4", ipv6="2001:db8::1") # type: ignore[arg-type]
mock_session.post.assert_called_once()
payload = mock_session.post.call_args[1]["json"]
assert payload["type"] == "A_RECORD"
assert payload["ipv4Address"] == "1.2.3.4"
def test_update_records_skip_both(self) -> None:
mock_session = MagicMock()
mock_response = MagicMock()
mock_response.json.return_value = {"data": []}
mock_response.raise_for_status = MagicMock()
mock_session.get.return_value = mock_response
mock_session.verify = False
unifi_config = {
"host": "https://unifi.example.com",
"site_id": "site123",
"api_token": "my-token",
"verify_ssl": False,
"records": [{"record": "test.example.com", "ttl_seconds": 7200, "skip_ipv4": True, "skip_ipv6": True}],
}
with patch("ddns.unifi_update._get_session", return_value=mock_session):
update_records(unifi_config, ipv4="1.2.3.4", ipv6="2001:db8::1") # type: ignore[arg-type]
mock_session.post.assert_not_called()