URL: https://github.com/freeipa/freeipa/pull/1923
Author: varunmylaraiah
Title: #1923: Extend WebUI test_krbpolicy automation suite
Action: opened
PR body:
"""
Extend WebUI test_krbpolicy suite with the following test cases
test_verifying_button (verify button's action in various scenarios)
test_negative_value (verify invalid values)
test_verifying_measurement_unit
https://pagure.io/freeipa/issue/7540
"""
To pull the PR as Git branch:
git remote add ghfreeipa https://github.com/freeipa/freeipa
git fetch ghfreeipa pull/1923/head:pr1923
git checkout pr1923
From 770deab7bf8325c83880957d668860b535f89689 Mon Sep 17 00:00:00 2001
From: Varun Mylaraiah <[email protected]>
Date: Mon, 14 May 2018 12:16:45 +0530
Subject: [PATCH 1/2] Temporary_commit: activate web_ui tests and ui_driver
"field_validation" changes
Signed-off-by: Varun Mylaraiah <[email protected]>
---
.freeipa-pr-ci.yaml | 183 ++-------------------------------------
ipatests/test_webui/ui_driver.py | 10 ++-
2 files changed, 16 insertions(+), 177 deletions(-)
diff --git a/.freeipa-pr-ci.yaml b/.freeipa-pr-ci.yaml
index 88d34d58fc..7de92aab11 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
@@ -27,183 +31,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::TestExternalCA test_integration/test_external_ca.py::TestSelfExternalSelf test_integration/test_external_ca.py::TestExternalCAInstall
- 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_ipa_cli:
- requires: [fedora-27/build]
- priority: 50
- job:
- class: RunPytest
- args:
- build_url: '{fedora-27/build_url}'
- test_suite: test_integration/test_ipa_cli.py
- template: *ci-master-f27
- timeout: 3600
- topology: *master_1repl
-
- 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
-
- fedora-27/test_authconfig:
- requires: [fedora-27/build]
- priority: 50
- job:
- class: RunPytest
- args:
- build_url: '{fedora-27/build_url}'
- test_suite: test_integration/test_authselect.py
- template: *ci-master-f27
- timeout: 3600
- topology: *master_1repl_1client
-
+ timeout: 7200
+ topology: *ipaserver
diff --git a/ipatests/test_webui/ui_driver.py b/ipatests/test_webui/ui_driver.py
index 34d21ae35d..1febc3d367 100644
--- a/ipatests/test_webui/ui_driver.py
+++ b/ipatests/test_webui/ui_driver.py
@@ -2139,7 +2139,7 @@ def assert_action_list_action(self, action, visible=True, enabled=True,
assert is_enabled == enabled, ('Invalid enabled state of action item %s. '
'Expected: %s') % (action, str(visible))
- def assert_field_validation(self, expect_error, parent=None):
+ def assert_field_validation(self, expect_error, parent=None, field=None):
"""
Assert for error in field validation
"""
@@ -2147,14 +2147,18 @@ def assert_field_validation(self, expect_error, parent=None):
if not parent:
parent = self.get_form()
+ if field:
+ field_s = '.widget[name="{}"]'.format(field)
+ parent = self.find(field_s, By.CSS_SELECTOR, context=parent)
+
req_field_css = '.help-block[name="error_link"]'
res = self.find(req_field_css, By.CSS_SELECTOR, context=parent)
assert expect_error in res.text, \
'Expected error: {} not found'.format(expect_error)
- def assert_field_validation_required(self, parent=None):
- self.assert_field_validation('Required field', parent)
+ def assert_field_validation_required(self, parent=None, field=None):
+ self.assert_field_validation('Required field', parent, field)
def assert_notification(self, type='success', assert_text=None):
"""
From 550b18a19d1dbf057392a622ec8091a75a718cf9 Mon Sep 17 00:00:00 2001
From: Varun Mylaraiah <[email protected]>
Date: Mon, 14 May 2018 12:54:57 +0530
Subject: [PATCH 2/2] Extend WebUI test_krbpolicy suite with the following test
cases: test_verifying_button (verify button's action in various scenarios)
test_negative_value (verify invalid values) test_verifying_measurement_unit
https://pagure.io/freeipa/issue/7540
Signed-off-by: Varun Mylaraiah <[email protected]>
---
ipatests/test_webui/test_krbtpolicy.py | 96 ++++++++++++++++++++++++++++++++++
1 file changed, 96 insertions(+)
diff --git a/ipatests/test_webui/test_krbtpolicy.py b/ipatests/test_webui/test_krbtpolicy.py
index 2bfb964827..d2d0c2622e 100644
--- a/ipatests/test_webui/test_krbtpolicy.py
+++ b/ipatests/test_webui/test_krbtpolicy.py
@@ -55,3 +55,99 @@ def test_mod(self):
self.mod_record(ENTITY, DATA)
self.mod_record(ENTITY, DATA2)
+
+ @screenshot
+ def test_verifying_button(self):
+ """
+ verifying Revert, Refresh and Undo button
+ """
+ self.init_app()
+ self.navigate_to_entity(ENTITY)
+
+ # verifying Revert, Refresh and Undo button for max renewable age
+ self.button_reset('krbmaxrenewableage', '444800')
+
+ # verifying Revert, Refresh and Undo button for max ticket age
+ self.button_reset('krbmaxticketlife', '46400')
+
+ def button_reset(self, field, value):
+ """
+ testing "Revert", "Refresh" and "Undo" button
+ """
+ # verifying undo button
+ self.fill_textbox(field, value)
+ facet = self.get_facet()
+ s = ".input-group button[name='undo']"
+ self._button_click(s, facet)
+ self.verify_btn_action(field, value)
+ self.wait_for_request(n=2)
+
+ # verifying revert button
+ self.fill_textbox(field, value)
+ self.facet_button_click('revert')
+ self.verify_btn_action(field, value)
+ self.wait_for_request(n=2)
+
+ # verifying refresh button
+ self.fill_textbox(field, value)
+ self.facet_button_click('refresh')
+ self.verify_btn_action(field, value)
+ self.wait_for_request(n=2)
+
+ def verify_btn_action(self, field, mod_value, negative=True):
+ """
+ comparing current value with modified value
+ """
+ current_value = self.get_field_value(field, element="input")
+ if negative:
+ assert current_value != mod_value
+ else:
+ assert current_value == mod_value
+
+ @screenshot
+ def test_negative_value(self):
+ """
+ Negative test for Max renew
+ """
+ self.init_app()
+ self.navigate_to_entity(ENTITY)
+
+ # string used instead of integer
+ expected_error = 'Must be an integer'
+ value = 'nonInteger'
+ self.modify_policy(expected_error, value)
+
+ # bigger than max value
+ expected_error = 'Maximum value is 2147483647'
+ value = '2147483649'
+ self.modify_policy(expected_error, value)
+
+ # smaller than max value
+ expected_error = 'Minimum value is 1'
+ value = '-1'
+ self.modify_policy(expected_error, value)
+
+ def modify_policy(self, expected_error, value):
+ """
+ modifying kerberos policy values
+ """
+ self.fill_textbox('krbmaxrenewableage', value)
+ self.wait_for_request()
+ self.assert_field_validation(expected_error)
+ self.facet_button_click('revert')
+ self.fill_textbox('krbmaxticketlife', value)
+ self.wait_for_request()
+ self.assert_field_validation(expected_error, field='krbmaxticketlife')
+ self.facet_button_click('revert')
+
+ @screenshot
+ def test_verify_measurement_unit(self):
+ """
+ verifying measurement unit for Max renew and Max life
+ """
+ self.init_app()
+ self.navigate_to_entity(ENTITY)
+ label1 = self.get_text('label[name="krbmaxrenewableage"]')
+ label2 = self.get_text('label[name="krbmaxticketlife"]')
+ assert "Max renew (seconds)" in label1
+ assert "Max life (seconds)" in label2
_______________________________________________
FreeIPA-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]