diff --git a/actions/mediawiki b/actions/mediawiki index 6ed70b321..f40eb5f7a 100755 --- a/actions/mediawiki +++ b/actions/mediawiki @@ -51,8 +51,8 @@ def parse_arguments(): help_private_mode = 'Enable/Disable/Status private mode.' private_mode = subparsers.add_parser('private-mode', help=help_private_mode) - private_mode.add_argument('command', - choices=('enable', 'disable', 'status'), + private_mode.add_argument('command', choices=('enable', 'disable', + 'status'), help=help_private_mode) change_password = subparsers.add_parser('change-password', @@ -122,16 +122,19 @@ def _change_logo(): def _enable_file_uploads(): """Enable file uploads in mediawiki""" + conf_line = '$wgEnableUploads = true;\n' + conf_updated = False with open(CONF_FILE, 'r') as conf_file: lines = conf_file.readlines() with open(CONF_FILE, 'w') as conf_file: for line in lines: - if line.startswith("$wgEnableUploads"): - words = line.split() - words[-1] = 'true;' - conf_file.write(" ".join(words) + '\n') + if "$wgEnableUploads" in line: + conf_file.write(conf_line) + conf_updated = True else: conf_file.write(line) + if not conf_updated: + conf_file.write(conf_line) def subcommand_change_password(arguments): diff --git a/functional_tests/features/wiki_engine.feature b/functional_tests/features/wiki_engine.feature index a3a29a580..7032f38df 100644 --- a/functional_tests/features/wiki_engine.feature +++ b/functional_tests/features/wiki_engine.feature @@ -66,3 +66,8 @@ Scenario: Enabling public registrations disables private mode When I enable mediawiki private mode And I enable mediawiki public registrations Then the mediawiki site should allow creating accounts + +Scenario: Logged in user can see upload files option + Given the mediawiki application is enabled + When I set the mediawiki admin password to whatever123 + Then I should see the Upload File option in the side pane when logged in with credentials admin and whatever123 diff --git a/functional_tests/step_definitions/application.py b/functional_tests/step_definitions/application.py index 5be245296..cf19bf79a 100644 --- a/functional_tests/step_definitions/application.py +++ b/functional_tests/step_definitions/application.py @@ -184,3 +184,8 @@ def enable_mediawiki_private_mode(browser): @when(parsers.parse('I disable mediawiki private mode')) def disable_mediawiki_private_mode(browser): application.disable_mediawiki_private_mode(browser) + + +@when(parsers.parse('I set the mediawiki admin password to {password}')) +def set_mediawiki_admin_password(browser, password): + application.set_mediawiki_admin_password(browser, password) diff --git a/functional_tests/step_definitions/site.py b/functional_tests/step_definitions/site.py index 29a018092..686b0830a 100644 --- a/functional_tests/step_definitions/site.py +++ b/functional_tests/step_definitions/site.py @@ -52,11 +52,23 @@ def mediawiki_does_not_allow_creating_accounts(browser): site.verify_mediawiki_no_create_account_link(browser) -@then(parsers.parse('the mediawiki site should allow anonymous reads and writes')) +@then( + parsers.parse('the mediawiki site should allow anonymous reads and writes') +) def mediawiki_allows_anonymous_reads_edits(browser): site.verify_mediawiki_anonymous_reads_edits_link(browser) -@then(parsers.parse('the mediawiki site should not allow anonymous reads and writes')) +@then( + parsers.parse( + 'the mediawiki site should not allow anonymous reads and writes')) def mediawiki_does_not_allow__account_creation_anonymous_reads_edits(browser): - site.verify_mediawiki_no_anonymous_reads_edits_link(browser) \ No newline at end of file + site.verify_mediawiki_no_anonymous_reads_edits_link(browser) + + +@then( + parsers.parse( + 'I should see the Upload File option in the side pane when logged in 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) diff --git a/functional_tests/support/application.py b/functional_tests/support/application.py index 41063cc55..7c07393f3 100644 --- a/functional_tests/support/application.py +++ b/functional_tests/support/application.py @@ -246,3 +246,10 @@ def disable_mediawiki_private_mode(browser): interface.nav_to_module(browser, 'mediawiki') _change_status(browser, 'mediawiki', 'disabled', checkbox_id='id_enable_private_mode') + + +def set_mediawiki_admin_password(browser, password): + """Set a password for the MediaWiki user called admin.""" + interface.nav_to_module(browser, 'mediawiki') + browser.find_by_id('id_password').fill(password) + interface.submit(browser, form_class='form-configuration') diff --git a/functional_tests/support/site.py b/functional_tests/support/site.py index bc394994f..7fcc39c2a 100644 --- a/functional_tests/support/site.py +++ b/functional_tests/support/site.py @@ -20,8 +20,8 @@ from time import sleep from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys -from support import config -from support.service import eventually +from support import config, interface +from support.service import eventually, wait_for_page_update # unlisted sites just use '/' + site_name as url site_url = { @@ -73,8 +73,7 @@ def verify_mediawiki_no_create_account_link(browser): def verify_mediawiki_anonymous_reads_edits_link(browser): browser.visit(config['DEFAULT']['url'] + '/mediawiki') - assert eventually(browser.is_element_present_by_id, - args=['ca-nstab-main']) + assert eventually(browser.is_element_present_by_id, args=['ca-nstab-main']) def verify_mediawiki_no_anonymous_reads_edits_link(browser): @@ -84,3 +83,14 @@ def verify_mediawiki_no_anonymous_reads_edits_link(browser): assert eventually(browser.is_element_present_by_id, args=['ca-nstab-special']) + +def login_to_mediawiki_with_credentials(browser, username, password): + browser.visit(config['DEFAULT']['url'] + '/mediawiki') + browser.find_by_id('pt-login').click() + browser.find_by_id('wpName1').fill(username) + browser.find_by_id('wpPassword1').fill(password) + with wait_for_page_update(browser): + browser.find_by_id('wpLoginAttempt').click() + # Had to put it in the same step because sessions don't + # persist between steps + assert eventually(browser.is_element_present_by_id, args=['t-upload'])