diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit/modules/network/vyos/fixtures/vyos_ntp_config_v14.cfg | 10 | ||||
-rw-r--r-- | tests/unit/modules/network/vyos/test_vyos_ntp_global.py | 338 |
2 files changed, 346 insertions, 2 deletions
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_ntp_config_v14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_ntp_config_v14.cfg new file mode 100644 index 0000000..8fc8ecd --- /dev/null +++ b/tests/unit/modules/network/vyos/fixtures/vyos_ntp_config_v14.cfg @@ -0,0 +1,10 @@ +set service ntp allow-client address '10.1.1.0/24' +set service ntp allow-client address '10.1.2.0/24' +set service ntp listen-address '10.2.3.1' +set service ntp listen-address '10.4.3.1' +set service ntp server server1 +set service ntp server server3 noselect +set service ntp server server3 pool +set service ntp server time1.vyos.net +set service ntp server time2.vyos.net +set service ntp server time3.vyos.net diff --git a/tests/unit/modules/network/vyos/test_vyos_ntp_global.py b/tests/unit/modules/network/vyos/test_vyos_ntp_global.py index 6609c2f..0bf6107 100644 --- a/tests/unit/modules/network/vyos/test_vyos_ntp_global.py +++ b/tests/unit/modules/network/vyos/test_vyos_ntp_global.py @@ -51,11 +51,18 @@ class TestVyosNTPModule(TestVyosModule): self.execute_show_command = self.mock_execute_show_command.start() + self.mock_get_os_version = patch( + "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.ntp_global.ntp_global.get_os_version", + ) + self.get_os_version = self.mock_get_os_version.start() + self.get_os_version.return_value = "1.2" + def tearDown(self): super(TestVyosNTPModule, self).tearDown() self.mock_get_resource_connection_config.stop() self.mock_get_resource_connection_facts.stop() self.mock_execute_show_command.stop() + self.mock_get_os_version.stop() def load_fixtures(self, commands=None, filename=None): if filename is None: @@ -98,7 +105,7 @@ class TestVyosNTPModule(TestVyosModule): server="server5", options=[ "noselect", - "pool", + "dynamic", "preempt", "prefer", ], @@ -116,7 +123,7 @@ class TestVyosNTPModule(TestVyosModule): "set system ntp listen-address 10.4.5.1", "set system ntp server server4 dynamic", "set system ntp server server4 preempt", - "set system ntp server server5 pool", + "set system ntp server server5 dynamic", "set system ntp server server5 noselect", "set system ntp server server5 preempt", "set system ntp server server5 prefer", @@ -347,3 +354,330 @@ class TestVyosNTPModule(TestVyosModule): "delete system ntp server time3.vyos.net", ] self.execute_module(changed=True, commands=commands) + + +class TestVyosNTPModule14(TestVyosModule): + module = vyos_ntp_global + + def setUp(self): + super(TestVyosNTPModule14, self).setUp() + + self.mock_get_resource_connection_config = patch( + "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base.get_resource_connection", + ) + self.get_resource_connection_config = self.mock_get_resource_connection_config.start() + + self.mock_get_resource_connection_facts = patch( + "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.facts.facts.get_resource_connection", + ) + self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() + + self.mock_execute_show_command = patch( + "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.ntp_global.ntp_global.Ntp_globalFacts.get_config", + ) + + self.execute_show_command = self.mock_execute_show_command.start() + + self.mock_get_os_version = patch( + "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.ntp_global.ntp_global.get_os_version", + ) + self.get_os_version = self.mock_get_os_version.start() + self.get_os_version.return_value = "1.4" + + def tearDown(self): + super(TestVyosNTPModule14, self).tearDown() + self.mock_get_resource_connection_config.stop() + self.mock_get_resource_connection_facts.stop() + self.mock_execute_show_command.stop() + self.mock_get_os_version.stop() + + def load_fixtures(self, commands=None, filename=None): + if filename is None: + filename = "vyos_ntp_config_v14.cfg" + + def load_from_file(*args, **kwargs): + output = load_fixture(filename) + return output + + self.execute_show_command.side_effect = load_from_file + + def test_ntp_merged_idempotent(self): + set_module_args( + dict( + config=dict( + allow_clients=["10.1.1.0/24", "10.1.2.0/24"], + listen_addresses=["10.2.3.1", "10.4.3.1"], + servers=[ + dict(server="server1"), + dict(server="server3", options=["noselect", "pool"]), + dict(server="time1.vyos.net"), + dict(server="time2.vyos.net"), + dict(server="time3.vyos.net"), + ], + ), + state="merged", + ), + ) + self.execute_module(changed=False, commands=[]) + + def test_ntp_merged(self): + set_module_args( + dict( + config=dict( + allow_clients=["10.2.2.0/24", "10.3.3.0/24"], + listen_addresses=["10.3.4.1", "10.4.5.1"], + servers=[ + dict(server="server4", options=["pool", "preempt"]), + dict( + server="server5", + options=[ + "noselect", + "pool", + "preempt", + "prefer", + ], + ), + ], + ), + state="merged", + ), + ) + + commands = [ + "set service ntp allow-client address 10.2.2.0/24", + "set service ntp allow-client address 10.3.3.0/24", + "set service ntp listen-address 10.3.4.1", + "set service ntp listen-address 10.4.5.1", + "set service ntp server server4 pool", + "set service ntp server server4 preempt", + "set service ntp server server5 pool", + "set service ntp server server5 noselect", + "set service ntp server server5 preempt", + "set service ntp server server5 prefer", + ] + + self.execute_module(changed=True, commands=commands) + + def test_ntp_replaced(self): + set_module_args( + dict( + config=dict( + allow_clients=["10.3.4.0/24", "10.4.5.0/24"], + listen_addresses=["10.3.3.1", "10.4.4.1"], + servers=[ + dict(server="server4", options=["noselect", "prefer"]), + dict( + server="server6", + options=[ + "noselect", + "pool", + "prefer", + "preempt", + ], + ), + dict(server="time1.vyos.net"), + dict(server="time2.vyos.net"), + dict(server="time3.vyos.net"), + ], + ), + state="replaced", + ), + ) + commands = [ + "delete service ntp allow-client address 10.1.1.0/24", + "delete service ntp allow-client address 10.1.2.0/24", + "delete service ntp listen-address 10.2.3.1", + "delete service ntp listen-address 10.4.3.1", + "delete service ntp server server1", + "delete service ntp server server3", + "set service ntp allow-client address 10.3.4.0/24", + "set service ntp allow-client address 10.4.5.0/24", + "set service ntp listen-address 10.3.3.1", + "set service ntp listen-address 10.4.4.1", + "set service ntp server server4 noselect", + "set service ntp server server4 prefer", + "set service ntp server server6 noselect", + "set service ntp server server6 pool", + "set service ntp server server6 prefer", + "set service ntp server server6 preempt", + ] + self.execute_module(changed=True, commands=commands) + + def test_ntp_replaced_idempotent(self): + set_module_args( + dict( + config=dict( + allow_clients=["10.1.1.0/24", "10.1.2.0/24"], + listen_addresses=["10.2.3.1", "10.4.3.1"], + servers=[ + dict(server="server1"), + dict(server="server3", options=["noselect", "pool"]), + dict(server="time1.vyos.net"), + dict(server="time2.vyos.net"), + dict(server="time3.vyos.net"), + ], + ), + state="replaced", + ), + ) + self.execute_module(changed=False, commands=[]) + + def test_ntp_overridden(self): + set_module_args( + dict( + config=dict( + allow_clients=["10.9.9.0/24"], + listen_addresses=["10.9.9.1"], + servers=[ + dict(server="server9"), + dict(server="server6", options=["noselect", "pool"]), + dict(server="time1.vyos.net"), + dict(server="time2.vyos.net"), + dict(server="time3.vyos.net"), + ], + ), + state="overridden", + ), + ) + commands = [ + "delete service ntp allow-client address 10.1.1.0/24", + "delete service ntp allow-client address 10.1.2.0/24", + "delete service ntp listen-address 10.2.3.1", + "delete service ntp listen-address 10.4.3.1", + "delete service ntp server server1", + "delete service ntp server server3", + "set service ntp allow-client address 10.9.9.0/24", + "set service ntp listen-address 10.9.9.1", + "set service ntp server server9", + "set service ntp server server6 noselect", + "set service ntp server server6 pool", + ] + self.execute_module(changed=True, commands=commands) + + def test_ntp_overridden_idempotent(self): + set_module_args( + dict( + config=dict( + allow_clients=["10.1.1.0/24", "10.1.2.0/24"], + listen_addresses=["10.2.3.1", "10.4.3.1"], + servers=[ + dict(server="server1"), + dict(server="server3", options=["noselect", "pool"]), + dict(server="time1.vyos.net"), + dict(server="time2.vyos.net"), + dict(server="time3.vyos.net"), + ], + ), + state="overridden", + ), + ) + self.execute_module(changed=False, commands=[]) + + def test_ntp_rendered(self): + set_module_args( + dict( + config=dict( + allow_clients=["10.7.7.0/24", "10.8.8.0/24"], + listen_addresses=["10.7.9.1"], + servers=[ + dict(server="server79"), + dict(server="server46", options=["noselect", "pool"]), + dict(server="time1.vyos.net"), + dict(server="time2.vyos.net"), + dict(server="time3.vyos.net"), + ], + ), + state="rendered", + ), + ) + rendered_commands = [ + "set service ntp allow-client address 10.7.7.0/24", + "set service ntp allow-client address 10.8.8.0/24", + "set service ntp listen-address 10.7.9.1", + "set service ntp server server79", + "set service ntp server server46 noselect", + "set service ntp server server46 pool", + "set service ntp server time1.vyos.net", + "set service ntp server time2.vyos.net", + "set service ntp server time3.vyos.net", + ] + result = self.execute_module(changed=False) + self.assertEqual( + sorted(result["rendered"]), + sorted(rendered_commands), + result["rendered"], + ) + + def test_ntp_parsed(self): + commands = ( + "set service ntp allow-client address 10.7.7.0/24", + "set service ntp allow-client address 10.6.7.0/24", + "set service ntp listen-address 10.7.9.1", + "set service ntp listen-address 10.7.7.1", + "set service ntp server check", + "set service ntp server server46 noselect", + "set service ntp server server46 prefer", + "set service ntp server time1.vyos.net", + "set service ntp server time2.vyos.net", + "set service ntp server time3.vyos.net", + ) + parsed_str = "\n".join(commands) + set_module_args(dict(running_config=parsed_str, state="parsed")) + result = self.execute_module(changed=False) + parsed_list = { + "allow_clients": ["10.6.7.0/24", "10.7.7.0/24"], + "listen_addresses": ["10.7.7.1", "10.7.9.1"], + "servers": [ + {"server": "check"}, + {"server": "server46", "options": ["noselect", "prefer"]}, + {"server": "time1.vyos.net"}, + {"server": "time2.vyos.net"}, + {"server": "time3.vyos.net"}, + ], + } + self.assertEqual(parsed_list, result["parsed"]) + + def test_ntp_gathered(self): + set_module_args(dict(state="gathered")) + result = self.execute_module(changed=False) + gathered_list = { + "allow_clients": ["10.1.1.0/24", "10.1.2.0/24"], + "listen_addresses": ["10.2.3.1", "10.4.3.1"], + "servers": [ + {"server": "server1"}, + {"server": "server3", "options": ["noselect", "pool"]}, + {"server": "time1.vyos.net"}, + {"server": "time2.vyos.net"}, + {"server": "time3.vyos.net"}, + ], + } + + self.assertEqual(gathered_list, result["gathered"]) + + def test_ntp_deleted(self): + set_module_args( + dict( + config=dict( + allow_clients=["10.1.1.0/24"], + listen_addresses=["10.2.3.1"], + servers=[ + dict(server="server1"), + dict(server="server3", options=["noselect"]), + dict(server="time1.vyos.net"), + dict(server="time2.vyos.net"), + dict(server="time3.vyos.net"), + ], + ), + state="deleted", + ), + ) + commands = [ + "delete service ntp allow-client", + "delete service ntp listen-address", + "delete service ntp server server1", + "delete service ntp server server3", + "delete service ntp server time1.vyos.net", + "delete service ntp server time2.vyos.net", + "delete service ntp server time3.vyos.net", + ] + self.execute_module(changed=True, commands=commands) |