division test file into several files + add pytest to order test
continuous-integration/drone/push Build is passing Details

master
Maxence JOUANNET 3 months ago
parent 076af7de46
commit 2349c4c93f

@ -5,3 +5,4 @@ uvicorn==0.32.0
joserfc==1.0.1
pytest==8.3.4
pytest-cov==6.0.0
pytest-order==1.3.0

@ -0,0 +1,51 @@
from test_main import *
def test_add_friend():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
# Register another user that will be used as a friend
response = client.post("/register", json={"username": "testfriend", "password": "testpassword"})
user_id = response.json()["user_id"]
friend_data = {"friend_user_id": user_id}
response = client.post("/friend/add", json=friend_data, headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert "id" in data
friend_data = {"friend_user_id": str(db["users"].find_one({"username": "testuser"})["_id"])}
response = client.post("/friend/add", json=friend_data, headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 409 # Cannot add yourself as a friend
def test_list_friends():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
response = client.get("/friends", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert isinstance(data, dict)
def test_get_friend():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
friend_id = str(db["friends"].find_one({})["_id"])
response = client.get(f"/friend/{friend_id}", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert "id" in data
assert "user_id" in data
assert "friend_user_id" in data
assert "status" in data
# Test wrong format
response = client.get(f"/friend/randomIdThatDoesntExists", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 422
# Test inexistant id
response = client.get(f"/friend/123456789987654321abcdef", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 404

@ -29,152 +29,8 @@ db = client[config.MONGODB_DATABASE]
# TestClient with the app imported from main
client = TestClient(app)
def test_register_user():
response = client.post("/register", json={"username": "testuser", "password": "testpassword"})
assert response.status_code == 200
data = response.json()
assert "access_token" in data
assert "token_type" in data
assert "user_id" in data
response = client.post("/register", json={"username": "testuser", "password": "testpassword"})
assert response.status_code == 409 # Conflict - Cannot create two times the same user
def test_login_user():
response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
assert response.status_code == 200
data = response.json()
assert "access_token" in data
assert "token_type" in data
assert "user_id" in data
response = client.post("/login", data={"username": "testuser", "password": "BADpassword"})
assert response.status_code == 401 # Unauthorized, bad pwd
def test_add_pin():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
response = client.post("/pin/add", json={"title": "Test Pin", "description": "Test Description", "location": "Test location", "files": ["Test file 1"]}, headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert "id" in data
def test_list_pins():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
response = client.get("/pins", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert isinstance(data, list)
def test_get_pin():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
add_pin_response = client.post("/pin/add", json={"title": "Test Pin", "description": "Test Description", "location": "Test location", "files": ["Test file 1"]}, headers={"Authorization": f"Bearer {token}"})
pin_id = add_pin_response.json()["id"]
response = client.get(f"/pin/{pin_id}", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert data["title"] == "Test Pin"
assert data["description"] == "Test Description"
assert data["location"] == "Test location"
assert data["files"] == ["Test file 1"]
# Test wrong format
response = client.get(f"/pin/randomIdThatDoesntExists", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 422
# Test inexistant id
response = client.get(f"/pin/123456789987654321abcdef", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 404
def test_update_pin():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
add_pin_response = client.post("/pin/add", json={"title": "Test Pin", "description": "Test Description", "location": "Test location", "files": ["Test file 1"]}, headers={"Authorization": f"Bearer {token}"})
pin_id = add_pin_response.json()["id"]
update_response = client.patch(f"/pin/{pin_id}", json={"title": "Updated Pin", "description": "Updated Description", "location": "Updated location", "files": ["Updated file 1"]}, headers={"Authorization": f"Bearer {token}"})
assert update_response.status_code == 200
get_pin_response = client.get(f"/pin/{pin_id}", headers={"Authorization": f"Bearer {token}"})
data = get_pin_response.json()
assert data["title"] == "Updated Pin"
assert data["description"] == "Updated Description"
assert data["location"] == "Updated location"
assert data["files"] == ["Updated file 1"]
# Test wrong format
response = client.get(f"/pin/randomIdThatDoesntExists", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 422
# Test inexistant id
response = client.get(f"/pin/123456789987654321abcdef", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 404
def test_add_friend():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
# Register another user that will be used as a friend
response = client.post("/register", json={"username": "testfriend", "password": "testpassword"})
user_id = response.json()["user_id"]
friend_data = {"friend_user_id": user_id}
response = client.post("/friend/add", json=friend_data, headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert "id" in data
friend_data = {"friend_user_id": str(db["users"].find_one({"username": "testuser"})["_id"])}
response = client.post("/friend/add", json=friend_data, headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 409 # Cannot add yourself as a friend
def test_list_friends():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
response = client.get("/friends", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert isinstance(data, dict)
def test_get_friend():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
friend_id = str(db["friends"].find_one({})["_id"])
response = client.get(f"/friend/{friend_id}", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert "id" in data
assert "user_id" in data
assert "friend_user_id" in data
assert "status" in data
# Test wrong format
response = client.get(f"/friend/randomIdThatDoesntExists", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 422
# Test inexistant id
response = client.get(f"/friend/123456789987654321abcdef", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 404
def test_search_users():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
response = client.get("/users?name=testuser", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert isinstance(data, list)
assert data[0]["username"] == "testuser"

@ -0,0 +1,68 @@
from test_main import *
def test_add_pin():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
response = client.post("/pin/add", json={"title": "Test Pin", "description": "Test Description", "location": "Test location", "files": ["Test file 1"]}, headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert "id" in data
def test_list_pins():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
response = client.get("/pins", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert isinstance(data, list)
def test_get_pin():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
add_pin_response = client.post("/pin/add", json={"title": "Test Pin", "description": "Test Description", "location": "Test location", "files": ["Test file 1"]}, headers={"Authorization": f"Bearer {token}"})
pin_id = add_pin_response.json()["id"]
response = client.get(f"/pin/{pin_id}", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert data["title"] == "Test Pin"
assert data["description"] == "Test Description"
assert data["location"] == "Test location"
assert data["files"] == ["Test file 1"]
# Test wrong format
response = client.get(f"/pin/randomIdThatDoesntExists", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 422
# Test inexistant id
response = client.get(f"/pin/123456789987654321abcdef", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 404
def test_update_pin():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
add_pin_response = client.post("/pin/add", json={"title": "Test Pin", "description": "Test Description", "location": "Test location", "files": ["Test file 1"]}, headers={"Authorization": f"Bearer {token}"})
pin_id = add_pin_response.json()["id"]
update_response = client.patch(f"/pin/{pin_id}", json={"title": "Updated Pin", "description": "Updated Description", "location": "Updated location", "files": ["Updated file 1"]}, headers={"Authorization": f"Bearer {token}"})
assert update_response.status_code == 200
get_pin_response = client.get(f"/pin/{pin_id}", headers={"Authorization": f"Bearer {token}"})
data = get_pin_response.json()
assert data["title"] == "Updated Pin"
assert data["description"] == "Updated Description"
assert data["location"] == "Updated location"
assert data["files"] == ["Updated file 1"]
# Test wrong format
response = client.get(f"/pin/randomIdThatDoesntExists", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 422
# Test inexistant id
response = client.get(f"/pin/123456789987654321abcdef", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 404

@ -0,0 +1,35 @@
from test_main import *
import pytest
@pytest.mark.order(1)
def test_register_user():
response = client.post("/register", json={"username": "testuser", "password": "testpassword"})
assert response.status_code == 200
data = response.json()
assert "access_token" in data
assert "token_type" in data
assert "user_id" in data
response = client.post("/register", json={"username": "testuser", "password": "testpassword"})
assert response.status_code == 409 # Conflict - Cannot create two times the same user
def test_login_user():
response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
assert response.status_code == 200
data = response.json()
assert "access_token" in data
assert "token_type" in data
assert "user_id" in data
response = client.post("/login", data={"username": "testuser", "password": "BADpassword"})
assert response.status_code == 401 # Unauthorized, bad pwd
def test_search_users():
login_response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
token = login_response.json()["access_token"]
response = client.get("/users?name=testuser", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
data = response.json()
assert isinstance(data, list)
assert data[0]["username"] == "testuser"
Loading…
Cancel
Save