50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
from tests.helpers import (
|
|
create_ctfd,
|
|
destroy_ctfd,
|
|
gen_challenge,
|
|
login_as_user,
|
|
register_user,
|
|
)
|
|
|
|
|
|
def test_api_export_csv():
|
|
app = create_ctfd()
|
|
with app.app_context():
|
|
gen_challenge(app.db)
|
|
data = {
|
|
"type": "csv",
|
|
"args": {"table": "challenges"},
|
|
}
|
|
|
|
with login_as_user(app, name="admin", password="password") as client:
|
|
r = client.post("/api/v1/exports/raw", json=data)
|
|
assert r.status_code == 200
|
|
assert r.headers["Content-Type"].startswith("text/csv")
|
|
assert "chal_name" in r.get_data(as_text=True)
|
|
|
|
# Test that regular users cannot access the endpoint
|
|
register_user(app)
|
|
with login_as_user(app) as client:
|
|
response = client.post("/api/v1/exports/raw", json=data)
|
|
assert response.status_code == 403
|
|
destroy_ctfd(app)
|
|
|
|
|
|
def test_api_export():
|
|
app = create_ctfd()
|
|
with app.app_context():
|
|
gen_challenge(app.db)
|
|
data = {}
|
|
|
|
with login_as_user(app, name="admin", password="password") as client:
|
|
r = client.post("/api/v1/exports/raw", json=data)
|
|
assert r.status_code == 200
|
|
assert r.headers["Content-Type"].startswith("application/zip")
|
|
|
|
# Test that regular users cannot access the endpoint
|
|
register_user(app)
|
|
with login_as_user(app) as client:
|
|
response = client.post("/api/v1/exports/raw", json=data)
|
|
assert response.status_code == 403
|
|
destroy_ctfd(app)
|