"""Tests for the DNS server classes: DNSAddressMixin, TCPDNSServer, UDPDNSServer.""" import socket import pytest from netbox_dns_bridge.management.commands.dns_transfer_endpoint.dns_server import ( DNSAddressMixin, TCPDNSServer, UDPDNSServer, ) from netbox_dns_bridge.management.commands.dns_transfer_endpoint.request_handler import ( TCPRequestHandler, UDPRequestHandler, ) class TestDNSAddressMixin: def test_resolve_address_ipv4(self): mixin = DNSAddressMixin() sockaddr = mixin._resolve_address( ("127.0.0.1", 0), socket.SOCK_STREAM, socket.IPPROTO_TCP ) assert sockaddr[0] == "127.0.0.1" assert mixin.address_family == socket.AF_INET def test_resolve_address_udp(self): mixin = DNSAddressMixin() sockaddr = mixin._resolve_address( ("127.0.0.1", 0), socket.SOCK_DGRAM, socket.IPPROTO_UDP ) assert sockaddr[0] == "127.0.0.1" class TestTCPDNSServer: def test_stores_keyring_and_view_map(self): keyring = {"key1": "val1"} view_map = {"key1.": "view1"} srv = TCPDNSServer( ("127.0.0.1", 0), TCPRequestHandler, keyring, view_map ) try: assert srv.keyring is keyring assert srv.tsig_view_map is view_map finally: srv.server_close() def test_allow_reuse_address(self): assert TCPDNSServer.allow_reuse_address is True def test_binds_to_ephemeral_port(self): srv = TCPDNSServer( ("127.0.0.1", 0), TCPRequestHandler, {}, {} ) try: port = srv.server_address[1] assert port > 0 finally: srv.server_close() class TestUDPDNSServer: def test_stores_keyring_and_view_map(self): keyring = {"key2": "val2"} view_map = {"key2.": "view2"} srv = UDPDNSServer( ("127.0.0.1", 0), UDPRequestHandler, keyring, view_map ) try: assert srv.keyring is keyring assert srv.tsig_view_map is view_map finally: srv.server_close() def test_allow_reuse_address(self): assert UDPDNSServer.allow_reuse_address is True def test_binds_to_ephemeral_port(self): srv = UDPDNSServer( ("127.0.0.1", 0), UDPRequestHandler, {}, {} ) try: port = srv.server_address[1] assert port > 0 finally: srv.server_close()