Setup Tests

This commit is contained in:
2024-05-21 13:29:43 +02:00
parent 2153bb07b9
commit bf6d3b737a
8 changed files with 99 additions and 42 deletions

View File

@ -24,7 +24,7 @@ def app():
@pytest.fixture()
def client(app):
return app.test_client()
return app.test_client(use_cookies=True)
@pytest.fixture()
@ -36,10 +36,13 @@ def login(client):
client.post('/log-in', data=dict(email=login_data.email, password=login_data.password),
follow_redirects=True)
cookie = client.get_cookie("cnsc")
return len(cookie.value) == 32
try:
return len(cookie.value) == 32 # CNSC-Länge: 32 → Wenn der Cookie so lang ist, ist man erfolgreich eingeloggt.
except AttributeError:
return False
def test_login(client):
def tesst_login(client):
loginpage = client.get("/log-in", follow_redirects=True)
assert b"Einloggen" in loginpage.data
assert loginpage.status_code == 200
@ -49,21 +52,75 @@ def test_login(client):
login_request = client.post(login_action, data=dict(email=login_data.email, password=login_data.password),
follow_redirects=True)
assert login_request.status_code == 200
assert b"Willkommen, " in login_request.data
cookie = client.get_cookie("cnsc")
assert len(cookie.value) == 32 # CNSC-Länge: 32 → Wenn der Cookie so lang ist, ist man erfolgreich eingeloggt.
def tesst_kurssetup(client):
if login(client):
kurspage = client.get("/set-up", follow_redirects=True)
assert kurspage.status_code == 200
kurspage_html = BeautifulSoup(kurspage.text, "lxml")
kursbutton = kurspage_html.find("form", {"id": "manualForm"})
kursbutton_action = kursbutton.get("action")
planpage = client.get(kursbutton_action, follow_redirects=True)
assert planpage.status_code == 200
planpage_html = BeautifulSoup(planpage.text, "lxml")
planpage_form = planpage_html.find("form", {"id": "manualForm"})
planpage_action = planpage_form.get("action")
set_request = client.post(planpage_action, data=dict(url=login_data.kurs_url), follow_redirects=True)
assert set_request.status_code == 200
assert b"Willkommen, " in set_request.data
else:
assert False
def tesst_semestersetup(client):
if login(client):
semesterpage = client.get("/set-up/semester", follow_redirects=True)
assert semesterpage.status_code == 200
semesterpage_html = BeautifulSoup(semesterpage.text, "lxml")
semesterform = semesterpage_html.find("form")
semesterform_action = semesterform.get("action")
semesterform_options = semesterform.find_all("option")
nextpage = client.post(semesterform_action, data=dict(sem=semesterform_options[-1].get("value")),
follow_redirects=True)
assert nextpage.status_code == 200
assert b"Willkommen, " in nextpage.data
else:
assert False
def test_noten(client):
if login(client):
notenpage = client.get("/theorie/noten", follow_redirects=True)
assert notenpage.status_code == 200
assert b"Deine Noten im" in notenpage.data
notenpage_html = BeautifulSoup(notenpage.text, "lxml")
notenpage_heading = notenpage_html.find("h1")
notenpage_form = notenpage_html.find("form")
notenpage_action = notenpage_form.get("action")
notenpage_selection = notenpage_form.find("select")
notenpage_options = notenpage_selection.find_all("option")
notenpage_semester = "Not found!"
nextpage = "Not found!"
for i in notenpage_options:
if i.get("selected") == "":
notenpage_semester = i.text[:-1]
else:
nextpage = i.get("value")
assert notenpage_semester.encode("utf-8") in notenpage_heading.encode("utf-8")
nextpage = client.post(notenpage_action, data=dict(sem=nextpage), follow_redirects=True)
assert nextpage.status_code == 200
else:
assert False
def test_logout(client):
def tesst_logout(client):
if login(client):
loginpage = client.get("/log-out", follow_redirects=True)
assert loginpage.status_code == 200
assert b"Einloggen" in loginpage.data
cookie = client.get_cookie("cnsc")
assert len(cookie.value) != 32 # CNSC-Länge: 32 → CNSC darf ausgeloggt nicht gesetzt sein
else:
assert False