mirror of https://github.com/JohnHammond/CTFd.git
Fix hidden pages not being able to load (#1019)
* Fixes bug where pages marked as `hidden` weren't loading * It's possible that some users used this behavior however this fix implements the correct behavior. The `draft` setting can be used to completely hide pages.selenium-screenshot-testing
parent
41bc92dab9
commit
8d91a3fa8d
|
@ -13,5 +13,5 @@ def get_pages():
|
||||||
@cache.memoize()
|
@cache.memoize()
|
||||||
def get_page(route):
|
def get_page(route):
|
||||||
return Pages.query.filter(
|
return Pages.query.filter(
|
||||||
Pages.route == route, Pages.draft.isnot(True), Pages.hidden.isnot(True)
|
Pages.route == route, Pages.draft.isnot(True)
|
||||||
).first()
|
).first()
|
||||||
|
|
|
@ -13,7 +13,9 @@ from tests.helpers import (
|
||||||
gen_file,
|
gen_file,
|
||||||
gen_page,
|
gen_page,
|
||||||
)
|
)
|
||||||
|
from CTFd.cache import clear_pages
|
||||||
from CTFd.utils import set_config
|
from CTFd.utils import set_config
|
||||||
|
from CTFd.utils.config.pages import get_pages
|
||||||
from CTFd.utils.encoding import hexencode
|
from CTFd.utils.encoding import hexencode
|
||||||
from freezegun import freeze_time
|
from freezegun import freeze_time
|
||||||
|
|
||||||
|
@ -89,6 +91,32 @@ def test_page_requiring_auth():
|
||||||
destroy_ctfd(app)
|
destroy_ctfd(app)
|
||||||
|
|
||||||
|
|
||||||
|
def test_hidden_pages():
|
||||||
|
"""Test that hidden pages aren't on the navbar but can be loaded"""
|
||||||
|
app = create_ctfd()
|
||||||
|
with app.app_context():
|
||||||
|
page = gen_page(
|
||||||
|
app.db,
|
||||||
|
title="HiddenPageTitle",
|
||||||
|
route="this-is-a-hidden-route",
|
||||||
|
content="This is some HTML",
|
||||||
|
hidden=True,
|
||||||
|
)
|
||||||
|
clear_pages()
|
||||||
|
assert page not in get_pages()
|
||||||
|
|
||||||
|
with app.test_client() as client:
|
||||||
|
r = client.get("/")
|
||||||
|
assert r.status_code == 200
|
||||||
|
assert "HiddenPageTitle" not in r.get_data(as_text=True)
|
||||||
|
|
||||||
|
with app.test_client() as client:
|
||||||
|
r = client.get("/this-is-a-hidden-route")
|
||||||
|
assert r.status_code == 200
|
||||||
|
assert "This is some HTML" in r.get_data(as_text=True)
|
||||||
|
destroy_ctfd(app)
|
||||||
|
|
||||||
|
|
||||||
def test_not_found():
|
def test_not_found():
|
||||||
"""Should return a 404 for pages that are not found"""
|
"""Should return a 404 for pages that are not found"""
|
||||||
app = create_ctfd()
|
app = create_ctfd()
|
||||||
|
|
Loading…
Reference in New Issue