From 78b669d4510ad03b5bf7663d9c37b99f6828ced4 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 22 Jan 2022 09:43:24 -0500 Subject: [PATCH] shaarli: Test adding a bookmark Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/shaarli/tests/test_functional.py | 63 +++++++++++++++++-- pyproject.toml | 1 + 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/plinth/modules/shaarli/tests/test_functional.py b/plinth/modules/shaarli/tests/test_functional.py index 4dc86c3b4..bdf14ec2b 100644 --- a/plinth/modules/shaarli/tests/test_functional.py +++ b/plinth/modules/shaarli/tests/test_functional.py @@ -4,15 +4,70 @@ Functional, browser based tests for shaarli app. """ import pytest +import time -from plinth.tests.functional import BaseAppTests +from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.shaarli] -class TestShaarliApp(BaseAppTests): +class TestShaarliApp(functional.BaseAppTests): app_name = 'shaarli' has_service = False has_web = True - # TODO: Complete Shaarli setup. - # TODO: Add, edit, remove bookmark. + + @pytest.fixture(scope='class', autouse=True) + def fixture_setup(self, session_browser): + """Setup the app.""" + functional.login(session_browser) + functional.install(session_browser, self.app_name) + functional.app_enable(session_browser, self.app_name) + self._shaarli_is_setup(session_browser) + + def _shaarli_is_setup(self, session_browser): + """Finish shaarli installation by creating user.""" + functional.access_url(session_browser, self.app_name) + if not session_browser.url.endswith('/shaarli/install'): + # Setup has already been completed. + return + + username_field = session_browser.find_by_id('username') + username_field.fill(functional.config['DEFAULT']['username']) + + password_field = session_browser.find_by_id('password') + password_field.fill(functional.config['DEFAULT']['password']) + + functional.submit(session_browser) + + def _shaarli_login(self, session_browser): + """Login to shaarli.""" + functional.access_url(session_browser, 'shaarli/login') + + login_form = session_browser.find_by_id('login-form') + if not login_form: + return + + login_field = login_form.find_by_name('login') + login_field.fill(functional.config['DEFAULT']['username']) + + password_field = login_form.find_by_name('password') + password_field.fill(functional.config['DEFAULT']['password']) + + login_form.find_by_css('input[type=submit]').click() + + def test_add_bookmark(self, session_browser): + """Test adding a bookmark.""" + self._shaarli_login(session_browser) + functional.access_url(session_browser, 'shaarli/admin/add-shaare') + + addlink_form = session_browser.find_by_id('addlink-form') + addlink_form.find_by_id('shaare').fill('https://freedombox.org/') + addlink_form.find_by_css('input[type=submit]').click() + + time.sleep(2) + session_browser.find_by_id('button-save-edit').click() + + links = session_browser.links.find_by_href('https://freedombox.org/') + assert len(links) > 0 + + # TODO: Test deleting bookmarks. diff --git a/pyproject.toml b/pyproject.toml index 0d4e658b9..ab06abf5f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,6 +51,7 @@ markers = [ "samba", "searx", "security", + "shaarli", "shadowsocks", "sharing", "snapshot",