diff --git a/functional_tests/features/mediawiki.feature b/functional_tests/features/mediawiki.feature index 6c39cccd7..0f0bbb113 100644 --- a/functional_tests/features/mediawiki.feature +++ b/functional_tests/features/mediawiki.feature @@ -15,7 +15,7 @@ # along with this program. If not, see . # -@apps @mediawiki +@apps @mediawiki @backups Feature: MediaWiki Wiki Engine Manage wikis, multimedia and more. @@ -82,3 +82,11 @@ Scenario: Upload SVG image Given the mediawiki application is enabled When I upload an image named FreedomBox-logo-grayscale.svg to mediawiki with credentials admin and whatever123 Then there should be FreedomBox-logo-grayscale.svg image + +Scenario: Backup and restore mediawiki + Given the mediawiki application is enabled + When I create a backup of the mediawiki app data + And I delete the mediawiki main page + And I export the mediawiki app data backup + And I restore the mediawiki app data backup + Then the mediawiki main page should be restored diff --git a/functional_tests/step_definitions/site.py b/functional_tests/step_definitions/site.py index 6e2cbdd88..dee199bea 100644 --- a/functional_tests/step_definitions/site.py +++ b/functional_tests/step_definitions/site.py @@ -15,7 +15,7 @@ # along with this program. If not, see . # -from pytest_bdd import parsers, then, when +from pytest_bdd import given, parsers, then, when from support import site @@ -86,3 +86,13 @@ def mediawiki_does_not_allow__account_creation_anonymous_reads_edits(browser): 'with credentials {username:w} and {password:w}')) def login_to_mediawiki_with_credentials(browser, username, password): site.login_to_mediawiki_with_credentials(browser, username, password) + + +@when('I delete the mediawiki main page') +def mediawiki_delete_main_page(browser): + site.mediawiki_delete_main_page(browser) + + +@then('the mediawiki main page should be restored') +def mediawiki_verify_text(browser): + assert site.mediawiki_has_main_page(browser) diff --git a/functional_tests/support/site.py b/functional_tests/support/site.py index 8b6a7e40e..022efa9db 100644 --- a/functional_tests/support/site.py +++ b/functional_tests/support/site.py @@ -24,6 +24,7 @@ from selenium.webdriver.common.keys import Keys from support import config, interface from support.service import eventually, wait_for_page_update + # unlisted sites just use '/' + site_name as url site_url = { 'wiki': '/ikiwiki', @@ -123,3 +124,20 @@ def get_uploaded_image_in_mediawiki(browser, image): browser.visit(config['DEFAULT']['url'] + '/mediawiki/Special:ListFiles') elements = browser.find_link_by_partial_href(image) return elements[0].value + + +def mediawiki_delete_main_page(browser): + """Delete the mediawiki main page.""" + _login_to_mediawiki(browser, 'admin', 'whatever123') + browser.visit( + '{}/mediawiki/index.php?title=Main_Page&action=delete'.format( + interface.default_url)) + with wait_for_page_update(browser): + browser.find_by_id('wpConfirmB').first.click() + + +def mediawiki_has_main_page(browser): + """Check if mediawiki main page exists.""" + browser.visit('{}/mediawiki/Main_Page'.format(interface.default_url)) + content = browser.find_by_id('mw-content-text').first + return 'This page has been deleted.' not in content.text diff --git a/functional_tests/support/system.py b/functional_tests/support/system.py index f07bdb1af..c22a8de1e 100644 --- a/functional_tests/support/system.py +++ b/functional_tests/support/system.py @@ -17,7 +17,7 @@ from support import config -from .interface import nav_to_module, submit +from .interface import default_url, nav_to_module, submit config_page_title_language_map = { 'da': 'Generel Konfiguration', @@ -150,6 +150,7 @@ def dynamicdns_change_config(browser): def backup_create(browser, app_name): + browser.visit(default_url) nav_to_module(browser, 'backups') delete = browser.find_link_by_href( '/plinth/sys/backups/delete/_functional_test_' + app_name + '/') @@ -163,6 +164,7 @@ def backup_create(browser, app_name): 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_' @@ -172,6 +174,7 @@ def backup_export(browser, app_name): 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_'