import pytest
import json
@pytest.mark.order1
[docs]def test_status(client, status):
"""Testea si se recibe código 200 en la ruta /status
con una petición GET y que el resultado sea un JSON con formato
{'status': "OK"}
Args:
client (Flask.test_client): Mock de la API para mandar peticiones durante los tests.
"""
response = client.get("/status")
assert response.status_code == 200
assert response.json == status
@pytest.mark.order2
[docs]def test_get_students(client):
"""Testea si se recibe código 200 en la ruta /api/v1/students
con una petición GET y que el resultado sea una lista vacía ya que
no hay datos previamente cargados.
Args:
client (Flask.test_client): Mock de la API para mandar peticiones durante los tests.
"""
response = client.get("/api/v1/students")
assert response.status_code == 200
assert response.json == {'data': []}
@pytest.mark.order3
[docs]def test_post_student(client, valid_student):
"""Testea si se recibe código 201 en la ruta /api/v1/students
con una petición POST al mandar un esquema de estudiante válido
o 400 si no es válido (en este caso se envía un json vacío).
Args:
client (Flask.test_client): Mock de la API para mandar peticiones durante los tests.
valid_student (dict): JSON con una estructura de estudiante válida.
"""
response = client.post("/api/v1/students", data=valid_student, content_type='application/json')
assert response.status_code == 201
response = client.post("/api/v1/students", data='{}', content_type='application/json')
assert response.status_code == 400
@pytest.mark.order4
[docs]def test_get_student(client, valid_student):
"""Testea si se recibe código 200 en la ruta /api/v1/students/<student_id>
con una petición GET al mandar un identificador de estudiante válido a la vez que
comprueba que el JSON recibido sea adecuado, o 404 si el identificador de estudiante
no es válido.
Args:
client (Flask.test_client): Mock de la API para mandar peticiones durante los tests.
valid_student (dict): JSON con una estructura de estudiante válida.
"""
response = client.get("/api/v1/students/1")
assert response.status_code == 200
assert response.json['github'] == json.loads(valid_student)['github']
response = client.get("/api/v1/students/fail")
assert response.status_code == 404
@pytest.mark.order5
[docs]def test_put_student(client, valid_student):
"""Testea si se recibe código 204 en la ruta /api/v1/students/<student_id>
con una petición PUT al mandar un esquema e identificador de estudiante válido.
Si no se encuentra el estudiante comprueba si devuelve 404, o 400 si el esquema
no es válido (en este caso se envía un json vacío).
Args:
client (Flask.test_client): Mock de la API para mandar peticiones durante los tests.
valid_student (dict): JSON con una estructura de estudiante válida.
"""
response = client.put("/api/v1/students/1", data=valid_student, content_type='application/json')
assert response.status_code == 204
response = client.put("/api/v1/students/fail")
assert response.status_code == 404
response = client.post("/api/v1/students", data='{}', content_type='application/json')
assert response.status_code == 400
@pytest.mark.order6
[docs]def test_delete_student(client):
"""Testea si se recibe código 204 en la ruta /api/v1/students/<student_id>
con una petición DELETE al mandar un identificador de estudiante válido, o 404
si no existe ese identificador.
Args:
client (Flask.test_client): Mock de la API para mandar peticiones durante los tests.
"""
response = client.delete("/api/v1/students/1")
assert response.status_code == 204
response = client.delete("/api/v1/students/fail")
assert response.status_code == 404