mirror of
https://github.com/Doctorado-ML/beflask.git
synced 2025-08-15 15:15:52 +00:00
79 lines
3.0 KiB
Python
79 lines
3.0 KiB
Python
from flask import session, g, url_for
|
|
|
|
|
|
def test_login(app, client, auth, admin_user, admin_password):
|
|
with app[1].test_request_context():
|
|
url_login = url_for("main.login")
|
|
url_index = url_for("main.index")
|
|
|
|
assert client.get(url_login).status_code == 200
|
|
response = auth.login()
|
|
assert response.headers["Location"] == url_index
|
|
auth.logout()
|
|
|
|
response = auth.login(username=admin_user, password=admin_password)
|
|
assert response.headers["Location"] == url_index
|
|
with client:
|
|
client.get(url_index)
|
|
assert session["_user_id"] == "1"
|
|
assert g._login_user.username == admin_user
|
|
# Check if an already logged in user is redirected to index
|
|
assert client.get(url_login).status_code == 302
|
|
response = client.get(url_login)
|
|
assert response.status_code == 302
|
|
assert response.headers["Location"] == url_index
|
|
auth.logout()
|
|
|
|
|
|
def test_login_invalid(auth, admin_user):
|
|
response = auth.login(
|
|
username=admin_user, password="wrong_password", follow_redirects=True
|
|
)
|
|
assert b"Invalid username or password" in response.data
|
|
assert response.status_code == 200
|
|
|
|
|
|
def test_access_page_not_logged(client, app, auth, guest_user, guest_password):
|
|
with app[1].test_request_context():
|
|
url_login = url_for("main.login")
|
|
url_config = url_for("main.config")
|
|
# Check if a not logged in user is redirected to login with next param
|
|
response = client.get(url_config)
|
|
header_login = f"{url_login}?next=%2Fconfig"
|
|
assert response.headers["Location"] == header_login
|
|
assert response.status_code == 302
|
|
# Check if a not logged in user is redirected to login
|
|
response = client.get("/config", follow_redirects=True)
|
|
assert b"Please log in to access this page." in response.data
|
|
assert response.status_code == 200
|
|
with client:
|
|
data = {"username": guest_user, "password": guest_password}
|
|
response = client.post(header_login, data=data, follow_redirects=True)
|
|
assert response.status_code == 200
|
|
responses = {
|
|
"score": "Deafult score if none is provided",
|
|
"platform": "Name of the platform running benchmarks",
|
|
"model": "Default model used if none is provided",
|
|
}
|
|
for key, value in responses.items():
|
|
assert bytes(key, "utf-8") in response.data
|
|
assert bytes(value, "utf-8") in response.data
|
|
|
|
|
|
def test_logout_logged(client, auth):
|
|
response = auth.login()
|
|
with client:
|
|
auth.logout()
|
|
assert "user_id" not in session
|
|
assert response.headers["Location"] == url_for("main.index")
|
|
|
|
|
|
def test_logout_not_logged(client, auth):
|
|
with client:
|
|
response = auth.logout()
|
|
assert response.status_code == 302
|
|
assert "user_id" not in session
|
|
assert response.headers["Location"] == url_for("main.index")
|
|
response = auth.logout(follow_redirects=True)
|
|
assert b"You are not logged in." in response.data
|