Esempio n. 1
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')
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)
Esempio n. 3
0
def _backup_schedule_get(browser):
    """Return the current schedule set for the root repository."""
    functional.nav_to_module(browser, 'backups')
    browser.find_link_by_href(
        '/plinth/sys/backups/root/schedule/').first.click()
    without_apps = []
    elements = browser.find_by_name('backups_schedule-selected_apps')
    for element in elements:
        if not element.checked:
            without_apps.append(element.value)

    return {
        'enable':
        browser.find_by_name('backups_schedule-enabled').checked,
        'daily':
        int(browser.find_by_name('backups_schedule-daily_to_keep').value),
        'weekly':
        int(browser.find_by_name('backups_schedule-weekly_to_keep').value),
        'monthly':
        int(browser.find_by_name('backups_schedule-monthly_to_keep').value),
        'run_at':
        int(browser.find_by_name('backups_schedule-run_at_hour').value),
        'without_apps':
        without_apps
    }
def _get_configuration(browser):
    """Return pagekite basic parameters."""
    functional.nav_to_module(browser, 'pagekite')
    return (browser.find_by_name('pagekite-server_domain').value,
            int(browser.find_by_name('pagekite-server_port').value),
            browser.find_by_name('pagekite-kite_name').value,
            browser.find_by_name('pagekite-kite_secret').value)
def _get_relay_ports(browser):
    """Return the list of ports shown in the relay table."""
    functional.nav_to_module(browser, 'tor')
    return [
        port_name.text
        for port_name in browser.find_by_css('.tor-relay-port-name')
    ]
Esempio n. 6
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)
Esempio n. 7
0
def test_list_disks(session_browser):
    """Test that root disk is shown on storage page."""
    if functional.running_inside_container():
        pytest.skip('Storage doesn\'t work inside a container')
    else:
        functional.nav_to_module(session_browser, 'storage')
        assert _is_root_disk_shown(session_browser)
Esempio n. 8
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)
Esempio n. 10
0
def _publish_key(browser, key_type, domain):
    """Publish a key of specified type for given domain from monkeysphere."""
    functional.nav_to_module(browser, 'monkeysphere')
    key, _ = _find_domain(browser, key_type, 'imported', domain)
    with functional.wait_for_page_update(browser):
        key.find_by_css('.button-publish').click()

    functional.wait_for_config_update(browser, 'monkeysphere')
def _assert_feature_enabled(browser, feature, enabled):
    """Assert whether Tor relay is enabled or disabled."""
    if not isinstance(enabled, bool):
        enabled = enabled in ('enable', 'enabled')

    element_name = _TOR_FEATURE_TO_ELEMENT[feature]
    functional.nav_to_module(browser, 'tor')
    assert browser.find_by_name(element_name).first.checked == enabled
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)
Esempio n. 13
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
Esempio n. 14
0
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)
Esempio n. 15
0
    def _assert_client_details(self, browser, key):
        """Check that the client's details are correct."""
        def get_value(key):
            return browser.find_by_css(f'tr.{key} > td').first.text

        functional.nav_to_module(browser, 'wireguard')
        href = browser.links.find_by_href(self._get_client_href(key))
        href.first.click()
        assert get_value('client-public-key') == key
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')
Esempio n. 17
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)
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')
Esempio n. 19
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 _get_introducer(browser, domain, introducer_type):
    """Return an introducer element with a given type from tahoe-lafs."""
    functional.nav_to_module(browser, 'tahoe')
    css_class = '.{}-introducers .introducer-furl'.format(introducer_type)
    for furl in browser.find_by_css(css_class):
        if domain in furl.text:
            return furl.parent

    return None
Esempio n. 21
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')
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)
Esempio n. 23
0
def _set_all_repos_private(browser):
    """Set all repositories private"""
    functional.nav_to_module(browser, 'gitweb')
    public_repos = []
    for element in browser.find_by_css('#gitweb-repo-list .list-group-item'):
        if not element.find_by_css('.repo-private-icon'):
            repo = element.find_by_css('.repo-label').first.text
            public_repos.append(repo)
    for repo in public_repos:
        _set_repo_access(browser, repo, 'private')
Esempio n. 24
0
def _assert_has_config(browser, config):
    functional.nav_to_module(browser, 'dynamicdns')
    for key, value in config.items():
        if key == 'password':
            continue

        if isinstance(value, bool):
            assert browser.find_by_id(f'id_{key}').checked == value
        else:
            assert value == browser.find_by_id(f'id_{key}').value
Esempio n. 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)
Esempio n. 26
0
 def _add_server(browser, config):
     """Add a server."""
     functional.nav_to_module(browser, 'wireguard')
     browser.find_by_css('.btn-add-server').first.click()
     browser.find_by_id('id_peer_endpoint').fill(config['peer_endpoint'])
     browser.find_by_id('id_peer_public_key').fill(
         config['peer_public_key'])
     browser.find_by_id('id_ip_address').fill(config['ip_address'])
     browser.find_by_id('id_private_key').fill(config['private_key'])
     browser.find_by_id('id_preshared_key').fill(config['preshared_key'])
     functional.submit(browser, form_class='form-add-server')
Esempio n. 27
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)
Esempio n. 28
0
def _get_configuration(browser):
    """Return the current configuration for snapshots."""
    functional.nav_to_module(browser, 'snapshot')
    return (int(float(browser.find_by_name('free_space').value) * 100),
            browser.find_by_name('enable_timeline_snapshots').value == 'yes',
            browser.find_by_name('enable_software_snapshots').value == 'yes',
            int(browser.find_by_name('hourly_limit').value),
            int(browser.find_by_name('daily_limit').value),
            int(browser.find_by_name('weekly_limit').value),
            int(browser.find_by_name('monthly_limit').value),
            int(browser.find_by_name('yearly_limit').value))
Esempio n. 29
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'])
Esempio n. 30
0
def _create_wiki_if_needed(browser):
    """Create wiki if it does not exist."""
    functional.nav_to_module(browser, 'ikiwiki')
    wiki = browser.find_link_by_href('/ikiwiki/wiki')
    if not wiki:
        browser.find_link_by_href('/plinth/apps/ikiwiki/create/').first.click()
        browser.find_by_id('id_ikiwiki-name').fill('wiki')
        browser.find_by_id('id_ikiwiki-admin_name').fill(
            functional.config['DEFAULT']['username'])
        browser.find_by_id('id_ikiwiki-admin_password').fill(
            functional.config['DEFAULT']['password'])
        functional.submit(browser)