Please review attached patches, which add tests for new certificate
widget in WebUI.
https://fedorahosted.org/freeipa/ticket/6064
--
Pavel^3 Vomacka
From 66879ea9d38ea42e2ac5641d0f89643edea83d16 Mon Sep 17 00:00:00 2001
From: Pavel Vomacka <[email protected]>
Date: Wed, 20 Jul 2016 16:27:47 +0200
Subject: [PATCH 5/9] Add possibility to choose parent element by css
Part of: https://fedorahosted.org/freeipa/ticket/6064
---
ipatests/test_webui/ui_driver.py | 42 +++++++++++++++++++++++++++++++---------
1 file changed, 33 insertions(+), 9 deletions(-)
diff --git a/ipatests/test_webui/ui_driver.py b/ipatests/test_webui/ui_driver.py
index 7c4ca75efa3e642f4a2c0cdcd72be3cafa3c305a..c82164c53095d8552aef665c5091deeb3bd71437 100644
--- a/ipatests/test_webui/ui_driver.py
+++ b/ipatests/test_webui/ui_driver.py
@@ -615,12 +615,17 @@ class UI_driver(object):
s = "a[name='%s'].action-button" % name
self._button_click(s, parent, name)
- def button_click(self, name, parent=None):
+ def button_click(self, name, parent=None,
+ parents_css_sel=None):
"""
Click on .ui-button
"""
if not parent:
- parent = self.get_form()
+ if parents_css_sel:
+ parent = self.find(parents_css_sel, By.CSS_SELECTOR,
+ strict=True)
+ else:
+ parent = self.get_form()
s = "[name='%s'].btn" % name
self._button_click(s, parent, name)
@@ -1413,14 +1418,25 @@ class UI_driver(object):
for key in pkeys:
self.assert_record(key, parent, table_name, negative=True)
- def action_list_action(self, name, confirm=True, confirm_btn="ok"):
+ def action_list_action(self, name, confirm=True, confirm_btn="ok",
+ parents_css_sel=None):
"""
Execute action list action
"""
- cont = self.find(".active-facet .facet-actions", By.CSS_SELECTOR, strict=True)
- expand = self.find(".dropdown-toggle", By.CSS_SELECTOR, cont, strict=True)
+ context = None
+
+ if not parents_css_sel:
+ context = self.find(".active-facet .facet-actions",
+ By.CSS_SELECTOR, strict=True)
+ else:
+ context = self.find(parents_css_sel, By.CSS_SELECTOR,
+ strict=True)
+
+ expand = self.find(".dropdown-toggle", By.CSS_SELECTOR, context,
+ strict=True)
expand.click()
- action_link = self.find("li[data-name=%s] a" % name, By.CSS_SELECTOR, cont, strict=True)
+ action_link = self.find("li[data-name=%s] a" % name, By.CSS_SELECTOR,
+ context, strict=True)
action_link.click()
if confirm:
self.wait(0.5) # wait for dialog
@@ -1739,17 +1755,25 @@ class UI_driver(object):
assert is_enabled == enabled, ('Invalid enabled state of action button %s. '
'Expected: %s') % (action, str(visible))
- def assert_action_list_action(self, action, visible=True, enabled=True, parent=None):
+ def assert_action_list_action(self, action, visible=True, enabled=True, parent=None,
+ parents_css_sel=None, facet_actions=True):
"""
Assert that action dropdown action is visible/hidden, and enabled/disabled
Enabled is checked only if action is visible.
"""
+
+ li_s = " li[data-name='%s']" % action
+
if not parent:
parent = self.get_form()
- s = ".facet-actions li[data-name='%s']" % action
- li = self.find(s, By.CSS_SELECTOR, parent)
+ if facet_actions:
+ li_s = ".facet-actions" + li_s
+ else:
+ li_s = parents_css_sel + li_s
+
+ li = self.find(li_s, By.CSS_SELECTOR, parent)
link = self.find("a", By.CSS_SELECTOR, li)
is_visible = li is not None and link is not None
--
2.5.5
From 22c0f8c5b2cd961795770662d22b3bb35573eb07 Mon Sep 17 00:00:00 2001
From: Pavel Vomacka <[email protected]>
Date: Wed, 20 Jul 2016 16:28:38 +0200
Subject: [PATCH 6/9] Add function which check whether the field is empty
Part of: https://fedorahosted.org/freeipa/ticket/6064
---
ipatests/test_webui/ui_driver.py | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/ipatests/test_webui/ui_driver.py b/ipatests/test_webui/ui_driver.py
index c82164c53095d8552aef665c5091deeb3bd71437..9c8380056ebee8feab6435e4383009ae6a9aeb9f 100644
--- a/ipatests/test_webui/ui_driver.py
+++ b/ipatests/test_webui/ui_driver.py
@@ -1566,6 +1566,17 @@ class UI_driver(object):
s = "div[name='%s'] %s[name='%s']" % (name, element, name)
self.assert_text(s, value, parent)
+ def assert_empty_value(self, selector, parent=None, negative=False):
+ """
+ Assert empty value of some field in details page or in a form
+ """
+ value = self.get_value(selector, parent)
+
+ if negative:
+ assert not value == ''
+ else:
+ assert value == ''
+
def assert_no_dialog(self):
"""
Assert that no dialog is opened
--
2.5.5
From ed022f046462da16350fbd1a4d00e9141c51f161 Mon Sep 17 00:00:00 2001
From: Pavel Vomacka <[email protected]>
Date: Wed, 20 Jul 2016 16:29:33 +0200
Subject: [PATCH 7/9] TEST: managing user certificates
Part of: https://fedorahosted.org/freeipa/ticket/6064
---
ipatests/test_webui/test_user.py | 104 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 103 insertions(+), 1 deletion(-)
diff --git a/ipatests/test_webui/test_user.py b/ipatests/test_webui/test_user.py
index e926c22123ab449db2c3c061e500fa6e137d875d..51ba29cd8cbfc987f0a21e0c38e8908f254dfebb 100644
--- a/ipatests/test_webui/test_user.py
+++ b/ipatests/test_webui/test_user.py
@@ -36,9 +36,16 @@ try:
except ImportError:
pass
[email protected]
+class user_tasks(UI_driver):
+ def load_file(self, path):
+ with open(path, 'r') as file_d:
+ content = file_d.read()
+ return content
+
@pytest.mark.tier1
-class test_user(UI_driver):
+class test_user(user_tasks):
@screenshot
def test_crud(self):
@@ -164,6 +171,101 @@ class test_user(UI_driver):
self.delete_action(user.ENTITY, user.PKEY, action='delete_active_user')
@screenshot
+ def test_certificates(self):
+ """
+ Test user certificate actions
+
+ Requires to have CA installed and 'user_csr_path' configuration option
+ set.
+ """
+
+ if not self.has_ca():
+ self.skip('CA is not configured')
+
+ csr_path = self.config.get('user_csr_path')
+ if not csr_path:
+ self.skip('CSR file is not configured')
+
+ self.init_app()
+ # ENHANCEMENT: generate csr dynamically
+ csr = self.load_file(csr_path)
+ realm = self.config.get('ipa_realm')
+ cert_widget_sel = "div.certificate-widget"
+
+ self.add_record(user.ENTITY, user.DATA)
+ self.navigate_to_record(user.PKEY)
+
+ # cert request
+ self.action_list_action('request_cert', confirm=False)
+ self.assert_dialog()
+ self.fill_text("textarea[name='csr']", csr)
+ self.dialog_button_click('issue')
+ self.wait_for_request(n=2, d=3)
+ self.assert_visible(cert_widget_sel)
+
+ # cert view
+ self.action_list_action('view', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.assert_dialog()
+ self.dialog_button_click('close')
+
+ # cert get
+ self.action_list_action('get', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.assert_dialog()
+ # check that the textarea is not empty
+ self.assert_empty_value('textarea.certificate', negative=True)
+ self.dialog_button_click('close')
+
+ # cert download - we can only try to click the download action
+ self.action_list_action('download', confirm=False,
+ parents_css_sel=cert_widget_sel)
+
+ # check that revoke action is enabled
+ self.assert_action_list_action('revoke',
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is not enabled
+ self.assert_action_list_action('remove_hold', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # cert revoke
+ self.action_list_action('revoke', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.wait()
+ self.select('select', '6')
+ self.dialog_button_click('ok')
+ self.wait_for_request(n=2, d=3)
+ self.assert_visible(cert_widget_sel + " div.watermark")
+
+ # check that revoke action is not enabled
+ self.assert_action_list_action('revoke', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is enabled
+ self.assert_action_list_action('remove_hold',
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # cert remove hold
+ self.action_list_action('remove_hold', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.wait()
+ self.dialog_button_click('ok')
+ self.wait_for_request(n=2)
+
+ # check that revoke action is enabled
+ self.assert_action_list_action('revoke',
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is not enabled
+ self.assert_action_list_action('remove_hold', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # cleanup
+ self.navigate_to_entity(user.ENTITY, 'search')
+ self.delete_record(user.PKEY, user.DATA.get('del'))
+
+ @screenshot
def test_password_expiration_notification(self):
"""
Test password expiration notification
--
2.5.5
From 51cb90d010fcde577f9b9184184ab6348137c4b6 Mon Sep 17 00:00:00 2001
From: Pavel Vomacka <[email protected]>
Date: Wed, 20 Jul 2016 16:30:14 +0200
Subject: [PATCH 8/9] TEST: managing host certificates
Part of: https://fedorahosted.org/freeipa/ticket/6064
---
ipatests/test_webui/test_host.py | 143 +++++++++++++++++++++++++++++++--------
1 file changed, 113 insertions(+), 30 deletions(-)
diff --git a/ipatests/test_webui/test_host.py b/ipatests/test_webui/test_host.py
index 7ee6b4bac959958330ede11093cf9189cfcb47c8..ba62c554ba58d7b9d4e30bfd91e47686a139b23f 100644
--- a/ipatests/test_webui/test_host.py
+++ b/ipatests/test_webui/test_host.py
@@ -98,11 +98,10 @@ class host_tasks(UI_driver):
ip.append(str(last + 1))
return '.'.join(ip)
- def load_csr(self, path):
- # ENHANCEMENT: generate csr dynamically
- with open(path, 'r') as csr_file:
- csr = csr_file.read()
- return csr
+ def load_file(self, path):
+ with open(path, 'r') as file_d:
+ content = file_d.read()
+ return content
@pytest.mark.tier1
@@ -133,49 +132,138 @@ class test_host(host_tasks):
self.skip('CSR file is not configured')
self.init_app()
- csr = self.load_csr(csr_path)
- panel = 'cert_actions'
+ # ENHANCEMENT: generate csr dynamically
+ csr = self.load_file(csr_path)
realm = self.config.get('ipa_realm')
+ cert_widget_sel="div.certificate-widget"
self.add_record(ENTITY, self.data)
self.navigate_to_record(self.pkey)
- self.assert_visible("div[name='certificate-missing']")
-
# cert request
self.action_list_action('request_cert', confirm=False)
- self.fill_text('textarea.certificate', csr)
+ self.assert_dialog()
+ self.fill_text("textarea[name='csr']", csr)
self.dialog_button_click('issue')
- self.wait_for_request(n=2, d=0.5)
- self.assert_visible("div[name='certificate-valid']")
+ self.wait_for_request(n=2, d=3)
+ self.assert_visible(cert_widget_sel)
# cert view
- self.action_list_action('view_cert', confirm=False)
- self.wait()
- self.assert_text("tbody tr:nth-child(2) td:nth-child(2)", self.pkey)
- self.assert_text("tbody tr:nth-child(3) td:nth-child(2)", realm)
+ self.action_list_action('view', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.assert_dialog()
self.dialog_button_click('close')
# cert get
- self.action_list_action('get_cert', confirm=False)
- self.wait()
- # We don't know the cert text, so at least open and close the dialog
+ self.action_list_action('get', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.assert_dialog()
+ # check that the textarea is not empty
+ self.assert_empty_value('textarea.certificate', negative=True)
self.dialog_button_click('close')
+ # cert download - we can only try to click the download action
+ self.action_list_action('download', confirm=False, parents_css_sel=cert_widget_sel)
+
+ # check that revoke action is enabled
+ self.assert_action_list_action('revoke',
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is not enabled
+ self.assert_action_list_action('remove_hold', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
# cert revoke
- self.action_list_action('revoke_cert', confirm=False)
+ self.action_list_action('revoke', confirm=False,
+ parents_css_sel=cert_widget_sel)
self.wait()
self.select('select', '6')
self.dialog_button_click('ok')
- self.wait_for_request(n=2)
- self.assert_visible("div[name='certificate-revoked']")
+ self.wait_for_request(n=2, d=3)
+ self.assert_visible(cert_widget_sel + " div.watermark")
- # cert restore
- self.action_list_action('restore_cert', confirm=False)
+ # check that revoke action is not enabled
+ self.assert_action_list_action('revoke', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is enabled
+ self.assert_action_list_action('remove_hold',
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # cert remove hold
+ self.action_list_action('remove_hold', confirm=False,
+ parents_css_sel=cert_widget_sel)
self.wait()
self.dialog_button_click('ok')
self.wait_for_request(n=2)
- self.assert_visible("div[name='certificate-valid']")
+
+ # check that revoke action is enabled
+ self.assert_action_list_action('revoke',
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is not enabled
+ self.assert_action_list_action('remove_hold', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # cleanup
+ self.navigate_to_entity(ENTITY, 'search')
+ self.delete_record(self.pkey, self.data.get('del'))
+
+ @screenshot
+ def test_arbitrary_certificates(self):
+ """
+ Test managing host arbitrary certificate.
+
+ Requires to have 'arbitrary_cert' configuration set.
+ """
+ cert_path = self.config.get('arbitrary_cert_path')
+ if not cert_path:
+ self.skip('Arbitrary certificate file is not configured')
+
+ self.init_app()
+ cert = self.load_file(cert_path)
+ realm = self.config.get('ipa_realm')
+ self.add_record(ENTITY, self.data)
+
+ self.navigate_to_record(self.pkey)
+
+ # check whether certificate section is present
+ self.assert_visible("div[name='certificate']")
+
+ # add certificate
+ self.button_click('add', parents_css_sel="div[name='certificate']")
+ self.assert_dialog()
+ self.fill_textarea('new_cert', cert)
+ self.dialog_button_click('add')
+
+ self.assert_visible("div.certificate-widget")
+
+ # cert view
+ self.action_list_action('view', confirm=False,
+ parents_css_sel="div.certificate-widget")
+ self.assert_dialog()
+ self.dialog_button_click('close')
+
+ # cert get
+ self.action_list_action('get', confirm=False,
+ parents_css_sel="div.certificate-widget")
+ self.assert_dialog()
+
+ # check that the textarea is not empty
+ self.assert_empty_value('textarea.certificate', negative=True)
+ self.dialog_button_click('close')
+
+ # cert download - we can only try to click the download action
+ self.action_list_action('download', confirm=False,
+ parents_css_sel="div.certificate-widget")
+
+ # check that revoke action is not enabled
+ self.assert_action_list_action('revoke', enabled=False,
+ parents_css_sel="div.certificate-widget", facet_actions=False)
+
+ # check that remove_hold action is not enabled
+ self.assert_action_list_action('remove_hold', enabled=False,
+ parents_css_sel="div.certificate-widget", facet_actions=False)
# cleanup
self.navigate_to_entity(ENTITY, 'search')
@@ -195,11 +283,6 @@ class test_host(host_tasks):
self.navigate_to_record(self.pkey)
self.assert_action_list_action('request_cert', visible=False)
- self.assert_action_list_action('revoke_cert', visible=False)
- self.assert_action_list_action('restore_cert', visible=False)
-
- self.assert_action_list_action('view_cert', enabled=False)
- self.assert_action_list_action('get_cert', enabled=False)
self.navigate_by_breadcrumb('Hosts')
self.delete_record(self.pkey, self.data.get('del'))
--
2.5.5
From 83430628bb280675f89eebb7254abed99ea474ce Mon Sep 17 00:00:00 2001
From: Pavel Vomacka <[email protected]>
Date: Wed, 20 Jul 2016 16:30:46 +0200
Subject: [PATCH 9/9] TEST: managing service certificates
Part of: https://fedorahosted.org/freeipa/ticket/6064
---
ipatests/test_webui/test_service.py | 151 +++++++++++++++++++++++++++---------
1 file changed, 115 insertions(+), 36 deletions(-)
diff --git a/ipatests/test_webui/test_service.py b/ipatests/test_webui/test_service.py
index f582b688cea7e07b4228ffb4333837e4a0139445..bad813b3e53a21ea007ca02d3523226c3026f5e9 100644
--- a/ipatests/test_webui/test_service.py
+++ b/ipatests/test_webui/test_service.py
@@ -48,11 +48,11 @@ class sevice_tasks(UI_driver):
],
}
- def load_csr(self, path):
+ def load_file(self, path):
# ENHANCEMENT: generate csr dynamically
- with open(path, 'r') as csr_file:
- csr = csr_file.read()
- return csr
+ with open(path, 'r') as file_d:
+ content = file_d.read()
+ return content
def get_http_pkey(self):
host = self.config.get('ipa_server')
@@ -92,49 +92,141 @@ class test_service(sevice_tasks):
self.init_app()
data = self.prep_data()
pkey = data.get('pkey')
- csr = self.load_csr(csr_path)
+ csr = self.load_file(csr_path)
host = self.config.get('ipa_server')
realm = self.config.get('ipa_realm')
+ cert_widget_sel = "div.certificate-widget"
self.add_record(ENTITY, data)
self.navigate_to_record(pkey)
- self.assert_visible("div[name='certificate-missing']")
-
# cert request
self.action_list_action('request_cert', confirm=False)
- self.fill_text('textarea.certificate', csr)
+ self.assert_dialog()
+ self.fill_text("textarea[name='csr'", csr)
self.dialog_button_click('issue')
- self.wait_for_request(n=2, d=0.5)
- self.assert_visible("div[name='certificate-valid']")
+ self.wait_for_request(n=2, d=3)
+ self.assert_visible(cert_widget_sel)
# cert view
- self.action_list_action('view_cert', confirm=False)
- self.wait()
- self.assert_text("tbody tr:nth-child(2) td:nth-child(2)", host)
- self.assert_text("tbody tr:nth-child(3) td:nth-child(2)", realm)
+ self.action_list_action('view', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.assert_dialog()
self.dialog_button_click('close')
# cert get
- self.action_list_action('get_cert', confirm=False)
- self.wait()
- # We don't know the cert text, so at least open and close the dialog
+ self.action_list_action('get', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.assert_dialog()
+ #check that text area is not empty
+ self.assert_empty_value('textarea.certificate', negative=True)
self.dialog_button_click('close')
+ # cert download - we can only try to click the download action
+ self.action_list_action('download', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ # check that revoke action is enabled
+ self.assert_action_list_action('revoke',
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is not enabled
+ self.assert_action_list_action('remove_hold', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
# cert revoke
- self.action_list_action('revoke_cert', confirm=False)
+ self.action_list_action('revoke', confirm=False,
+ parents_css_sel=cert_widget_sel)
self.wait()
self.select('select', '6')
self.dialog_button_click('ok')
- self.wait_for_request(n=2)
- self.assert_visible("div[name='certificate-revoked']")
+ self.wait_for_request(n=2, d=3)
+ self.assert_visible(cert_widget_sel + " div.watermark")
- # cert restore
- self.action_list_action('restore_cert', confirm=False)
+ # check that revoke action is not enabled
+ self.assert_action_list_action('revoke', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is enabled
+ self.assert_action_list_action('remove_hold',
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # cert remove hold
+ self.action_list_action('remove_hold', confirm=False,
+ parents_css_sel=cert_widget_sel)
self.wait()
self.dialog_button_click('ok')
self.wait_for_request(n=2)
- self.assert_visible("div[name='certificate-valid']")
+
+ # check that revoke action is enabled
+ self.assert_action_list_action('revoke',
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is not enabled
+ self.assert_action_list_action('remove_hold', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # cleanup
+ self.navigate_to_entity(ENTITY, 'search')
+ self.delete_record(pkey, data.get('del'))
+
+ @screenshot
+ def test_arbitrary_certificates(self):
+ """
+ Test managing service arbitrary certificate.
+
+ Requires to have 'arbitrary_cert' configuration set.
+ """
+ cert_path = self.config.get('arbitrary_cert_path')
+ if not cert_path:
+ self.skip('Arbitrary certificate file is not configured')
+
+ self.init_app()
+ data = self.prep_data()
+ pkey = data.get('pkey')
+ cert = self.load_file(cert_path)
+ realm = self.config.get('ipa_realm')
+ cert_widget_sel = "div.certificate-widget"
+
+ self.add_record(ENTITY, data)
+ self.navigate_to_record(pkey)
+
+ # check whether certificate section is present
+ self.assert_visible("div[name='certificate']")
+
+ # add certificate
+ self.button_click('add', parents_css_sel="div[name='certificate']")
+ self.assert_dialog()
+ self.fill_textarea('new_cert', cert)
+ self.dialog_button_click('add')
+
+ self.assert_visible(cert_widget_sel)
+
+ # cert view
+ self.action_list_action('view', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.assert_dialog()
+ self.dialog_button_click('close')
+
+ # cert get
+ self.action_list_action('get', confirm=False,
+ parents_css_sel=cert_widget_sel)
+ self.assert_dialog()
+
+ # check that the textarea is not empty
+ self.assert_empty_value('textarea.certificate', negative=True)
+ self.dialog_button_click('close')
+
+ # cert download - we can only try to click the download action
+ self.action_list_action('download', confirm=False,
+ parents_css_sel=cert_widget_sel)
+
+ # check that revoke action is not enabled
+ self.assert_action_list_action('revoke', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
+
+ # check that remove_hold action is not enabled
+ self.assert_action_list_action('remove_hold', enabled=False,
+ parents_css_sel=cert_widget_sel, facet_actions=False)
# cleanup
self.navigate_to_entity(ENTITY, 'search')
@@ -158,23 +250,10 @@ class test_service(sevice_tasks):
self.navigate_to_record(pkey)
self.assert_action_list_action('request_cert', visible=False)
- self.assert_action_list_action('revoke_cert', visible=False)
- self.assert_action_list_action('restore_cert', visible=False)
-
- self.assert_action_list_action('view_cert', enabled=False)
- self.assert_action_list_action('get_cert', enabled=False)
self.navigate_by_breadcrumb('Services')
self.delete_record(pkey, data.get('del'))
- # test HTTP, which should have cert set by default and so 'view' and 'get'
- # actions visible and enabled
- pkey = self.get_http_pkey()
-
- self.navigate_to_record(pkey)
- self.assert_action_list_action('view_cert')
- self.assert_action_list_action('get_cert')
-
@screenshot
def test_kerberos_flags(self):
"""
--
2.5.5
--
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code