Skip to content

Commit

Permalink
Test DNS handling in NM client
Browse files Browse the repository at this point in the history
  • Loading branch information
VladimirSlavik committed Feb 14, 2023
1 parent ea280e9 commit 47f91ea
Showing 1 changed file with 53 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,14 @@
import pytest
import time
import threading
from unittest.mock import Mock, patch
from unittest.mock import Mock, patch, call
from textwrap import dedent

from pyanaconda.modules.network.nm_client import get_ports_from_connections, \
get_dracut_arguments_from_connection, get_config_file_connection_of_device, \
get_kickstart_network_data, NM_BRIDGE_DUMPED_SETTINGS_DEFAULTS, \
update_connection_wired_settings_from_ksdata, get_new_nm_client, GError
update_connection_wired_settings_from_ksdata, get_new_nm_client, GError, \
update_connection_ip_settings_from_ksdata
from pyanaconda.core.kickstart.commands import NetworkData
from pyanaconda.core.glib import MainContext, sync_call_glib
from pyanaconda.modules.network.constants import NM_CONNECTION_TYPE_WIFI, \
Expand Down Expand Up @@ -1008,3 +1009,53 @@ def test_sync_call_glib_in_thread(self):
thread = threading.Thread(target = self.test_sync_call_glib)
thread.start()
thread.join()

def _dns_ksdata_to_ip_sets(self, ipv4_search, ipv6_search, ipv4_ignoreauto, ipv6_ignoreauto):
connection = Mock()
ksdata = NetworkData(
ipv4_dns_search=ipv4_search,
ipv6_dns_search=ipv6_search,
ipv4_ignore_auto_dns=ipv4_ignoreauto,
ipv6_ignore_auto_dns=ipv6_ignoreauto
)

update_connection_ip_settings_from_ksdata(connection, ksdata)
connection.remove_setting.assert_called()
connection.add_setting.assert_called()

s_ipv4 = connection.add_setting.mock_calls[0].args[0]
s_ipv6 = connection.add_setting.mock_calls[1].args[0]

# these are presented as simple fields or properties and so can be checked directly
assert s_ipv4.ignore_auto_dns == ipv4_ignoreauto
assert s_ipv6.ignore_auto_dns == ipv6_ignoreauto

return s_ipv4, s_ipv6

def test_dns_update_connection_ip_settings_from_ksdata(self):
"""Test DNS handling in update_connection_ip_settings_from_ksdata()"""

# first search domains
sv4, sv6 = self._dns_ksdata_to_ip_sets("fedoraproject.org,getfedora.org", "redhat.com", False, False)
sv4.add_dns_search.assert_has_calls_([
call("fedoraproject.org"),
call("getfedora.org")
])
sv6.add_dns_search.assert_called_once_with("redhat.com")

# then check permutations of the ignore_auto_dns props + no search domains
sv4, sv6 = self._dns_ksdata_to_ip_sets(None, None, False, False)
sv4.add_dns_search.assert_not_called()
sv6.add_dns_search.assert_not_called()

sv4, sv6 = self._dns_ksdata_to_ip_sets(None, None, True, True)
sv4.add_dns_search.assert_not_called()
sv6.add_dns_search.assert_not_called()

sv4, sv6 = self._dns_ksdata_to_ip_sets(None, None, True, False)
sv4.add_dns_search.assert_not_called()
sv6.add_dns_search.assert_not_called()

sv4, sv6 = self._dns_ksdata_to_ip_sets(None, None, False, False)
sv4.add_dns_search.assert_not_called()
sv6.add_dns_search.assert_not_called()

0 comments on commit 47f91ea

Please sign in to comment.