core/tests/components/dnsip/__init__.py
pemontto 1c414966fe
Add support for round-robin DNS (#115218)
* Add support for RR DNS

* 🧪 Update tests for DNS IP round-robin

* 🤖 Configure DNS IP round-robin automatically

* 🐛 Sort IPv6 addresses correctly

* Limit returned IPs and cleanup test class

* 🔟 Change max DNS results to 10

* Rename IPs to ip_addresses
2024-05-07 11:49:13 +02:00

50 lines
1.4 KiB
Python

"""Tests for the dnsip integration."""
from __future__ import annotations
class QueryResult:
"""Return Query results."""
def __init__(self, ip="1.2.3.4", ttl=60) -> None:
"""Initialize QueryResult class."""
self.host = ip
self.ttl = ttl
class RetrieveDNS:
"""Return list of test information."""
def __init__(
self, nameservers: list[str] | None = None, error: Exception | None = None
) -> None:
"""Initialize DNS class."""
if nameservers:
self.nameservers = nameservers
self._nameservers = ["1.2.3.4"]
self.error = error
async def query(self, hostname, qtype) -> list[QueryResult]:
"""Return information."""
if self.error:
raise self.error
if qtype == "AAAA":
results = [
QueryResult("2001:db8:77::face:b00c"),
QueryResult("2001:db8:77::dead:beef"),
QueryResult("2001:db8::77:dead:beef"),
QueryResult("2001:db8:66::dead:beef"),
]
else:
results = [QueryResult("1.2.3.4"), QueryResult("1.1.1.1")]
return results
@property
def nameservers(self) -> list[str]:
"""Return nameserver."""
return self._nameservers
@nameservers.setter
def nameservers(self, value: list[str]) -> None:
self._nameservers = value