update from RIFT as of 696b75d2fe9fb046261b08c616f1bcf6c0b54a9b second try
[osm/SO.git] / rwlaunchpad / ra / pytest / ns / gui_tests / test_launchpad_ui.py
diff --git a/rwlaunchpad/ra/pytest/ns/gui_tests/test_launchpad_ui.py b/rwlaunchpad/ra/pytest/ns/gui_tests/test_launchpad_ui.py
new file mode 100755 (executable)
index 0000000..dd4e32e
--- /dev/null
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+#   Copyright 2017 RIFT.IO Inc
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+
+
+import gi
+
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.support import expected_conditions as EC
+from selenium.webdriver.common.by import By
+
+
+gi.require_version('RwUserYang', '1.0')
+gi.require_version('RwProjectYang', '1.0')
+gi.require_version('RwConmanYang', '1.0')
+
+from gi.repository import (
+    RwUserYang,
+    RwProjectYang,
+    RwConmanYang
+)
+
+gi.require_version('RwKeyspec', '1.0')
+from gi.repository.RwKeyspec import quoted_key
+
+
+class TestGUI(object):
+    """TestGUI."""
+
+    def click_element_and_wait(self, driver, key_word, wait=True):
+        """Click and wait for that element to appear."""
+        path = "//a[text()={}]".format(quoted_key(key_word))
+        driver.find_element_by_xpath(path).click()
+        if wait is True:
+            WebDriverWait(driver, 10).until(
+                EC.presence_of_element_located((
+                    By.XPATH, path)))
+
+    def click_button(self, driver, key_word):
+        """Click a button."""
+        path = "//div[text()={}]".format(quoted_key(key_word))
+        driver.find_element_by_xpath(path).click()
+
+    def input_value(self, driver, data_reactid, value):
+        """Input values to field."""
+        path = "//input[@data-reactid={}]".format(quoted_key(data_reactid))
+        driver.find_element_by_xpath(path).send_keys(value)
+
+    def test_basic_checks(
+            self, driver, logger, rw_project_proxy, rw_user_proxy):
+        """test_basic_checks."""
+        logger.debug('Check access to all basic pages.')
+        basic_pages = (
+            ['Accounts', 'Catalog', 'Launchpad', 'ADMINISTRATION',
+             'PROJECT: default', 'admin'])
+        for key_word in basic_pages:
+            self.click_element_and_wait(driver, key_word)
+
+        logger.debug('Create a test project.')
+        self.click_element_and_wait(driver, 'ADMINISTRATION')
+        self.click_element_and_wait(driver, 'Project Management', wait=False)
+        self.click_button(driver, 'Add Project')
+        self.input_value(driver, '.0.4.0.1.0.4.0.0.1.0.1', 'test_project')
+        self.click_button(driver, 'Create')
+
+        logger.debug('Verify test project is created in ui.')
+        path = "//div[text()={}]".format(quoted_key('test_project'))
+        WebDriverWait(driver, 10).until(
+            EC.presence_of_element_located((
+                By.XPATH, path)))
+
+        logger.debug('Verify test project is created in config.')
+        project_cm_config_xpath = '/project[name={}]/project-state'
+        project_ = rw_project_proxy.get_config(
+            project_cm_config_xpath.format(
+                quoted_key('test_project')), list_obj=True)
+        assert project_
+
+        logger.debug('Create a test user.')
+        self.click_element_and_wait(driver, 'ADMINISTRATION')
+        self.click_element_and_wait(driver, 'User Management', wait=False)
+        self.click_button(driver, 'Add User')
+        self.input_value(driver, '.0.4.0.1.1.0.4.0.0.1.0.1', 'test_user')
+        self.input_value(driver, '.0.4.0.1.1.0.4.0.3.1.0.1', 'mypasswd')
+        self.input_value(driver, '.0.4.0.1.1.0.4.0.3.1.1.1', 'mypasswd')
+        self.click_button(driver, 'Create')
+
+        logger.debug('Verify test user is created in ui.')
+        path = "//div[text()={}]".format(quoted_key('test_user'))
+        WebDriverWait(driver, 10).until(
+            EC.presence_of_element_located((
+                By.XPATH, path)))
+
+        logger.debug('Verify test user is created in config.')
+        user_config_xpath = (
+            '/user-config/user[user-name={user_name}][user-domain={domain}]')
+        user_ = rw_user_proxy.get_config(
+            user_config_xpath.format(
+                user_name=quoted_key('test_user'),
+                domain=quoted_key('system')))
+        assert user_