This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from ddns.route53_update import update_ipv4, update_ipv6
|
||||
|
||||
|
||||
class TestUpdateIpv4:
|
||||
def test_update_ipv4_success(self) -> None:
|
||||
mock_client = MagicMock()
|
||||
mock_client.change_resource_record_sets.return_value = {}
|
||||
|
||||
with patch("ddns.route53_update._get_route53_client", return_value=mock_client):
|
||||
update_ipv4("ZONE123", "test.example.com", "1.2.3.4")
|
||||
|
||||
mock_client.change_resource_record_sets.assert_called_once_with(
|
||||
HostedZoneId="ZONE123",
|
||||
ChangeBatch={
|
||||
"Comment": "Update Public Addresses",
|
||||
"Changes": [
|
||||
{
|
||||
"Action": "UPSERT",
|
||||
"ResourceRecordSet": {
|
||||
"Name": "test.example.com",
|
||||
"Type": "A",
|
||||
"TTL": 300,
|
||||
"ResourceRecords": [{"Value": "1.2.3.4"}],
|
||||
},
|
||||
}
|
||||
],
|
||||
},
|
||||
)
|
||||
|
||||
def test_update_ipv4_raises_on_error(self) -> None:
|
||||
mock_client = MagicMock()
|
||||
mock_client.change_resource_record_sets.side_effect = Exception("API error")
|
||||
|
||||
with patch("ddns.route53_update._get_route53_client", return_value=mock_client):
|
||||
with pytest.raises(Exception, match="API error"):
|
||||
update_ipv4("ZONE123", "test.example.com", "1.2.3.4")
|
||||
|
||||
|
||||
class TestUpdateIpv6:
|
||||
def test_update_ipv6_success(self) -> None:
|
||||
mock_client = MagicMock()
|
||||
mock_client.change_resource_record_sets.return_value = {}
|
||||
|
||||
with patch("ddns.route53_update._get_route53_client", return_value=mock_client):
|
||||
update_ipv6("ZONE123", "test.example.com", "2001:db8::1")
|
||||
|
||||
mock_client.change_resource_record_sets.assert_called_once_with(
|
||||
HostedZoneId="ZONE123",
|
||||
ChangeBatch={
|
||||
"Comment": "Update Public Addresses",
|
||||
"Changes": [
|
||||
{
|
||||
"Action": "UPSERT",
|
||||
"ResourceRecordSet": {
|
||||
"Name": "test.example.com",
|
||||
"Type": "AAAA",
|
||||
"TTL": 300,
|
||||
"ResourceRecords": [{"Value": "2001:db8::1"}],
|
||||
},
|
||||
}
|
||||
],
|
||||
},
|
||||
)
|
||||
|
||||
def test_update_ipv6_raises_on_error(self) -> None:
|
||||
mock_client = MagicMock()
|
||||
mock_client.change_resource_record_sets.side_effect = Exception("API error")
|
||||
|
||||
with patch("ddns.route53_update._get_route53_client", return_value=mock_client):
|
||||
with pytest.raises(Exception, match="API error"):
|
||||
update_ipv6("ZONE123", "test.example.com", "2001:db8::1")
|
||||
Reference in New Issue
Block a user