60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
from CTFd.models import Teams, Users
|
|
from tests.helpers import (
|
|
create_ctfd,
|
|
destroy_ctfd,
|
|
gen_bracket,
|
|
login_as_user,
|
|
register_team,
|
|
register_user,
|
|
)
|
|
|
|
|
|
def test_require_bracket_on_register():
|
|
"""Require users to submit a bracket if there is a bracket configured"""
|
|
app = create_ctfd()
|
|
with app.app_context():
|
|
gen_bracket(app.db)
|
|
with app.test_client() as client:
|
|
client.get("/register")
|
|
with client.session_transaction() as sess:
|
|
data = {
|
|
"name": "user",
|
|
"email": "user@examplectf.com",
|
|
"password": "password",
|
|
"nonce": sess.get("nonce"),
|
|
}
|
|
client.post("/register", data=data)
|
|
login_as_user(app, raise_for_error=False)
|
|
assert Users.query.filter_by(email="user@examplectf.com").count() == 0
|
|
data["bracket_id"] = 1
|
|
client.post("/register", data=data)
|
|
login_as_user(app, raise_for_error=True)
|
|
assert Users.query.filter_by(email="user@examplectf.com").count() == 1
|
|
destroy_ctfd(app)
|
|
|
|
|
|
def test_require_team_bracket_on_register():
|
|
"""Test that brackets are required on team mode"""
|
|
app = create_ctfd(user_mode="teams")
|
|
with app.app_context():
|
|
gen_bracket(app.db, type="teams")
|
|
register_user(app)
|
|
with login_as_user(app) as client:
|
|
register_team(app, raise_for_error=False)
|
|
|
|
with client.session_transaction() as sess:
|
|
data = {
|
|
"name": "team",
|
|
"password": "password",
|
|
"nonce": sess.get("nonce"),
|
|
}
|
|
# Test that a team is not created
|
|
client.post("/teams/new", data=data)
|
|
assert Teams.query.count() == 0
|
|
|
|
# Test that the team is now created
|
|
data["bracket_id"] = 1
|
|
client.post("/teams/new", data=data)
|
|
assert Teams.query.filter_by(id=1).first().bracket_id == 1
|
|
destroy_ctfd(app)
|