mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-02-04 08:13:38 +00:00
Signed-off-by: James Valleroy <jvalleroy@mailbox.org> Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
101 lines
3.5 KiB
Python
101 lines
3.5 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""
|
|
Functional, browser based tests for monkeysphere app.
|
|
"""
|
|
|
|
import pytest
|
|
from plinth.tests import functional
|
|
|
|
pytestmark = [pytest.mark.system, pytest.mark.monkeysphere]
|
|
|
|
|
|
@pytest.fixture(scope='module', autouse=True)
|
|
def fixture_background(session_browser):
|
|
"""Login and install the app."""
|
|
functional.login(session_browser)
|
|
functional.set_advanced_mode(session_browser, True)
|
|
functional.install(session_browser, 'monkeysphere')
|
|
functional.set_domain_name(session_browser, 'mydomain.example')
|
|
yield
|
|
|
|
|
|
def test_import_ssh_keys(session_browser):
|
|
"""Test importing SSH keys."""
|
|
_import_key(session_browser, 'ssh', 'mydomain.example')
|
|
_assert_imported_key(session_browser, 'ssh', 'mydomain.example')
|
|
|
|
|
|
def test_import_https_keys(session_browser):
|
|
"""Test importing HTTPS keys."""
|
|
_import_key(session_browser, 'https', 'mydomain.example')
|
|
_assert_imported_key(session_browser, 'https', 'mydomain.example')
|
|
|
|
|
|
def test_publish_ssh_keys(session_browser):
|
|
"""Test publishing SSH keys."""
|
|
_import_key(session_browser, 'ssh', 'mydomain.example')
|
|
_publish_key(session_browser, 'ssh', 'mydomain.example')
|
|
|
|
|
|
def test_publish_https_keys(session_browser):
|
|
"""Test publishing HTTPS keys."""
|
|
_import_key(session_browser, 'https', 'mydomain.example')
|
|
_publish_key(session_browser, 'https', 'mydomain.example')
|
|
|
|
|
|
def test_backup_restore(session_browser):
|
|
"""Test backup and restore of keys"""
|
|
_import_key(session_browser, 'ssh', 'mydomain.example')
|
|
_import_key(session_browser, 'https', 'mydomain.example')
|
|
functional.backup_create(session_browser, 'monkeysphere',
|
|
'test_monkeysphere')
|
|
|
|
functional.backup_restore(session_browser, 'monkeysphere',
|
|
'test_monkeysphere')
|
|
_assert_imported_key(session_browser, 'ssh', 'mydomain.example')
|
|
_assert_imported_key(session_browser, 'https', 'mydomain.example')
|
|
|
|
|
|
def _find_domain(browser, key_type, domain_type, domain):
|
|
"""Iterate every domain of a given type which given key type."""
|
|
keys_of_type = browser.find_by_css(
|
|
'.monkeysphere-service-{}'.format(key_type))
|
|
for key_of_type in keys_of_type:
|
|
search_domains = key_of_type.find_by_css(
|
|
'.monkeysphere-{}-domain'.format(domain_type))
|
|
for search_domain in search_domains:
|
|
if search_domain.text == domain:
|
|
return key_of_type, search_domain
|
|
|
|
raise IndexError('Domain not found')
|
|
|
|
|
|
def _import_key(browser, key_type, domain):
|
|
"""Import a key of specified type for given domain into monkeysphere."""
|
|
try:
|
|
_assert_imported_key(browser, key_type, domain)
|
|
except IndexError:
|
|
pass
|
|
else:
|
|
return
|
|
|
|
key, _ = _find_domain(browser, key_type, 'importable', domain)
|
|
with functional.wait_for_page_update(browser):
|
|
key.find_by_css('.button-import').click()
|
|
|
|
|
|
def _assert_imported_key(browser, key_type, domain):
|
|
"""Assert that a key of specified type for given domain was imported.."""
|
|
functional.nav_to_module(browser, 'monkeysphere')
|
|
return _find_domain(browser, key_type, 'imported', domain)
|
|
|
|
|
|
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')
|