def _rename_user(browser, old_name, new_name):
    functional.nav_to_module(browser, 'users')
    with functional.wait_for_page_update(browser):
        browser.find_link_by_href('/plinth/sys/users/' + old_name +
                                  '/edit/').first.click()
    browser.find_by_id('id_username').fill(new_name)
    functional.submit(browser)
Example #2
0
def _make_share_public(browser, name):
    """Make share publicly accessible."""
    row = _get_share(browser, name)
    with functional.wait_for_page_update(browser):
        row.find_by_css('.share-edit')[0].click()
    browser.find_by_id('id_sharing-is_public').check()
    functional.submit(browser)
Example #3
0
 def _edit_client(self, browser, key1, key2):
     """Edit a client"""
     functional.nav_to_module(browser, 'wireguard')
     browser.links.find_by_href(self._get_client_href(key1)).first.click()
     browser.find_by_css('.btn-edit-client').first.click()
     browser.find_by_id('id_public_key').fill(key2)
     functional.submit(browser, form_class='form-edit-client')
Example #4
0
def _visit_site(browser):
    """Visit WordPress and run the first setup wizard if needed."""
    _load_site(browser)
    if '/install.php' in browser.url:
        browser.fill('weblog_title', 'Test Blog')
        browser.fill('user_name', functional.config['DEFAULT']['username'])
        # browser.fill() once does not work for some reason for password field
        browser.fill('admin_password',
                     functional.config['DEFAULT']['password'])
        browser.fill('admin_password',
                     functional.config['DEFAULT']['password'])
        browser.check('pw_weak')
        browser.fill('admin_email', '*****@*****.**')
        functional.submit(browser)

        if not browser.find_by_css('.install-success'):
            raise Exception('WordPress installation failed')

        functional.visit(browser, '/wordpress/wp-admin/')

    if not browser.find_by_id('wpadminbar'):
        functional.visit(browser, '/wordpress/wp-login.php')
        browser.fill('log', functional.config['DEFAULT']['username'])
        browser.fill('pwd', functional.config['DEFAULT']['password'])
        functional.submit(browser)
def _set_language(browser, language_code):
    username = functional.config['DEFAULT']['username']
    functional.visit(browser, '/plinth/sys/users/{}/edit/'.format(username))
    browser.find_by_xpath('//select[@id="id_language"]//option[@value="' +
                          language_code + '"]').first.click()
    browser.find_by_id('id_confirm_password').fill(_admin_password)
    functional.submit(browser)
Example #6
0
def _add_password(browser):
    functional.visit(browser, '/plinth/apps/bepasty/add')
    for permission in ['read', 'create', 'list', 'delete', 'admin']:
        browser.find_by_css('#id_bepasty-permissions input[value="{}"]'.format(
            permission)).check()
    browser.fill('bepasty-comment', 'bepasty functional test')
    functional.submit(browser, form_class='form-add')
Example #7
0
def _delete_image(browser, username, password, image):
    """Delete an image from MediaWiki."""
    _login(browser, username, password)
    path = f'/mediawiki/index.php?title=File:{image}&action=delete'
    functional.visit(browser, path)
    delete_button = browser.find_by_id('mw-filedelete-submit')
    functional.submit(browser, element=delete_button)
Example #8
0
def _can_login(browser, password):
    _logout(browser)
    browser.fill('token', password)
    login = browser.find_by_xpath('//form//button')
    functional.submit(browser, login, '/bepasty')

    return bool(browser.find_by_value('Logout'))
Example #9
0
def _set_default_branch(browser, repo, branch):
    """Set default branch of the repository."""
    functional.nav_to_module(browser, 'gitweb')
    browser.links.find_by_href(
        '/plinth/apps/gitweb/{}/edit/'.format(repo)).first.click()
    browser.find_by_id('id_gitweb-default_branch').select(branch)
    functional.submit(browser)
Example #10
0
def _set_home_page(browser, home_page):
    if 'plinth' not in home_page and 'apache' not in home_page:
        home_page = 'shortcut-' + home_page

    functional.nav_to_module(browser, 'config')
    drop_down = browser.find_by_id('id_homepage')
    drop_down.select(home_page)
    functional.submit(browser)
def _create_user(browser, name, password):
    functional.nav_to_module(browser, 'users')
    with functional.wait_for_page_update(browser):
        browser.find_link_by_href('/plinth/sys/users/create/').first.click()
    browser.find_by_id('id_username').fill(name)
    browser.find_by_id('id_password1').fill(password)
    browser.find_by_id('id_password2').fill(password)
    functional.submit(browser)
def _delete_user(browser, name):
    functional.nav_to_module(browser, 'users')
    delete_link = browser.find_link_by_href('/plinth/sys/users/' + name +
                                            '/delete/')
    if delete_link:
        with functional.wait_for_page_update(browser):
            delete_link.first.click()
        functional.submit(browser)
Example #13
0
def _add_share(browser, name, path, group):
    """Add a share in sharing app."""
    functional.visit(browser, '/plinth/apps/sharing/add/')
    browser.fill('sharing-name', name)
    browser.fill('sharing-path', path)
    browser.find_by_css(
        '#id_sharing-groups input[value="{}"]'.format(group)).check()
    functional.submit(browser)
Example #14
0
def _remove_all_passwords(browser):
    functional.nav_to_module(browser, 'bepasty')
    while True:
        remove_button = browser.find_by_css('.password-remove')
        if remove_button:
            functional.submit(browser, remove_button)
        else:
            break
def _delete_repo(browser, repo, ignore_missing=False):
    """Delete repository."""
    functional.nav_to_module(browser, 'gitweb')
    delete_link = browser.find_link_by_href(
        '/plinth/apps/gitweb/{}/delete/'.format(repo))
    if delete_link or not ignore_missing:
        delete_link.first.click()
        functional.submit(browser)
Example #16
0
def _set_home_page(browser, home_page):
    if 'plinth' not in home_page and 'apache' not in home_page:
        home_page = 'shortcut-' + home_page

    functional.nav_to_module(browser, 'config')
    drop_down = browser.find_by_id('id_homepage')
    drop_down.select(home_page)
    update_setup = browser.find_by_css('.btn-primary')
    functional.submit(browser, element=update_setup)
Example #17
0
def _enable_public_mode(browser, should_enable):
    """Enable/disable the public mode."""
    checkbox = browser.find_by_id('id_is_public')
    if should_enable:
        checkbox.check()
    else:
        checkbox.uncheck()

    functional.submit(browser, form_class='form-configuration')
def _configure(browser, host, port, kite_name, kite_secret):
    """Configure pagekite basic parameters."""
    functional.nav_to_module(browser, 'pagekite')
    # time.sleep(0.250)  # Wait for 200ms show animation to complete
    browser.fill('pagekite-server_domain', host)
    browser.fill('pagekite-server_port', str(port))
    browser.fill('pagekite-kite_name', kite_name)
    browser.fill('pagekite-kite_secret', kite_secret)
    functional.submit(browser, form_class='form-configuration')
def _add_introducer(browser, domain):
    """Add a new introducer into tahoe-lafs."""
    functional.nav_to_module(browser, 'tahoe')

    furl = 'pb://ewe4zdz6kxn7xhuvc7izj2da2gpbgeir@tcp:{}:3456/' \
           'fko4ivfwgqvybppwar3uehkx6spaaou7'.format(domain)
    browser.fill('pet_name', 'testintroducer')
    browser.fill('furl', furl)
    functional.submit(browser, form_class='form-add-introducer')
Example #20
0
def openvpn_setup(session_browser):
    """Setup the OpenVPN application after installation."""
    functional.nav_to_module(session_browser, 'openvpn')
    setup_form = session_browser.find_by_css('.form-setup')
    if not setup_form:
        return

    functional.submit(session_browser, form_class='form-setup')
    functional.wait_for_config_update(session_browser, 'openvpn')
def _enable_restricted_logins(browser, should_enable):
    """Enable/disable restricted logins in security module."""
    functional.nav_to_module(browser, 'security')
    if should_enable:
        browser.check('security-restricted_access')
    else:
        browser.uncheck('security-restricted_access')

    functional.submit(browser)
Example #22
0
def _enable_dnssec(browser, enable):
    """Enable/disable DNSSEC in bind configuration."""
    functional.nav_to_module(browser, 'bind')
    if enable:
        browser.check('enable_dnssec')
    else:
        browser.uncheck('enable_dnssec')

    functional.submit(browser, form_class='form-configuration')
Example #23
0
def _upload_file(browser, file_path, password):
    """Upload a local file from disk to coquelicot."""
    _verify_upload_password(browser, password)
    browser.attach_file('file', file_path)
    functional.submit(browser)
    assert functional.eventually(browser.is_element_present_by_css,
                                 args=['#content .url'])
    url_textarea = browser.find_by_css('#content .url textarea').first
    return url_textarea.value
Example #24
0
def _add_library(browser, name):
    """Add a new library."""
    if _is_library_available(browser, name):
        return

    browser.links.find_by_href(
        '/plinth/apps/calibre/library/create/').first.click()
    browser.find_by_id('id_calibre-name').fill(name)
    functional.submit(browser)
Example #25
0
def _set_repo_access(browser, repo, access):
    """Set repository as public or private."""
    functional.nav_to_module(browser, 'gitweb')
    browser.links.find_by_href(
        '/plinth/apps/gitweb/{}/edit/'.format(repo)).first.click()
    if access == 'private':
        browser.find_by_id('id_gitweb-is_private').check()
    else:
        browser.find_by_id('id_gitweb-is_private').uncheck()
    functional.submit(browser)
Example #26
0
def _delete_all(browser):
    functional.visit(browser, '/plinth/sys/snapshot/manage/')
    delete_button = browser.find_by_name('delete_selected').first
    if not delete_button['disabled']:
        browser.find_by_id('select-all').check()
        functional.submit(browser, delete_button)

        confirm_button = browser.find_by_name('delete_confirm')
        if confirm_button:  # Only if redirected to confirm page
            functional.submit(browser, confirm_button)
Example #27
0
def _configure_domain(browser, domain):
    functional.nav_to_module(browser, 'dynamicdns')
    browser.find_link_by_href(
        '/plinth/sys/dynamicdns/configure/').first.click()
    browser.find_by_id('id_dynamicdns_domain').fill(domain)
    functional.submit(browser)

    # After a domain name change, Let's Encrypt will restart the web
    # server and could cause a connection failure.
    time.sleep(1)
    functional.eventually(functional.nav_to_module, [browser, 'dynamicdns'])
def _upload_image(browser, username, password, image):
    """Upload an image to MediaWiki. Idempotent."""
    functional.visit(browser, '/mediawiki')
    _login(browser, username, password)

    # Upload file
    functional.visit(browser, '/mediawiki/Special:Upload')
    file_path = pathlib.Path(__file__).parent
    file_path /= '../../../../static/themes/default/img/' + image
    browser.attach_file('wpUploadFile', str(file_path.resolve()))
    functional.submit(browser, element=browser.find_by_name('wpUpload')[0])
Example #29
0
def _upload_and_restore(browser, app_name, downloaded_file_path):
    functional.nav_to_module(browser, 'backups')
    browser.find_link_by_href('/plinth/sys/backups/upload/').first.click()
    fileinput = browser.driver.find_element_by_id('id_backups-file')
    fileinput.send_keys(downloaded_file_path)
    # submit upload form
    functional.submit(browser)
    # submit restore form
    with functional.wait_for_page_update(browser,
                                         expected_url='/plinth/sys/backups/'):
        functional.submit(browser)
Example #30
0
def _edit_share(browser, old_name, new_name, path, group):
    """Edit a share in sharing app."""
    row = _get_share(browser, old_name)
    with functional.wait_for_page_update(browser):
        row.find_by_css('.share-edit')[0].click()
    browser.fill('sharing-name', new_name)
    browser.fill('sharing-path', path)
    browser.find_by_css('#id_sharing-groups input').uncheck()
    browser.find_by_css(
        '#id_sharing-groups input[value="{}"]'.format(group)).check()
    functional.submit(browser)