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 <mva...@redhat.com>
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 <mva...@redhat.com>
---
 .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 <mva...@redhat.com>
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 <mva...@redhat.com>
---
 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 -- freeipa-devel@lists.fedorahosted.org
To unsubscribe send an email to freeipa-devel-le...@lists.fedorahosted.org

Reply via email to