URL: https://github.com/freeipa/freeipa/pull/1724 Author: celestian Title: #1724: Test webui realm domains Action: opened
PR body: """ I prepare automation of some WebUI Realm Domains test. This PR is continue of https://github.com/freeipa/freeipa/pull/1644 """ To pull the PR as Git branch: git remote add ghfreeipa https://github.com/freeipa/freeipa git fetch ghfreeipa pull/1724/head:pr1724 git checkout pr1724
From 454251508f62a139242ee45539eb322b859e8c3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Thu, 1 Mar 2018 13:29:18 +0100 Subject: [PATCH 01/24] webui:tests: Add prepare_dns_zone function We need to do one little trick to prepare correct dns zone for ealm domains webui tests. This patch add separate function for such a trick. --- ipatests/test_webui/test_realmdomains.py | 43 ++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 56fd791ec6..39864384fd 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -41,26 +41,10 @@ def del_realm_domain(self, realmdomain, button): self.wait_for_request() self.close_notifications() - @screenshot - def test_read(self): + def prepare_dns_zone(self, realmdomain): """ - Realm domains mod tests + Prepare dns zone record for realmdomain """ - self.init_app() - self.navigate_to_entity(ENTITY) - - # add with force - skipping DNS check - self.add_multivalued('associateddomain', 'itest.bar') - self.facet_button_click('save') - self.dialog_button_click('force') - self.wait_for_request() - self.close_notifications() - - # delete - self.del_realm_domain('itest.bar', 'force') - self.wait_for_request() - - # Try adding and deleting with "Check DNS" (in html 'ok' button) # DNS check expects that the added domain will have DNS record: # TXT _kerberos.$domain "$REALM" @@ -74,7 +58,6 @@ def test_read(self): self.navigate_to_entity(ZONE_ENTITY) self.add_record(ZONE_ENTITY, ZONE_DATA) - realmdomain = ZONE_PKEY.strip('.') realm = self.config.get('ipa_realm') # remove the added domain from Realm Domain @@ -97,6 +80,28 @@ def test_read(self): self.add_record(ZONE_ENTITY, DNS_RECORD_ADD_DATA, facet=ZONE_DEFAULT_FACET, navigate=False) + @screenshot + def test_read(self): + """ + Realm domains mod tests + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + # add with force - skipping DNS check + self.add_multivalued('associateddomain', 'itest.bar') + self.facet_button_click('save') + self.dialog_button_click('force') + self.wait_for_request() + self.close_notifications() + + # delete + self.del_realm_domain('itest.bar', 'force') + self.wait_for_request() + + realmdomain = ZONE_PKEY.strip('.') + self.prepare_dns_zone(realmdomain) + # add Realm Domain and Check DNS self.navigate_to_entity(ENTITY) self.add_multivalued('associateddomain', realmdomain) From ab332ad62b3197d983021a4735f224a9fbb2fa1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Fri, 9 Mar 2018 13:39:21 +0100 Subject: [PATCH 02/24] webui:tests: Add _add_associateddomain function This function simplifies of adding realm domains to the form. --- ipatests/test_webui/test_realmdomains.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 39864384fd..9cbdfc47f7 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -80,6 +80,16 @@ def prepare_dns_zone(self, realmdomain): self.add_record(ZONE_ENTITY, DNS_RECORD_ADD_DATA, facet=ZONE_DEFAULT_FACET, navigate=False) + def _add_associateddomain(self, values, force=False): + """ + Add values to associated domains and click OK or Force + """ + for val in values: + self.add_multivalued('associateddomain', val) + self.facet_button_click('save') + self.dialog_button_click('force' if force else 'ok') + self.wait_for_request() + @screenshot def test_read(self): """ @@ -89,10 +99,7 @@ def test_read(self): self.navigate_to_entity(ENTITY) # add with force - skipping DNS check - self.add_multivalued('associateddomain', 'itest.bar') - self.facet_button_click('save') - self.dialog_button_click('force') - self.wait_for_request() + self._add_associateddomain(['itest.bar'], force=True) self.close_notifications() # delete @@ -104,10 +111,7 @@ def test_read(self): # add Realm Domain and Check DNS self.navigate_to_entity(ENTITY) - self.add_multivalued('associateddomain', realmdomain) - self.facet_button_click('save') - self.dialog_button_click('ok') - self.wait_for_request() + self._add_associateddomain([realmdomain]) # cleanup self.del_realm_domain(realmdomain, 'ok') From 5f1c793eced936ee369af6b83bf3a1429e3b5156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Thu, 22 Feb 2018 15:18:55 +0100 Subject: [PATCH 03/24] webui:tests: Add test_add_domain_with_special_char --- ipatests/test_webui/test_realmdomains.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 9cbdfc47f7..09743cf706 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Authors: # Petr Vobornik <pvobo...@redhat.com> # @@ -117,3 +118,20 @@ def test_read(self): self.del_realm_domain(realmdomain, 'ok') self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_add_domain_with_special_char(self): + """ + Add domain with special_character + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + domain_with_special_char = u'ipa@123#' + + # add with force - skipping DNS check + self._add_associateddomain([domain_with_special_char], force=True) + dialog = self.get_last_error_dialog() + assert ("invalid 'domain': only letters, numbers, '-' are allowed. " + "DNS label may not start or end with '-'" + in dialog.text) From 75c0be4ef0e679bad79dea1312a4cb3f60ee1ef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Thu, 22 Feb 2018 15:24:18 +0100 Subject: [PATCH 04/24] webui:tests: Add test_add_domain_and_undo --- ipatests/test_webui/test_realmdomains.py | 18 ++++++++++++++++++ ipatests/test_webui/ui_driver.py | 24 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 09743cf706..ed6c60ae04 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -135,3 +135,21 @@ def test_add_domain_with_special_char(self): assert ("invalid 'domain': only letters, numbers, '-' are allowed. " "DNS label may not start or end with '-'" in dialog.text) + + @screenshot + def test_add_domain_and_undo(self): + """ + Add domain and undo + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + test_domain = u'itest.bar' + + # add and undo + self.add_multivalued('associateddomain', test_domain) + self.undo_multivalued('associateddomain', test_domain) + + # check + domains = self.get_multivalued_value('associateddomain') + assert test_domain not in domains diff --git a/ipatests/test_webui/ui_driver.py b/ipatests/test_webui/ui_driver.py index 71efe6705c..f5b8e1a663 100644 --- a/ipatests/test_webui/ui_driver.py +++ b/ipatests/test_webui/ui_driver.py @@ -823,6 +823,30 @@ def del_multivalued(self, name, value, parent=None): assert clicked, 'Value was not removed: %s' % value + def undo_multivalued(self, name, value, parent=None): + """ + Undo value in multivalued textbox. + """ + if parent is None: + parent = self.get_form() + label = "div[name='{}'].multivalued-widget".format(name) + widget = self.find(label, By.CSS_SELECTOR, parent, strict=True) + label = "div[name=value] input" + inputs = self.find(label, By.CSS_SELECTOR, widget, many=True) + clicked = False + for i in inputs: + val = i.get_attribute('value') + n = i.get_attribute('name') + if val == value: + label = ("input[name='{}'] ~ .input-group-btn " + "button[name=undo]".format(n)) + link = self.find(label, By.CSS_SELECTOR, widget, strict=True) + link.click() + self.wait() + clicked = True + + assert clicked, 'Value was not removed: {}'.format(value) + def fill_multivalued(self, name, instructions, parent=None): """ Add or delete a value from multivalued field From c3b7e7996a6523ba3ca8859c2be1f79129e3c6c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Thu, 22 Feb 2018 15:37:23 +0100 Subject: [PATCH 05/24] webui:tests: Add test_add_domain_and_undo_all --- ipatests/test_webui/test_realmdomains.py | 18 ++++++++++++++++++ ipatests/test_webui/ui_driver.py | 12 ++++++++++++ 2 files changed, 30 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index ed6c60ae04..2ef1afdff9 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -153,3 +153,21 @@ def test_add_domain_and_undo(self): # check domains = self.get_multivalued_value('associateddomain') assert test_domain not in domains + + @screenshot + def test_add_domain_and_undo_all(self): + """ + Add domain and undo all + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + test_domain = u'itest.bar' + + # add and undo all + self.add_multivalued('associateddomain', test_domain) + self.undo_all_multivalued('associateddomain') + + # check + domains = self.get_multivalued_value('associateddomain') + assert test_domain not in domains diff --git a/ipatests/test_webui/ui_driver.py b/ipatests/test_webui/ui_driver.py index f5b8e1a663..76375c4478 100644 --- a/ipatests/test_webui/ui_driver.py +++ b/ipatests/test_webui/ui_driver.py @@ -847,6 +847,18 @@ def undo_multivalued(self, name, value, parent=None): assert clicked, 'Value was not removed: {}'.format(value) + def undo_all_multivalued(self, name, parent=None): + """ + Undo all new values to multivalued textbox + """ + if parent is None: + parent = self.get_form() + label = "div[name='{}'].multivalued-widget".format(name) + widget = self.find(label, By.CSS_SELECTOR, parent, strict=True) + add_btn = self.find("button[name=undo_all]", By.CSS_SELECTOR, widget, + strict=True) + add_btn.click() + def fill_multivalued(self, name, instructions, parent=None): """ Add or delete a value from multivalued field From 4738226ca965cef7033f003aa7f437d2db03787b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Thu, 22 Feb 2018 15:51:49 +0100 Subject: [PATCH 06/24] webui:tests: Add test_add_domain_and_refresh --- ipatests/test_webui/test_realmdomains.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 2ef1afdff9..397780cced 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -171,3 +171,21 @@ def test_add_domain_and_undo_all(self): # check domains = self.get_multivalued_value('associateddomain') assert test_domain not in domains + + @screenshot + def test_add_domain_and_refresh(self): + """ + Add domain and refresh + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + test_domain = u'itest.bar' + + # add and refresh + self.add_multivalued('associateddomain', test_domain) + self.facet_button_click('refresh') + + # check + domains = self.get_multivalued_value('associateddomain') + assert test_domain not in domains From 1cd09de8ab1633251126f77198ad9a9518bcaab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Thu, 22 Feb 2018 15:55:00 +0100 Subject: [PATCH 07/24] webui:tests: Add test_add_domain_and_revert --- ipatests/test_webui/test_realmdomains.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 397780cced..bb73eb8a81 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -189,3 +189,21 @@ def test_add_domain_and_refresh(self): # check domains = self.get_multivalued_value('associateddomain') assert test_domain not in domains + + @screenshot + def test_add_domain_and_revert(self): + """ + Add domain and revert + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + test_domain = u'itest.bar' + + # add and revert + self.add_multivalued('associateddomain', test_domain) + self.facet_button_click('revert') + + # check + domains = self.get_multivalued_value('associateddomain') + assert test_domain not in domains From 4b9751899255569593dab4a6c9da8ab46d34fa03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Fri, 23 Feb 2018 13:06:49 +0100 Subject: [PATCH 08/24] webui:tests: Add test_add_duplicate_domaini --- ipatests/test_webui/test_realmdomains.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index bb73eb8a81..1d78dd3e62 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -207,3 +207,27 @@ def test_add_domain_and_revert(self): # check domains = self.get_multivalued_value('associateddomain') assert test_domain not in domains + + @screenshot + def test_add_duplicate_domain(self): + """ + Add duplicate domain + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + self.prepare_dns_zone(realmdomain) + + self.navigate_to_entity(ENTITY) + + # add two (same) domains with force - skipping DNS check + self._add_associateddomain([realmdomain, realmdomain], force=True) + + # check + domains = self.get_multivalued_value('associateddomain') + assert realmdomain in domains + + # cleanup + self.del_realm_domain(realmdomain, 'force') + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) From e74981a7c23525e2f3dc72e96e6e4dcf93fdd143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Fri, 23 Feb 2018 13:11:21 +0100 Subject: [PATCH 09/24] webui:tests: Add test_add_empty_domain --- ipatests/test_webui/test_realmdomains.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 1d78dd3e62..04f3c88c81 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -231,3 +231,18 @@ def test_add_duplicate_domain(self): self.del_realm_domain(realmdomain, 'force') self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_add_empty_domain(self): + """ + Add empty domain + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + # add with force - skipping DNS check + self._add_associateddomain([''], force=True) + + # check + dialog = self.get_last_error_dialog() + assert ("no modifications to be performed" in dialog.text) From 4a486d6ccf48e160ba0c7af0088dbe5c69127d4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Fri, 23 Feb 2018 13:40:07 +0100 Subject: [PATCH 10/24] webui:tests: Add test_add_domain_with_leading_space --- ipatests/test_webui/test_realmdomains.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 04f3c88c81..ed3d12a12e 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -246,3 +246,19 @@ def test_add_empty_domain(self): # check dialog = self.get_last_error_dialog() assert ("no modifications to be performed" in dialog.text) + + @screenshot + def test_add_domain_with_leading_space(self): + """ + Add domain with leading space + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + # add with force - skipping DNS check + self._add_associateddomain([' ipa.test'], force=True) + + # check + dialog = self.get_last_error_dialog() + assert ("invalid 'domain': Leading and trailing spaces are not allowed" + in dialog.text) From 93887769354dcdcc6f235e7c7f93c7c36144508d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Fri, 23 Feb 2018 13:54:46 +0100 Subject: [PATCH 11/24] webui:tests: Add test_add_domain_with_trailing_space --- ipatests/test_webui/test_realmdomains.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index ed3d12a12e..710cba2c07 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -262,3 +262,19 @@ def test_add_domain_with_leading_space(self): dialog = self.get_last_error_dialog() assert ("invalid 'domain': Leading and trailing spaces are not allowed" in dialog.text) + + @screenshot + def test_add_domain_with_trailing_space(self): + """ + Add domain with trailing space + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + # add with force - skipping DNS check + self._add_associateddomain(['ipa.test '], force=True) + + # check + dialog = self.get_last_error_dialog() + assert ("invalid 'domain': Leading and trailing spaces are not allowed" + in dialog.text) From 2fb07a2bb732e1105d46fc18ea63022a8e834fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 12:54:59 +0100 Subject: [PATCH 12/24] webui:tests: Add test_del_domain_undo --- ipatests/test_webui/test_realmdomains.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 710cba2c07..47c8645b8e 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -278,3 +278,35 @@ def test_add_domain_with_trailing_space(self): dialog = self.get_last_error_dialog() assert ("invalid 'domain': Leading and trailing spaces are not allowed" in dialog.text) + + @screenshot + def test_del_domain_undo(self): + """ + Undo after deleting existing domain + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + self.prepare_dns_zone(realmdomain) + + # add + self.navigate_to_entity(ENTITY) + self._add_associateddomain([realmdomain]) + + # check that domain is present + domains = self.get_multivalued_value('associateddomain') + assert realmdomain in domains + + # delete and undo + self.navigate_to_entity(ENTITY) + self.del_multivalued('associateddomain', realmdomain) + self.undo_multivalued('associateddomain', realmdomain) + + # check that domain is present + domains = self.get_multivalued_value('associateddomain') + assert realmdomain in domains + + # cleanup + self.del_realm_domain(realmdomain, 'ok') + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) From 5e62701adf7fb008b1cbd39b397d4dec1a8b5ad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 12:57:13 +0100 Subject: [PATCH 13/24] webui:tests: Add test_del_domain_undo_all --- ipatests/test_webui/test_realmdomains.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 47c8645b8e..4c56fa16ad 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -310,3 +310,35 @@ def test_del_domain_undo(self): self.del_realm_domain(realmdomain, 'ok') self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_del_domain_undo_all(self): + """ + Undo all after deleting existing domain + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + self.prepare_dns_zone(realmdomain) + + # add + self.navigate_to_entity(ENTITY) + self._add_associateddomain([realmdomain]) + + # check that domain is present + domains = self.get_multivalued_value('associateddomain') + assert realmdomain in domains + + # delete and undo + self.navigate_to_entity(ENTITY) + self.del_multivalued('associateddomain', realmdomain) + self.undo_all_multivalued('associateddomain') + + # check that domain is present + domains = self.get_multivalued_value('associateddomain') + assert realmdomain in domains + + # cleanup + self.del_realm_domain(realmdomain, 'ok') + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) From 968ba9fc3c6ceb61c778ebc66b87408138c97342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 12:58:55 +0100 Subject: [PATCH 14/24] webui:tests: Add test_del_domain_revert --- ipatests/test_webui/test_realmdomains.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 4c56fa16ad..23c19512e6 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -342,3 +342,31 @@ def test_del_domain_undo_all(self): self.del_realm_domain(realmdomain, 'ok') self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_del_domain_revert(self): + """ + Revert after deleting existing domain + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + self.prepare_dns_zone(realmdomain) + + # add + self.navigate_to_entity(ENTITY) + self._add_associateddomain([realmdomain]) + + # del and revert + self.navigate_to_entity(ENTITY) + self.del_multivalued('associateddomain', realmdomain) + self.facet_button_click('revert') + + # check + domains = self.get_multivalued_value('associateddomain') + assert realmdomain in domains + + # cleanup + self.del_realm_domain(realmdomain, 'ok') + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) From 2e7ba62ce78395be27daaadc4fdad89289ecdb5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 13:02:08 +0100 Subject: [PATCH 15/24] webui:tests: Add test_del_domain_and_update --- ipatests/test_webui/test_realmdomains.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 23c19512e6..13481916ac 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -370,3 +370,33 @@ def test_del_domain_revert(self): self.del_realm_domain(realmdomain, 'ok') self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_del_domain_and_update(self): + """ + Delete and update + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + self.prepare_dns_zone(realmdomain) + + # add + self.navigate_to_entity(ENTITY) + self._add_associateddomain([realmdomain]) + + self.navigate_to_entity(ENTITY) + + # delete + self.del_multivalued('associateddomain', realmdomain) + self.facet_button_click('save') + self.dialog_button_click('ok') + self.wait_for_request() + + # check + domains = self.get_multivalued_value('associateddomain') + assert realmdomain not in domains + + # cleanup + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) From 655876dbaca8636dd62bb38c35dbfb912f255a52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 13:03:49 +0100 Subject: [PATCH 16/24] webui:tests: Add test_del_domain_with_force_update --- ipatests/test_webui/test_realmdomains.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 13481916ac..3c3e7240f6 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -400,3 +400,33 @@ def test_del_domain_and_update(self): # cleanup self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_del_domain_with_force_update(self): + """ + Delete and force update + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + self.prepare_dns_zone(realmdomain) + + # add + self.navigate_to_entity(ENTITY) + self._add_associateddomain([realmdomain]) + + self.navigate_to_entity(ENTITY) + + # force delete + self.del_multivalued('associateddomain', realmdomain) + self.facet_button_click('save') + self.dialog_button_click('force') + self.wait_for_request() + + # check + domains = self.get_multivalued_value('associateddomain') + assert realmdomain not in domains + + # cleanup + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) From 59b6b33fca20c7726ea230a1d123ea214e6010d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 13:05:27 +0100 Subject: [PATCH 17/24] webui:tests: Add test_add_non_dns_configured_domain_negative --- ipatests/test_webui/test_realmdomains.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 3c3e7240f6..247630f48b 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -430,3 +430,24 @@ def test_del_domain_with_force_update(self): # cleanup self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_add_non_dns_configured_domain_negative(self): + """ + Domain shouldn't be added after: + 1) add DNS non configured domain + 2) click update + 3) check DNS + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + + self.navigate_to_entity(ENTITY) + self._add_associateddomain([realmdomain]) + + dialog = self.get_last_error_dialog() + assert ("invalid 'domain': DNS zone for each realmdomain must contain " + "SOA or NS records. " + "No records found for: " + realmdomain + in dialog.text) From 46ae1c6ca88bfe9ac1e774edbe7f9dbca5a9c7f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 13:07:01 +0100 Subject: [PATCH 18/24] webui:tests: Add test_add_non_dns_configured_domain_positive --- ipatests/test_webui/test_realmdomains.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 247630f48b..8fdf0c1c27 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -451,3 +451,26 @@ def test_add_non_dns_configured_domain_negative(self): "SOA or NS records. " "No records found for: " + realmdomain in dialog.text) + + @screenshot + def test_add_non_dns_configured_domain_positive(self): + """ + Domain should be added fter: + 1) add DNS non configured domain + 2) click update + 3) click force + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + + self.navigate_to_entity(ENTITY) + self._add_associateddomain([realmdomain], force=True) + + domains = self.get_multivalued_value('associateddomain') + assert realmdomain in domains + + # cleanup + self.del_realm_domain(realmdomain, 'ok') + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) From 151611b9501894cd518f7c163bbd43ed9430a794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 13:09:48 +0100 Subject: [PATCH 19/24] webui:tests: Add test_del_domain_of_ipa_server_bug1035286 --- ipatests/test_webui/test_realmdomains.py | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 8fdf0c1c27..7c23b0bc0e 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -474,3 +474,40 @@ def test_add_non_dns_configured_domain_positive(self): self.del_realm_domain(realmdomain, 'ok') self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_del_domain_of_ipa_server_bug1035286(self): + """ + Error should occur when: + 1) delete Domain of Ipa server + 2) select update + 3) select force update + 4) click "Cancel" + """ + self.init_app() + + ipadomain = self.config.get('ipa_domain') + + realmdomain = ZONE_PKEY.strip('.') + self.prepare_dns_zone(realmdomain) + + self.navigate_to_entity(ENTITY) + self._add_associateddomain([realmdomain]) + + self.navigate_to_entity(ENTITY) + + self.del_multivalued('associateddomain', ipadomain) + self.facet_button_click('save') + self.dialog_button_click('force') + self.wait_for_request() + + dialog = self.get_last_error_dialog() + assert ("invalid 'realmdomain list': " + "IPA server domain cannot be omitted" in dialog.text) + self.dialog_button_click('cancel') + self.facet_button_click('refresh') + + # cleanup + self.del_realm_domain(realmdomain, 'ok') + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) From 505ee9996a4ace6dc2a6616c99eb8e76180f3b7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 13:13:05 +0100 Subject: [PATCH 20/24] webui:tests: Add test_dnszone_add_hooked_to_realmdomains_mod --- ipatests/test_webui/test_realmdomains.py | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 7c23b0bc0e..92301e89c5 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -511,3 +511,52 @@ def test_del_domain_of_ipa_server_bug1035286(self): self.del_realm_domain(realmdomain, 'ok') self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_dnszone_add_hooked_to_realmdomains_mod(self): + """ + DNSZone is hooked to realmdomains: + 1) Navigate Identity >> DNS + 2) Add Dnszone (newdom.com) + 3) go to DNS Resource Records(DNS Zone >> newdom.com) + 4) verify TXT record is exists + 5) navigate Identity >> RealmDomain + 6) verify newly added domain (newdom.com) exists in realmdomain list + 7) Delete domain (newdom.com) from realmdomain list + 8) go to DNS Resource Records(DNS Zone >> newdom.com) + 9) verify TXT record is not exists + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + realm = self.config.get('ipa_realm') + + # add DNS domain + self.navigate_to_entity(ZONE_ENTITY) + self.add_record(ZONE_ENTITY, ZONE_DATA) + self.assert_record(ZONE_PKEY) + + self.navigate_to_record(ZONE_PKEY) + self.assert_record('_kerberos') + self.assert_record_value('TXT', '_kerberos', 'type') + self.assert_record_value(realm, '_kerberos', 'data') + + self.navigate_to_entity(ENTITY) + domains = self.get_multivalued_value('associateddomain') + assert realmdomain in domains + + self.del_multivalued('associateddomain', realmdomain) + self.facet_button_click('save') + self.dialog_button_click('ok') + self.wait_for_request() + + self.navigate_to_entity(ZONE_ENTITY) + self.assert_record(ZONE_PKEY) + + self.navigate_to_record(ZONE_PKEY) + self.facet_button_click('refresh') + self.assert_record('_kerberos', negative=True) + + # cleanup + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) From e244dbebbac7a889df79a63922f641a5027e0e3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 13:15:21 +0100 Subject: [PATCH 21/24] webui:tests: Add test_dns_reversezone_add_hooked_to_realmdomains_mod --- ipatests/test_webui/test_realmdomains.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 92301e89c5..7c018b36c7 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -25,7 +25,8 @@ from ipatests.test_webui.ui_driver import UI_driver from ipatests.test_webui.ui_driver import screenshot from ipatests.test_webui.data_dns import ( - ZONE_ENTITY, ZONE_DATA, ZONE_PKEY, ZONE_DEFAULT_FACET + ZONE_ENTITY, FORWARD_ZONE_ENTITY, ZONE_DATA, FORWARD_ZONE_DATA, + ZONE_PKEY, FORWARD_ZONE_PKEY, ZONE_DEFAULT_FACET ) import pytest @@ -560,3 +561,31 @@ def test_dnszone_add_hooked_to_realmdomains_mod(self): # cleanup self.navigate_to_entity(ZONE_ENTITY) self.delete_record(ZONE_PKEY) + + @screenshot + def test_dns_reversezone_add_hooked_to_realmdomains_mod(self): + """ + Reverse DNS domain is not automatically add domain to the list of + domain associated with IPA realm + 1) Navigate Identity >> DNS + 2) Add Dns Reverse Zone (222.65.10.in-addr.arpa.) + 3) navigate Identity >> RealmDomain + 4) verify newly added domain (222.65.10.in-addr.arpa.) is not exists + in realmdomain list + """ + self.init_app() + + realmdomain = FORWARD_ZONE_PKEY.strip('.') + + # add DNS Reverse zone + self.navigate_to_entity(FORWARD_ZONE_ENTITY) + self.add_record(FORWARD_ZONE_ENTITY, FORWARD_ZONE_DATA) + self.assert_record(FORWARD_ZONE_PKEY) + + self.navigate_to_entity(ENTITY) + domains = self.get_multivalued_value('associateddomain') + assert realmdomain not in domains + + # cleanup + self.navigate_to_entity(FORWARD_ZONE_ENTITY) + self.delete_record(FORWARD_ZONE_PKEY) From b63f306bd6933d5421bc29e762359ed85c56209b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Wed, 28 Feb 2018 13:16:56 +0100 Subject: [PATCH 22/24] webui:tests: Add test_dnszone_del_hooked_to_realmdomains_mod --- ipatests/test_webui/test_realmdomains.py | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 7c018b36c7..1065fd89e6 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -589,3 +589,36 @@ def test_dns_reversezone_add_hooked_to_realmdomains_mod(self): # cleanup self.navigate_to_entity(FORWARD_ZONE_ENTITY) self.delete_record(FORWARD_ZONE_PKEY) + + @screenshot + def test_dnszone_del_hooked_to_realmdomains_mod(self): + """ + ipa dnszone-del also removes the entry from realmdomains list + 1) Navigate Identity >> DNS + 2) Add Dnszone (newdom.com) + 3) navigate Identity >> RealmDomain + 4) verify newly added domain (newdom.com) exists in realmdomain list + 7) Navigate Identity >> DNS + 8) Delete Dnszone(newdom.com) + 9) navigate Identity >> RealmDomain + 10) verify domain (newdom.com) is not exists in realmdomain list + """ + self.init_app() + + realmdomain = ZONE_PKEY.strip('.') + + # add DNS domain + self.navigate_to_entity(ZONE_ENTITY) + self.add_record(ZONE_ENTITY, ZONE_DATA) + self.assert_record(ZONE_PKEY) + + self.navigate_to_entity(ENTITY) + domains = self.get_multivalued_value('associateddomain') + assert realmdomain in domains + + self.navigate_to_entity(ZONE_ENTITY) + self.delete_record(ZONE_PKEY) + + self.navigate_to_entity(ENTITY) + domains = self.get_multivalued_value('associateddomain') + assert realmdomain not in domains From 67e78c2952a55fb10a97621db3449789048390df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Mon, 19 Mar 2018 14:03:02 +0100 Subject: [PATCH 23/24] webui:tests: Add test_add_single_labeled_domain --- ipatests/test_webui/test_realmdomains.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/ipatests/test_webui/test_realmdomains.py b/ipatests/test_webui/test_realmdomains.py index 1065fd89e6..dce2e7c78a 100644 --- a/ipatests/test_webui/test_realmdomains.py +++ b/ipatests/test_webui/test_realmdomains.py @@ -121,7 +121,7 @@ def test_read(self): self.delete_record(ZONE_PKEY) @screenshot - def test_add_domain_with_special_char(self): + def test_add_single_labeled_domain(self): """ Add domain with special_character """ @@ -130,6 +130,22 @@ def test_add_domain_with_special_char(self): domain_with_special_char = u'ipa@123#' + # add with force - skipping DNS check + self._add_associateddomain([domain_with_special_char], force=True) + dialog = self.get_last_error_dialog() + assert ("invalid 'domain': single label domains are not supported" + in dialog.text) + + @screenshot + def test_add_domain_with_special_char(self): + """ + Add domain with special_character + """ + self.init_app() + self.navigate_to_entity(ENTITY) + + domain_with_special_char = u'ipa@123#.com' + # add with force - skipping DNS check self._add_associateddomain([domain_with_special_char], force=True) dialog = self.get_last_error_dialog() From a2e492f9743b2b1654570d26e97a0af992f65231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C4=8Cech?= <pc...@redhat.com> Date: Fri, 2 Mar 2018 11:06:01 +0100 Subject: [PATCH 24/24] freeipa-pr-ci: Enable webui tests We currently added some new WebUI tests and we would like to enable them in PR CI. --- .freeipa-pr-ci.yaml | 162 +++++----------------------------------------------- 1 file changed, 13 insertions(+), 149 deletions(-) diff --git a/.freeipa-pr-ci.yaml b/.freeipa-pr-ci.yaml index c95bef79e2..0f6883081d 100644 --- a/.freeipa-pr-ci.yaml +++ b/.freeipa-pr-ci.yaml @@ -3,6 +3,10 @@ topologies: name: build cpu: 2 memory: 3800 + ipaserver: &ipaserver + name: ipaserver + cpu: 1 + memory: 2400 master_1repl: &master_1repl name: master_1repl cpu: 4 @@ -11,6 +15,10 @@ topologies: name: master_1repl_1client cpu: 4 memory: 6700 + ipaserver: &ipaserver + name: ipaserver + cpu: 1 + memory: 2400 jobs: fedora-27/build: @@ -27,158 +35,14 @@ jobs: timeout: 1800 topology: *build - fedora-27/simple_replication: + fedora-27/test_webui: requires: [fedora-27/build] priority: 50 job: - class: RunPytest + class: RunWebuiTests args: build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_simple_replication.py + test_suite: test_webui/ template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl - - fedora-27/caless: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_caless.py::TestServerReplicaCALessToCAFull - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl - - fedora-27/external_ca: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_external_ca.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl - - fedora-27/test_topologies: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_topologies.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl - - fedora-27/test_sudo: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_sudo.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl_1client - - fedora-27/test_kerberos_flags: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_kerberos_flags.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl_1client - - fedora-27/test_http_kdc_proxy: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_http_kdc_proxy.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl_1client - - fedora-27/test_forced_client_enrolment: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_forced_client_reenrollment.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl_1client - - fedora-27/test_advise: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_advise.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl - - fedora-27/test_testconfig: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_testconfig.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl - - fedora-27/test_service_permissions: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_service_permissions.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl - - fedora-27/test_netgroup: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_netgroup.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl - - fedora-27/test_vault: - requires: [fedora-27/build] - priority: 50 - job: - class: RunPytest - args: - build_url: '{fedora-27/build_url}' - test_suite: test_integration/test_vault.py - template: *ci-master-f27 - timeout: 3600 - topology: *master_1repl + timeout: 7200 + topology: *ipaserver
_______________________________________________ FreeIPA-devel mailing list -- freeipa-devel@lists.fedorahosted.org To unsubscribe send an email to freeipa-devel-le...@lists.fedorahosted.org