"""Tests for the DNS IP integration."""


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
        self._closed = False

    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

    async def close(self) -> None:
        """Close the resolver."""
        self._closed = True
