recopytex/tests/e2e/test_api_students.py

79 lines
2.3 KiB
Python

import pytest
import requests
from backend import config
from tests.model.fakes import build_tribes
@pytest.mark.usefixtures("restart_api")
@pytest.mark.usefixtures("clean_db")
def test_api_post_student():
url = config.get_api_url()
tribe = build_tribes(1)[0]
requests.post(f"{url}/tribes", json=tribe.to_dict())
data = {"name": "zart", "tribe_name": tribe.name}
r = requests.post(f"{url}/students", json=data)
assert r.status_code == 201
assert r.json()["name"] == "zart"
assert r.json()["tribe_name"] == tribe.name
assert r.json()["id"]
@pytest.mark.usefixtures("restart_api")
@pytest.mark.usefixtures("clean_db")
def test_api_post_student_with_id():
url = config.get_api_url()
tribe = build_tribes(1)[0]
requests.post(f"{url}/tribes", json=tribe.to_dict())
data = {"id": "1234", "name": "zart", "tribe_name": tribe.name}
requests.post(f"{url}/students", json=data)
r = requests.post(f"{url}/students", json=data)
assert r.status_code == 409
assert (
r.json()
== f"You can't post a student with an id. It is already registrered. Use PUT to modify it."
)
@pytest.mark.usefixtures("restart_api")
@pytest.mark.usefixtures("clean_db")
def test_api_post_student_in_non_existant_tribe():
url = config.get_api_url()
tribe = build_tribes(1)[0]
requests.post(f"{url}/tribes", json=tribe.to_dict())
data = {"name": "zart", "tribe_name": tribe.name + "_"}
requests.post(f"{url}/students", json=data)
r = requests.post(f"{url}/students", json=data)
assert r.status_code == 409
assert (
r.json()
== f"The tribe {tribe.name+'_'} does not exists. You can't add a student in it."
)
@pytest.mark.usefixtures("restart_api")
@pytest.mark.usefixtures("clean_db")
def test_api_put_student():
url = config.get_api_url()
tribe = build_tribes(1)[0]
requests.post(f"{url}/tribes", json=tribe.to_dict())
data = {"name": "zart", "tribe_name": tribe.name}
r = requests.post(f"{url}/students", json=data)
student = r.json()
student["name"] = "Choupinou"
r2 = requests.put(f"{url}/students/{student['id']}", json=student)
assert r2.status_code == 200
assert r2.json()["name"] == "Choupinou"
assert r2.json()["tribe_name"] == tribe.name
assert r2.json()["id"] == r.json()["id"]