示例#1
0
文件: tests.py 项目: ciniguez/FIREWA
    def test_basic_wiring_editor_operations(self):
        self.login()

        self.add_widget_to_mashup('Test', new_name='Test (1)')
        self.add_widget_to_mashup('Test', new_name='Test (2)')
        self.add_widget_to_mashup('Test', new_name='Test (3)')
        iwidgets = self.get_current_iwidgets()

        self.change_main_view('wiring')
        time.sleep(2)
        grid = self.driver.find_element_by_xpath("//*[contains(@class, 'container center_container grid')]")

        source = self.driver.find_element_by_xpath("//*[contains(@class, 'container iwidget')]//*[text()='Test (1)']")
        # TODO there are several bugs in the firefox, for now, this line of code "works"
        ActionChains(self.driver).click_and_hold(source).move_to_element(grid).move_by_offset(-40, -40).click().perform()

        source = self.driver.find_element_by_xpath("//*[contains(@class, 'container iwidget')]//*[text()='Test (2)']")
        # TODO there are several bugs in the firefox, for now, this line of code "works"
        ActionChains(self.driver).click_and_hold(source).move_to_element(grid).move_by_offset(40, 40).click().perform()
        time.sleep(0.2)

        source = self.get_iwidget_anchor(1, 'outputendpoint')
        target = self.get_iwidget_anchor(2, 'inputendpoint')
        ActionChains(self.driver).drag_and_drop(source, target).perform()

        self.change_main_view('workspace')
        time.sleep(0.2)

        with iwidget_context(self.driver, iwidgets[0]['id']):
            text_input = self.driver.find_element_by_tag_name('input')
            self.fill_form_input(text_input, 'hello world!!')
            # Work around hang when using Firefox Driver
            self.driver.execute_script('sendEvent();')
            #self.driver.find_element_by_id('b1').click()

        time.sleep(0.2)

        with iwidget_context(self.driver, iwidgets[1]['id']):
            try:
                WebDriverWait(self.driver, timeout=30).until(lambda driver: driver.find_element_by_id('wiringOut').text == 'hello world!!')
            except:
                pass

            text_div = self.driver.find_element_by_id('wiringOut')
            self.assertEqual(text_div.text, 'hello world!!')

        with iwidget_context(self.driver, iwidgets[2]['id']):
            text_div = self.driver.find_element_by_id('wiringOut')
            self.assertEqual(text_div.text, '')

        with iwidget_context(self.driver, iwidgets[0]['id']):
            text_div = self.driver.find_element_by_id('wiringOut')
            self.assertEqual(text_div.text, '')
示例#2
0
    def test_ngsi_available_to_widgets(self):

        self.login()

        resource = self.add_packaged_resource_to_catalogue('Wirecloud_ngsi-test-widget_1.0.wgt', 'Wirecloud NGSI API test widget')
        iwidget = self.instantiate(resource)

        with iwidget_context(self.driver, iwidget['id']):
            body = self.driver.find_element_by_tag_name('body')
            self.assertEqual(body.text, 'Success')
示例#3
0
    def test_create_workspace_from_catalogue(self):

        self.login()
        self.create_workspace_from_catalogue("Test Mashup")

        # Test that wiring works as expected
        tab = self.get_workspace_tab_by_name("Tab")
        tab2 = self.get_workspace_tab_by_name("Tab 2")

        # Load tab2
        tab2.click()
        tab.click()

        iwidgets = self.get_current_iwidgets()

        # Send wiring event
        with iwidget_context(self.driver, iwidgets[0]["id"]):
            text_input = self.driver.find_element_by_tag_name("input")
            self.fill_form_input(text_input, "hello world!!")
            # Work around hang when using Firefox Driver
            self.driver.execute_script("sendEvent();")
            # self.driver.find_element_by_id('b1').click()

        time.sleep(0.2)

        # Check event is received by the second test widget
        tab2.click()
        with iwidget_context(self.driver, iwidgets[1]["id"]):
            try:
                WebDriverWait(self.driver, timeout=30).until(
                    lambda driver: driver.find_element_by_id("wiringOut").text == "hello world!!"
                )
            except:
                pass

            text_div = self.driver.find_element_by_id("wiringOut")
            self.assertEqual(text_div.text, "hello world!!")
示例#4
0
    def test_basic_widget_functionalities(self):

        self.login(username="******")
        iwidget_id = self.get_current_iwidgets()[0]["id"]
        api_test_iwidget = self.add_widget_to_mashup("Wirecloud API test")["id"]

        with iwidget_context(self.driver, iwidget_id):
            self.assertEqual(self.driver.find_element_by_id("listPref").text, "default")
            self.assertEqual(self.driver.find_element_by_id("textPref").text, "initial text")
            self.assertEqual(self.driver.find_element_by_id("booleanPref").text, "false")
            self.assertEqual(self.driver.find_element_by_id("passwordPref").text, "default")

        # Change widget settings
        self.driver.find_element_by_css_selector(".iwidget .icon-cogs").click()
        self.popup_menu_click("Settings")

        list_input = self.driver.find_element_by_css_selector('.window_menu [name="list"]')
        self.fill_form_input(list_input, "1")  # value1
        text_input = self.driver.find_element_by_css_selector('.window_menu [name="text"]')
        self.fill_form_input(text_input, "test")
        boolean_input = self.driver.find_element_by_css_selector('.window_menu [name="boolean"]')
        boolean_input.click()
        password_input = self.driver.find_element_by_css_selector('.window_menu [name="password"]')
        self.fill_form_input(password_input, "password")

        self.driver.find_element_by_xpath("//*[contains(@class, 'window_menu')]//*[text()='Accept']").click()

        with iwidget_context(self.driver, iwidget_id):
            self.assertEqual(self.driver.find_element_by_id("listPref").text, "1")
            self.assertEqual(self.driver.find_element_by_id("textPref").text, "test")
            self.assertEqual(self.driver.find_element_by_id("booleanPref").text, "true")
            self.assertEqual(self.driver.find_element_by_id("passwordPref").text, "password")

        # Change widget settings again
        self.driver.find_element_by_css_selector(".iwidget .icon-cogs").click()
        self.popup_menu_click("Settings")

        text_input = self.driver.find_element_by_css_selector('.window_menu [name="text"]')
        self.fill_form_input(text_input, "")
        password_input = self.driver.find_element_by_css_selector('.window_menu [name="password"]')
        self.fill_form_input(password_input, "")

        self.driver.find_element_by_xpath("//*[contains(@class, 'window_menu')]//*[text()='Accept']").click()

        with iwidget_context(self.driver, iwidget_id):
            self.assertEqual(self.driver.find_element_by_id("listPref").text, "1")
            self.assertEqual(self.driver.find_element_by_id("textPref").text, "")
            self.assertEqual(self.driver.find_element_by_id("booleanPref").text, "true")
            self.assertEqual(self.driver.find_element_by_id("passwordPref").text, "")

        # Use api test widget to test other API features
        with iwidget_context(self.driver, api_test_iwidget):
            self.assertEqual(self.driver.find_element_by_id("makerequest_test").text, "Success!!")
            prop_input = self.driver.find_element_by_css_selector("#update_prop_input")
            self.fill_form_input(prop_input, "new value")
            self.driver.find_element_by_css_selector("#update_prop_button").click()

        self.driver.refresh()
        self.wait_wirecloud_ready()
        time.sleep(1)

        with iwidget_context(self.driver, api_test_iwidget):
            prop_input = self.driver.find_element_by_css_selector("#update_prop_input")
            self.assertEqual(prop_input.get_attribute("value"), "new value")
示例#5
0
文件: tests.py 项目: ciniguez/FIREWA
    def test_wiring_recovers_from_invalid_views_data(self):

        workspace = Workspace.objects.get(id=2)
        workspace.wiringStatus = json.dumps({
            "views": [
                {
                    "label": "default",
                    "iwidgets": {
                        "1": None
                    },
                    "operators": {
                        "0": None
                    },
                    "connections": []
                }
            ],
            "operators": {
                "0": {
                    "name": "Wirecloud/TestOperator/1.0",
                    "id": "0",
                    "preferences": {}
                }
            },
            "connections": [
                {
                    "source": {
                        "type": "iwidget",
                        "id": 1,
                        "endpoint": "outputendpoint"
                    },
                    "target": {
                        "type": "iwidget",
                        "id": 2,
                        "endpoint": "inputendpoint"
                    }
                },
                {
                    "source": {
                        "type": "iwidget",
                        "id": 2,
                        "endpoint": "outputendpoint"
                    },
                    "target": {
                        "type": "ioperator",
                        "id": 0,
                        "endpoint": "input"
                    }
                },
                {
                    "source": {
                        "type": "ioperator",
                        "id": 0,
                        "endpoint": "output"
                    },
                    "target": {
                        "type": "iwidget",
                        "id": 1,
                        "endpoint": "inputendpoint"
                    }
                }
            ]
        })
        workspace.save()

        self.login(username='******')

        iwidgets = self.get_current_iwidgets()
        self.assertEqual(len(iwidgets), 2)
        self.change_main_view('wiring')
        self.wait_element_visible_by_xpath("//*[contains(@class, 'window_menu')]//*[text()='Yes']")
        self.driver.find_element_by_xpath("//*[contains(@class, 'window_menu')]//*[text()='Yes']").click()
        time.sleep(2)
        window_menus = len(self.driver.find_elements_by_css_selector('.window_menu'))
        self.assertEqual(window_menus, 1)

        self.change_main_view('workspace')
        with iwidget_context(self.driver, iwidgets[0]['id']):
            text_input = self.driver.find_element_by_tag_name('input')
            self.fill_form_input(text_input, 'hello world!!')
            # Work around hang when using Firefox Driver
            self.driver.execute_script('sendEvent();')
            #self.driver.find_element_by_id('b1').click()

        time.sleep(0.2)

        with iwidget_context(self.driver, iwidgets[1]['id']):
            try:
                WebDriverWait(self.driver, timeout=30).until(lambda driver: driver.find_element_by_id('wiringOut').text == 'hello world!!')
            except:
                pass

            text_div = self.driver.find_element_by_id('wiringOut')
            self.assertEqual(text_div.text, 'hello world!!')