예제 #1
0
def g_click_on_provider_in_sidebar(selenium, browser_id_list, providers):
    browser_ids = parse_seq(browser_id_list)
    providers = parse_seq(providers)
    for browser_id, provider in izip_longest(browser_ids, providers,
                                             fillvalue=providers[-1]):
        driver = selenium[browser_id]
        _click_on_provider(driver, provider)
예제 #2
0
def g_click_on_provider_in_sidebar(selenium, browser_id_list, providers):
    browser_ids = parse_seq(browser_id_list)
    providers = parse_seq(providers)
    for browser_id, provider in izip_longest(browser_ids,
                                             providers,
                                             fillvalue=providers[-1]):
        driver = selenium[browser_id]
        _click_on_provider(driver, provider)
예제 #3
0
def are_nav_tabs_for_metadata_panel_displayed(browser_id, tab_list, item_name,
                                              tmp_memory):
    browser = tmp_memory[browser_id]['file_browser']
    nav = browser.get_metadata_for(item_name).navigation
    for tab in parse_seq(tab_list):
        assert getattr(nav, tab.lower()) is not None, \
            'no navigation tab {} found'.format(tab)
예제 #4
0
def assert_none_item_is_selected_in_file_browser(browser_id, item_list,
                                                 tmp_memory):
    browser = tmp_memory[browser_id]['file_browser']
    err_msg = 'item "{name}" is selected while it should not be'
    for item_name in parse_seq(item_list):
        item = browser[item_name]
        assert not item.is_selected(), err_msg.format(name=item_name)
예제 #5
0
def are_nav_tabs_for_metadata_panel_displayed(browser_id, tab_list, item_name,
                                              tmp_memory):
    browser = tmp_memory[browser_id]['file_browser']
    nav = browser.get_metadata_for(item_name).navigation
    for tab in parse_seq(tab_list):
        assert getattr(nav, tab.lower()) is not None, \
            'no navigation tab {} found'.format(tab)
예제 #6
0
def assert_none_item_is_selected_in_file_browser(browser_id, item_list,
                                                 tmp_memory):
    browser = tmp_memory[browser_id]['file_browser']
    err_msg = 'item "{name}" is selected while it should not be'
    for item_name in parse_seq(item_list):
        item = browser[item_name]
        assert not item.is_selected(), err_msg.format(name=item_name)
예제 #7
0
def assert_btn_disabled_in_toolbar_in_data_tab_in_op(selenium, browser_id,
                                                     btn_list, op_page):
    driver = selenium[browser_id]
    toolbar = op_page(driver).data.toolbar
    err_msg = '{} btn should be disabled but is not in toolbar in op data tab'
    for btn in parse_seq(btn_list):
        item = getattr(toolbar, transform(btn))
        assert item.is_enabled() is False, err_msg.format(btn)
예제 #8
0
def assert_provider_chunks_in_data_distribution(selenium, browser_id, chunks,
                                                provider, modals):
    driver = selenium[browser_id]
    prov_rec = modals(driver).data_distribution.providers[provider]
    distribution = prov_rec.distribution
    size, _ = distribution.size
    displayed_chunks = distribution.chunks
    expected_chunks = parse_seq(chunks, pattern=r'\(.+?\)')
    assert len(displayed_chunks) == len(expected_chunks), \
        'displayed {} chunks instead of expected {}'.format(len(displayed_chunks),
                                                            len(expected_chunks))
    for chunk1, chunk2 in izip(displayed_chunks, expected_chunks):
        assert all(round(x - z) == 0 for x, z in izip(chunk1,
                                                      parse_seq(chunk2,
                                                                pattern='\d+',
                                                                default=int))), \
            'displayed chunk {} instead of expected {}'.format(chunk1, chunk2)
예제 #9
0
def assert_items_absence_in_file_browser(selenium, browser_id, item_list,
                                         tmp_memory):
    driver = selenium[browser_id]
    browser = tmp_memory[browser_id]['file_browser']
    with implicit_wait(driver, 0.1, SELENIUM_IMPLICIT_WAIT):
        for item_name in parse_seq(item_list):
            with pytest.raises(RuntimeError):
                _ = browser[item_name]
def _not_in_sidebar_list(driver, items_names, items_type, items=None):
    items = items if items else _get_items_from_sidebar_list(driver,
                                                             items_type)
    for item_name in parse_seq(items_names):
        item = items.get(item_name)
        if item:
            return False
    return True
예제 #11
0
def assert_provider_chunks_in_file_distribution(selenium, browser_id, chunks,
                                                provider, modals):
    driver = selenium[browser_id]
    prov_rec = modals(driver).file_distribution.providers[provider]
    distribution = prov_rec.distribution
    size, _ = distribution.size
    displayed_chunks = distribution.chunks
    expected_chunks = parse_seq(chunks, pattern=r'\(.+?\)')
    assert len(displayed_chunks) == len(expected_chunks), \
        'displayed {} chunks instead of expected {}'.format(len(displayed_chunks),
                                                            len(expected_chunks))
    for chunk1, chunk2 in izip(displayed_chunks, expected_chunks):
        assert all(round(x - z) == 0 for x, z in izip(chunk1,
                                                      parse_seq(chunk2,
                                                                pattern='\d+',
                                                                default=int))), \
            'displayed chunk {} instead of expected {}'.format(chunk1, chunk2)
예제 #12
0
def _not_in_file_list(driver, items, items_type, file_list=None):
    file_list = file_list if file_list else _get_items_from_file_list(driver)
    icon = type_to_icon[items_type]
    for item_name in parse_seq(items):
        item = file_list.get(item_name)
        if item and icon in item[2].get_attribute('class'):
                return False
    return True
예제 #13
0
def click_tooltip_from_toolbar_in_data_tab_in_op(selenium, browser_id,
                                                 btn_list, op_page):
    driver = selenium[browser_id]
    toolbar = op_page(driver).data.toolbar
    err_msg = '{} should be disabled but is not'
    for btn in parse_seq(btn_list):
        item = getattr(toolbar, transform(btn))
        assert item.is_enabled() is True, err_msg.format(item)
예제 #14
0
def _not_in_file_list(driver, items, items_type, file_list=None):
    file_list = file_list if file_list else _get_items_from_file_list(driver)
    icon = type_to_icon[items_type]
    for item_name in parse_seq(items):
        item = file_list.get(item_name)
        if item and icon in item[2].get_attribute('class'):
            return False
    return True
예제 #15
0
def click_tooltip_from_toolbar_in_data_tab_in_op(selenium, browser_id,
                                                 btn_list, op_page):
    driver = selenium[browser_id]
    toolbar = op_page(driver).data.toolbar
    err_msg = '{} btn should be disabled but is not in toolbar in op data tab'
    for btn in parse_seq(btn_list):
        item = getattr(toolbar, transform(btn))
        assert item.is_enabled() is False, err_msg.format(btn)
예제 #16
0
def assert_items_absence_in_file_browser(selenium, browser_id, item_list,
                                         tmp_memory):
    driver = selenium[browser_id]
    browser = tmp_memory[browser_id]['file_browser']
    with implicit_wait(driver, 0.1, SELENIUM_IMPLICIT_WAIT):
        for item_name in parse_seq(item_list):
            with pytest.raises(RuntimeError):
                _ = browser[item_name]
예제 #17
0
def assert_no_such_supporting_providers_for_space(selenium, browser_id, space,
                                                  providers_list, oz_page):
    driver = selenium[browser_id]
    space_rec = oz_page(driver)['data space management'].spaces[space]
    providers = space_rec.providers
    err_msg = 'space named "{}" has supporting provider named "{{}}" ' \
              'while it should not have'.format(space)
    with implicit_wait(driver, 0.5, SELENIUM_IMPLICIT_WAIT):
        for provider in parse_seq(providers_list):
            assert provider not in providers, err_msg.format(provider)
예제 #18
0
def assert_no_such_supporting_providers_for_space(selenium, browser_id, space,
                                                  providers_list, oz_page):
    driver = selenium[browser_id]
    space_rec = oz_page(driver)['data space management'].spaces[space]
    providers = space_rec.providers
    err_msg = 'space named "{}" has supporting provider named "{{}}" ' \
              'while it should not have'.format(space)
    with implicit_wait(driver, 0.5, SELENIUM_IMPLICIT_WAIT):
        for provider in parse_seq(providers_list):
            assert provider not in providers, err_msg.format(provider)
def _select_items_from_sidebar_list(driver, browser_id, tmp_memory,
                                    items_names, items_type, items=None):
    items = items if items else _get_items_from_sidebar_list(driver,
                                                             items_type)
    for item_name in parse_seq(items_names):
        item = items.get(item_name)
        times = 10
        while times > 0 and item and ('active' not in item.get_attribute('class')):
            item.click()
            tmp_memory[browser_id][items_type][item_name] = item
            time.sleep(1)
            times -= 1
예제 #20
0
def create_instances_of_webdriver(selenium, driver, browser_id_list, tmpdir,
                                  tmp_memory, driver_kwargs, driver_type,
                                  firefox_logging, firefox_path, xvfb,
                                  screen_width, screen_height, displays):

    for browser_id, display in zip(parse_seq(browser_id_list), cycle(xvfb)):
        if browser_id in selenium:
            raise AttributeError('{:s} already in use'.format(browser_id))
        else:
            tmp_memory[browser_id] = {
                'shares': {},
                'spaces': {},
                'groups': {},
                'mailbox': {},
                'oz': {},
                'window': {
                    'modal': None
                }
            }

            with redirect_display(display):
                temp_dir = str(tmpdir)
                download_dir = os.path.join(temp_dir, browser_id, 'download')

                if driver_type.lower() == 'chrome':
                    option_keys = driver_kwargs['desired_capabilities'].keys()
                    option_key = [
                        x for x in option_keys if x.endswith('chromeOptions')
                    ][-1]
                    options = driver_kwargs['desired_capabilities'][option_key]

                    prefs = {"download.default_directory": download_dir}
                    options['prefs'].update(prefs)

                elif driver_type.lower() == 'firefox':
                    options = Options()
                    profile = FirefoxProfile()
                    log_path = _set_firefox_profile(profile, browser_id,
                                                    temp_dir, firefox_logging)
                    options.profile = profile
                    if firefox_path is not None:
                        options.binary = FirefoxBinary(firefox_path)
                    driver_kwargs['firefox_options'] = options

                browser = driver(driver_kwargs)
                if driver_type.lower() == 'firefox' and firefox_logging:
                    browser.get_log = _firefox_logger(log_path)
                _config_driver(browser, screen_width, screen_height)

            displays[browser_id] = display
            selenium[browser_id] = browser
예제 #21
0
def assert_supporting_providers_for_space_in_panel(selenium, browser_id, name,
                                                   providers_list, oz_page):
    driver = selenium[browser_id]
    space_rec = oz_page(driver)['data space management'].spaces[name]
    providers = space_rec.providers
    expected_providers = set(parse_seq(providers_list))
    assert providers.count() == len(expected_providers), \
        'Expected number of providers {} does not match ' \
        'actual {}'.format(len(expected_providers), providers.count())

    err_msg = 'space named "{name}" does not have supporting provider ' \
              'named "{{}}" while it should'.format(name=name)
    for provider in expected_providers:
        assert provider in providers, err_msg.format(provider)
예제 #22
0
def assert_supporting_providers_for_space_in_panel(selenium, browser_id, name,
                                                   providers_list, oz_page):
    driver = selenium[browser_id]
    space_rec = oz_page(driver)['data space management'].spaces[name]
    providers = space_rec.providers
    expected_providers = set(parse_seq(providers_list))
    assert providers.count() == len(expected_providers), \
        'Expected number of providers {} does not match ' \
        'actual {}'.format(len(expected_providers), providers.count())

    err_msg = 'space named "{name}" does not have supporting provider ' \
              'named "{{}}" while it should'.format(name=name)
    for provider in expected_providers:
        assert provider in providers, err_msg.format(provider)
예제 #23
0
def assert_presence_in_file_browser_with_order(browser_id, item_list,
                                               tmp_memory):
    browser = tmp_memory[browser_id]['file_browser']
    items = iter(parse_seq(item_list))
    curr_item = next(items)
    for item in browser:
        if item.name == curr_item:
            try:
                curr_item = next(items)
            except StopIteration:
                return

    raise RuntimeError('item(s) not in browser or not in specified order '
                       '{order} starting from {item}'.format(order=item_list,
                                                             item=curr_item))
예제 #24
0
def assert_presence_in_file_browser_with_order(browser_id, item_list,
                                               tmp_memory):
    browser = tmp_memory[browser_id]['file_browser']
    items = iter(parse_seq(item_list))
    curr_item = next(items)
    for item in browser:
        if item.name == curr_item:
            try:
                curr_item = next(items)
            except StopIteration:
                return

    raise RuntimeError('item(s) not in browser or not in specified order '
                       '{order} starting from {item}'.format(order=item_list,
                                                             item=curr_item))
예제 #25
0
def _select_items_from_file_list_upon_cond(driver, item_list, keys,
                                           cond=_is_file_selected,
                                           all_items=None):
    all_items = all_items if all_items else _get_items_from_file_list(driver)
    actions = ActionChains(driver)
    for key in keys:
        actions.key_down(key)

    for item_name in parse_seq(item_list):
        item = all_items.get(item_name)
        if cond(item):
                actions.click(item[0])

    for key in keys:
        actions.key_up(key)
    actions.perform()
예제 #26
0
def _select_items_from_file_list_upon_cond(driver,
                                           item_list,
                                           keys,
                                           cond=_is_file_selected,
                                           all_items=None):
    all_items = all_items if all_items else _get_items_from_file_list(driver)
    actions = ActionChains(driver)
    for key in keys:
        actions.key_down(key)

    for item_name in parse_seq(item_list):
        item = all_items.get(item_name)
        if cond(item):
            actions.click(item[0])

    for key in keys:
        actions.key_up(key)
    actions.perform()
예제 #27
0
파일: common.py 프로젝트: indigo-dc/onedata
def kill_providers(persistent_environment, provider_list):
    kill_cmd = ['docker', 'kill']
    inspect_cmd = ['docker', 'inspect', '-f', '{{.State.Running}}']
    for provider in parse_seq(provider_list):
        for node in persistent_environment["op_worker_nodes"]:
            if provider in node:
                container_name = node.split('@')[1]
                subprocess.call(kill_cmd + [container_name])
                for _ in xrange(10):
                    is_alive = subprocess.Popen(inspect_cmd + [container_name],
                                                stdout=subprocess.PIPE)
                    with suppress(Exception):
                        if is_alive.communicate()[0] == 'false\n':
                            break
                    time.sleep(1)
                else:
                    raise RuntimeError('container {} still alive, while it '
                                       'should not be'.format(container_name))
예제 #28
0
def kill_providers(persistent_environment, provider_list):
    kill_cmd = ['docker', 'kill']
    inspect_cmd = ['docker', 'inspect', '-f', '{{.State.Running}}']
    for provider in parse_seq(provider_list):
        for node in persistent_environment["op_worker_nodes"]:
            if provider in node:
                container_name = node.split('@')[1]
                subprocess.call(kill_cmd + [container_name])
                for _ in xrange(10):
                    is_alive = subprocess.Popen(inspect_cmd + [container_name],
                                                stdout=subprocess.PIPE)
                    with suppress(Exception):
                        if is_alive.communicate()[0] == 'false\n':
                            break
                    time.sleep(1)
                else:
                    raise RuntimeError('container {} still alive, while it '
                                       'should not be'.format(container_name))
예제 #29
0
def create_instances_of_webdriver(selenium, driver, browser_id_list, tmpdir,
                                  tmp_memory, driver_kwargs, driver_type,
                                  firefox_logging, firefox_path, xvfb,
                                  screen_width, screen_height, displays):

    for browser_id, display in zip(parse_seq(browser_id_list), cycle(xvfb)):
        if browser_id in selenium:
            raise AttributeError('{:s} already in use'.format(browser_id))
        else:
            tmp_memory[browser_id] = {'shares': {},
                                      'spaces': {},
                                      'groups': {},
                                      'mailbox': {},
                                      'oz': {},
                                      'window': {'modal': None}}

            with redirect_display(display):
                temp_dir = str(tmpdir)
                download_dir = os.path.join(temp_dir, browser_id, 'download')

                if driver_type.lower() == 'chrome':
                    options = driver_kwargs['desired_capabilities']['chromeOptions']
                    prefs = {"download.default_directory": download_dir}
                    options['prefs'].update(prefs)

                elif driver_type.lower() == 'firefox':
                    options = Options()
                    profile = FirefoxProfile()
                    log_path = _set_firefox_profile(profile, browser_id,
                                                    temp_dir, firefox_logging)
                    options.profile = profile
                    if firefox_path is not None:
                        options.binary = FirefoxBinary(firefox_path)
                    driver_kwargs['firefox_options'] = options

                browser = driver(driver_kwargs)
                if driver_type.lower() == 'firefox' and firefox_logging:
                    browser.get_log = _firefox_logger(log_path)
                _config_driver(browser, screen_width, screen_height)

            displays[browser_id] = display
            selenium[browser_id] = browser
예제 #30
0
def _wait_for_op_session_to_start(selenium, browser_id_list):
    def _check_url():
        try:
            found = parse_url(driver.current_url).group('access')
        except AttributeError:
            return False
        else:
            return 'onedata' == found.lower()

    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]

        # because of current subscription it is necessary
        # to wait under certain circumstances for things to properly work
        time.sleep(12)
        driver.get(parse_url(driver.current_url).group('base_url'))

        # TODO rm *4 when provider session starts becomes faster
        Wait(driver,
             WAIT_BACKEND * 4).until(lambda _: _check_url(),
                                     message='waiting for session to start')
예제 #31
0
def _wait_for_op_session_to_start(selenium, browser_id_list):
    def _check_url():
        try:
            found = parse_url(driver.current_url).group('access')
        except AttributeError:
            return False
        else:
            return 'onedata' == found.lower()

    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]

        # because of current subscription it is necessary
        # to wait under certain circumstances for things to properly work
        time.sleep(12)
        driver.get(parse_url(driver.current_url).group('base_url'))

        # TODO rm *4 when provider session starts becomes faster
        Wait(driver, WAIT_BACKEND*4).until(
            lambda _: _check_url(),
            message='waiting for session to start'
        )
예제 #32
0
def send_copied_item_to_other_users(browser_id, item_type, browser_list,
                                    tmp_memory, displays, clipboard):
    item = clipboard.paste(display=displays[browser_id])
    for browser in parse_seq(browser_list):
        tmp_memory[browser]['mailbox'][item_type.lower()] = item
예제 #33
0
def wt_click_on_link_with_text(selenium, browser_id_list, link_name):
    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]
        driver.find_element_by_link_text(link_name).click()
예제 #34
0
def link_with_text_present(selenium, browser_id, links_names):
    driver = selenium[browser_id]
    for name in parse_seq(links_names):
        assert driver.find_element_by_link_text(name), \
            '{} link not found'.format(name)
예제 #35
0
def g_visit_onezone(base_url, selenium, browser_id_list):
    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]
        driver.get(base_url)
예제 #36
0
def assert_items_presence_in_file_browser(browser_id, item_list, tmp_memory):
    browser = tmp_memory[browser_id]['file_browser']
    for item_name in parse_seq(item_list):
        _ = browser[item_name]
예제 #37
0
def log_to_user_in_each_browser(selenium, browser_id_list,
                                user_id_list):
    for browser_id, user_id in zip(parse_seq(browser_id_list),
                                   parse_seq(user_id_list)):
        driver = selenium[browser_id]
        driver.find_element_by_link_text(user_id).click()
예제 #38
0
파일: url.py 프로젝트: indigo-dc/onedata
def g_visit_onezone(base_url, selenium, browser_id_list):
    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]
        driver.get(base_url)
예제 #39
0
파일: common.py 프로젝트: indigo-dc/onedata
def wt_click_on_link_with_text(selenium, browser_id_list, link_name):
    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]
        driver.find_element_by_link_text(link_name).click()
예제 #40
0
def w_click_login_provider_button(selenium, browser_id_list, provider_name):
    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]
        _click_login_provider_button(driver, provider_name)
예제 #41
0
def assert_items_presence_in_file_browser(browser_id, item_list, tmp_memory):
    browser = tmp_memory[browser_id]['file_browser']
    for item_name in parse_seq(item_list):
        _ = browser[item_name]
예제 #42
0
def _deselect_files(browser, selector, item_list):
    for item_name in parse_seq(item_list):
        item = browser[item_name]
        if item.is_selected():
            selector.select(item)
예제 #43
0
def send_copied_item_to_other_users(browser_id, item_type, browser_list,
                                    tmp_memory, displays, clipboard):
    item = clipboard.paste(display=displays[browser_id])
    for browser in parse_seq(browser_list):
        tmp_memory[browser]['mailbox'][item_type.lower()] = item
예제 #44
0
def w_click_login_provider_button(selenium, browser_id_list, provider_name):
    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]
        _click_login_provider_button(driver, provider_name)
예제 #45
0
파일: common.py 프로젝트: indigo-dc/onedata
def link_with_text_present(selenium, browser_id, links_names):
    driver = selenium[browser_id]
    for name in parse_seq(links_names):
        assert driver.find_element_by_link_text(name), \
            '{} link not found'.format(name)
예제 #46
0
def log_to_user_in_each_browser(selenium, browser_id_list, user_id_list):
    for browser_id, user_id in zip(parse_seq(browser_id_list),
                                   parse_seq(user_id_list)):
        driver = selenium[browser_id]
        driver.find_element_by_link_text(user_id).click()
예제 #47
0
def _deselect_files(browser, selector, item_list):
    for item_name in parse_seq(item_list):
        item = browser[item_name]
        if item.is_selected():
            selector.select(item)
예제 #48
0
def wt_click_on_the_given_main_menu_tab(selenium, browser_id_list,
                                        main_menu_tab):
    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]
        _click_on_tab_in_main_menu_sidebar(driver, main_menu_tab)
예제 #49
0
def wt_click_on_the_given_main_menu_tab(selenium, browser_id_list,
                                        main_menu_tab):
    for browser_id in parse_seq(browser_id_list):
        driver = selenium[browser_id]
        _click_on_tab_in_main_menu_sidebar(driver, main_menu_tab)