From ddfa173488aa903b3e028f7e6328dbb4dcc21695 Mon Sep 17 00:00:00 2001 From: Oleg Fayans Date: Nov 10 2016 11:07:24 +0000 Subject: Automated ipa-replica-manage del tests Reviewed-By: Martin Basti Reviewed-By: Milan Kubik --- diff --git a/ipatests/test_integration/test_topology.py b/ipatests/test_integration/test_topology.py index 7531f60..e5b2df5 100644 --- a/ipatests/test_integration/test_topology.py +++ b/ipatests/test_integration/test_topology.py @@ -230,3 +230,75 @@ class TestCASpecificRUVs(IntegrationTest): master.config.dirman_password]).stdout_text assert(replica.hostname not in res2), ( "Replica RUVs were not clean during replica uninstallation") + + +class TestReplicaManageDel(IntegrationTest): + domain_level = 0 + topology = 'star' + num_replicas = 3 + + def test_replica_managed_del_domlevel0(self): + """ + http://www.freeipa.org/page/V4/Manage_replication_topology_4_4/ + Test_Plan#Test_case:_ipa-replica-manage_del_with_turned_off_replica + _under_domain_level_0_keeps_ca-related_RUVs + """ + master = self.master + replica = self.replicas[0] + replica.run_command(['ipactl', 'stop']) + master.run_command(['ipa-replica-manage', 'del', '-f', '-p', + master.config.dirman_password, replica.hostname]) + result = master.run_command(['ipa-replica-manage', 'list-ruv', + '-p', master.config.dirman_password]) + num_ruvs = result.stdout_text.count(replica.hostname) + assert(num_ruvs == 1), ("Expected to find 1 replica's RUV, found %s" % + num_ruvs) + ruvid_re = re.compile(".*%s:389: (\d+).*" % replica.hostname) + replica_ruvs = ruvid_re.findall(result.stdout_text) + master.run_command(['ipa-replica-manage', 'clean-ruv', '-f', + '-p', master.config.dirman_password, + replica_ruvs[0]]) + result2 = master.run_command(['ipa-replica-manage', 'list-ruv', + '-p', master.config.dirman_password]) + assert(replica.hostname not in result2.stdout_text), ( + "Replica's RUV was not properly removed") + + def test_clean_dangling_ruv_multi_ca(self): + """ + http://www.freeipa.org/page/V4/Manage_replication_topology_4_4/ + Test_Plan#Test_case:_ipa-replica-manage_clean-dangling-ruv_in_a + _multi-CA_setup + """ + master = self.master + replica = self.replicas[1] + replica.run_command(['ipa-server-install', '--uninstall', '-U']) + master.run_command(['ipa-replica-manage', 'del', '-f', '-p', + master.config.dirman_password, replica.hostname]) + result1 = master.run_command(['ipa-replica-manage', 'list-ruv', '-p', + master.config.dirman_password]) + ruvid_re = re.compile(".*%s:389: (\d+).*" % replica.hostname) + assert(ruvid_re.search(result1.stdout_text)), ( + "Replica's RUV should not be removed under domain level 0") + master.run_command(['ipa-replica-manage', 'clean-dangling-ruv', '-p', + master.config.dirman_password], stdin_text="yes\n") + result2 = master.run_command(['ipa-replica-manage', 'list-ruv', '-p', + master.config.dirman_password]) + assert(replica.hostname not in result2.stdout_text), ( + "Replica's RUV was not removed by a clean-dangling-ruv command") + + def test_replica_managed_del_domlevel1(self): + """ + http://www.freeipa.org/page/V4/Manage_replication_topology_4_4/ + Test_Plan#Test_case:_ipa-replica-manage_del_with_turned_off_replica + _under_domain_level_1_removes_ca-related_RUVs + """ + master = self.master + replica = self.replicas[2] + master.run_command(['ipa', 'domainlevel-set', '1']) + replica.run_command(['ipactl', 'stop']) + master.run_command(['ipa-replica-manage', 'del', '-f', '-p', + master.config.dirman_password, replica.hostname]) + result = master.run_command(['ipa-replica-manage', 'list-ruv', + '-p', master.config.dirman_password]) + assert(replica.hostname not in result.stdout_text), ( + "Replica's RUV was not properly removed")