# # This file is part of FreedomBox. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # from support import application, config from .interface import default_url, nav_to_module, submit config_page_title_language_map = { 'da': 'Generel Konfiguration', 'de': 'Allgemeine Konfiguration', 'es': 'Configuración general', 'fr': 'Configuration générale', 'nb': 'Generelt oppsett', 'nl': 'Algemene Instellingen', 'pl': 'Ustawienia główne', 'pt': 'Configuração Geral', 'ru': 'Общие настройки', 'sv': 'Allmän Konfiguration', 'te': 'సాధారణ ఆకృతీకరణ', 'tr': 'Genel Yapılandırma', 'zh-hans': '常规配置', } def get_hostname(browser): nav_to_module(browser, 'config') return browser.find_by_id('id_configuration-hostname').value def set_hostname(browser, hostname): nav_to_module(browser, 'config') browser.find_by_id('id_configuration-hostname').fill(hostname) submit(browser) def get_domain_name(browser): nav_to_module(browser, 'config') return browser.find_by_id('id_configuration-domainname').value def set_domain_name(browser, domain_name): nav_to_module(browser, 'config') browser.find_by_id('id_configuration-domainname').fill(domain_name) submit(browser) def set_default_app(browser, app_name): nav_to_module(browser, 'config') drop_down = browser.find_by_id('id_configuration-defaultapp') drop_down.select(app_name) submit(browser) def set_language(browser, language_code): username = config['DEFAULT']['username'] browser.visit(config['DEFAULT']['url'] + '/plinth/sys/users/{}/edit/'.format(username)) browser.find_by_xpath('//select[@id="id_language"]//option[@value="' + language_code + '"]').first.click() submit(browser) def check_language(browser, language_code): nav_to_module(browser, 'config') return browser.title == config_page_title_language_map[language_code] def delete_all_snapshots(browser): browser.visit(config['DEFAULT']['url'] + '/plinth/sys/snapshot/all/delete') submit(browser) def create_snapshot(browser): browser.visit(config['DEFAULT']['url'] + '/plinth/sys/snapshot/manage/') submit(browser) # Click on 'Create Snapshot' def get_snapshot_count(browser): browser.visit(config['DEFAULT']['url'] + '/plinth/sys/snapshot/manage/') # Subtract 1 for table header return len(browser.find_by_xpath('//tr')) - 1 def check_home_page_redirect(browser, app_name): browser.visit(config['DEFAULT']['url']) return browser.find_by_xpath( "//a[contains(@href, '/plinth/') and @title='FreedomBox']") def dynamicdns_configure(browser): nav_to_module(browser, 'dynamicdns') browser.find_link_by_href( '/plinth/sys/dynamicdns/configure/').first.click() browser.find_by_id('id_enabled').check() browser.find_by_id('id_service_type').select('GnuDIP') browser.find_by_id('id_dynamicdns_server').fill('example.com') browser.find_by_id('id_dynamicdns_domain').fill('freedombox.example.com') browser.find_by_id('id_dynamicdns_user').fill('tester') browser.find_by_id('id_dynamicdns_secret').fill('testingtesting') browser.find_by_id('id_dynamicdns_ipurl').fill( 'http://myip.datasystems24.de') submit(browser) def dynamicdns_has_original_config(browser): nav_to_module(browser, 'dynamicdns') browser.find_link_by_href( '/plinth/sys/dynamicdns/configure/').first.click() enabled = browser.find_by_id('id_enabled').value service_type = browser.find_by_id('id_service_type').value server = browser.find_by_id('id_dynamicdns_server').value domain = browser.find_by_id('id_dynamicdns_domain').value user = browser.find_by_id('id_dynamicdns_user').value ipurl = browser.find_by_id('id_dynamicdns_ipurl').value if enabled and service_type == 'GnuDIP' and server == 'example.com' \ and domain == 'freedombox.example.com' and user == 'tester' \ and ipurl == 'http://myip.datasystems24.de': return True else: return False def dynamicdns_change_config(browser): nav_to_module(browser, 'dynamicdns') browser.find_link_by_href( '/plinth/sys/dynamicdns/configure/').first.click() browser.find_by_id('id_enabled').check() browser.find_by_id('id_service_type').select('GnuDIP') browser.find_by_id('id_dynamicdns_server').fill('2.example.com') browser.find_by_id('id_dynamicdns_domain').fill('freedombox2.example.com') browser.find_by_id('id_dynamicdns_user').fill('tester2') browser.find_by_id('id_dynamicdns_secret').fill('testingtesting2') browser.find_by_id('id_dynamicdns_ipurl').fill( 'http://myip2.datasystems24.de') submit(browser) def backup_create(browser, app_name): browser.visit(default_url) application.install(browser, 'backups') delete = browser.find_link_by_href( '/plinth/sys/backups/delete/_functional_test_' + app_name + '/') if delete: delete.first.click() submit(browser) browser.find_link_by_href('/plinth/sys/backups/create/').first.click() browser.find_by_id('id_backups-name').fill('_functional_test_' + app_name) for app in browser.find_by_css('input[type=checkbox]'): app.uncheck() browser.find_by_value(app_name).first.check() submit(browser) def backup_export(browser, app_name): browser.visit(default_url) nav_to_module(browser, 'backups') browser.find_link_by_href('/plinth/sys/backups/export/_functional_test_' + app_name + '/').first.click() browser.find_by_id('id_backups-disk_0').first.check() submit(browser) def backup_restore(browser, app_name): browser.visit(default_url) nav_to_module(browser, 'backups') browser.find_link_by_href( '/plinth/sys/backups/restore/Root%2520Filesystem/_functional_test_' + app_name + '.tar.gz/').first.click() submit(browser) def pagekite_enable(browser, should_enable): """Enable/disable pagekite service.""" nav_to_module(browser, 'pagekite') browser.find_link_by_href('/plinth/sys/pagekite/configure/').first.click() checkbox = browser.find_by_id('id_pagekite-enabled').first if checkbox.checked == should_enable: return if should_enable: checkbox.check() else: checkbox.uncheck() submit(browser) def pagekite_is_enabled(browser): """Return whether pagekite is enabled.""" nav_to_module(browser, 'pagekite') browser.find_link_by_href('/plinth/sys/pagekite/configure/').first.click() return browser.find_by_id('id_pagekite-enabled').checked def pagekite_configure(browser, host, port, kite_name, kite_secret): """Configure pagekite basic parameters.""" nav_to_module(browser, 'pagekite') browser.find_link_by_href('/plinth/sys/pagekite/configure/').first.click() #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) submit(browser) def pagekite_get_configuration(browser): """Return pagekite basic parameters.""" nav_to_module(browser, 'pagekite') browser.find_link_by_href('/plinth/sys/pagekite/configure/').first.click() 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 bind_set_forwarders(browser, forwarders): """Set the forwarders list (space separated) in bind configuration.""" nav_to_module(browser, 'bind') browser.fill('forwarders', forwarders) submit(browser, form_class='form-configuration') def bind_get_forwarders(browser): """Return the forwarders list (space separated) in bind configuration.""" nav_to_module(browser, 'bind') return browser.find_by_name('forwarders').first.value def bind_enable_dnssec(browser, enable): """Enable/disable DNSSEC in bind configuration.""" nav_to_module(browser, 'bind') if enable: browser.check('enable_dnssec') else: browser.uncheck('enable_dnssec') submit(browser, form_class='form-configuration') def bind_get_dnssec(browser): """Return whether DNSSEC is enabled/disabled in bind configuration.""" nav_to_module(browser, 'bind') return browser.find_by_name('enable_dnssec').first.checked