diff --git a/phpbb-test-board/feature_checks.py b/phpbb-test-board/feature_checks.py index d6fd75c..4a71a3f 100755 --- a/phpbb-test-board/feature_checks.py +++ b/phpbb-test-board/feature_checks.py @@ -411,6 +411,50 @@ def check_tlink(b: Board) -> None: + (f": {warnings[0][:150]}" if warnings else "")) +def check_activity24hours(b: Board) -> None: + def block(body: str) -> str: + m = re.search(r'
(.*?)
', body, re.S) + return m.group(1) if m else "" + + admin = requests.Session() + b.login(admin) + page = admin.get(f"{b.base}/index.php") + ok(page.status_code == 200 and "admin" in block(page.text), "the admin sees the 24-hour block, listing admin") + ok(not block(requests.get(f"{b.base}/index.php").text), "guests don't see the 24-hour block by default") + # Guests see it once given its permission (the install only grants it to user, moderator and admin roles) + guests = b.sql("SELECT group_id FROM phpbb_groups WHERE group_name = 'GUESTS'")[0][0] + option = b.sql("SELECT auth_option_id FROM phpbb_acl_options WHERE auth_option = 'u_a24hrs_view'")[0][0] + b.sql("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) " + "VALUES (?, 0, ?, 0, 1)", (guests, option)) + b.sql("UPDATE phpbb_users SET user_permissions = ''") + b.purge_cache() + ok(block(requests.get(f"{b.base}/index.php").text), "guests given u_a24hrs_view see the 24-hour block") + b.sql("DELETE FROM phpbb_acl_groups WHERE group_id = ? AND auth_option_id = ?", (guests, option)) + b.sql("UPDATE phpbb_users SET user_permissions = ''") + b.purge_cache() + # The listener takes hidebots' listener as an optional service; a wrong type hint + # made every index page fail with a TypeError while hidebots was enabled. + if (b.root / "ext/rmcgirr83/hidebots/composer.json").is_file(): + was_enabled = b.sql("SELECT ext_active FROM phpbb_ext WHERE ext_name = 'rmcgirr83/hidebots'") + enabled_here = not was_enabled or str(was_enabled[0][0]) != "1" + if enabled_here: + b.cli("extension:enable", "rmcgirr83/hidebots") + b.purge_cache() + try: + guest_page = requests.get(f"{b.base}/index.php") + admin_page = admin.get(f"{b.base}/index.php") + ok(guest_page.status_code == 200 and admin_page.status_code == 200, + f"with hidebots enabled the index still loads (guest {guest_page.status_code}, " + f"admin {admin_page.status_code})") + ok(block(admin_page.text), "with hidebots enabled the admin still sees the 24-hour block") + finally: + if enabled_here: + b.cli("extension:disable", "rmcgirr83/hidebots") + b.purge_cache() + else: + print(" [skip] hidebots isn't on this board; the optional-service check needs it") + + def check_honeypot(b: Board) -> None: b.sql("UPDATE phpbb_config SET config_value = '0' WHERE config_name = 'enable_confirm'") b.purge_cache() @@ -576,6 +620,7 @@ def config(name: str) -> str: CHECKS = { + "rmcgirr83/activity24hours": check_activity24hours, "phpbbmodders/contactadmin": check_contactadmin, "phpbbmodders/useridviewtopic": check_useridviewtopic, "phpbbmodders/wiki": check_wiki,