backend changes

This commit is contained in:
Martin Bauer
2021-08-29 17:57:25 +02:00
parent e5a5e141a9
commit 0d34959e08
9 changed files with 162 additions and 128 deletions

View File

@@ -2,8 +2,9 @@ import os
from typing import Any, Generator
import pytest
import databases
from src.db import Base, get_db
from src.main import app as _app
from src import get_app
from fastapi import FastAPI
from fastapi.testclient import TestClient
from sqlalchemy import create_engine
@@ -14,9 +15,7 @@ from sqlalchemy.orm import sessionmaker
# database engines
SQLALCHEMY_DATABASE_URL = os.getenv('TEST_DATABASE_URL', "sqlite://")
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False})
Session = sessionmaker(autocommit=False, autoflush=False, bind=engine)
@@ -26,7 +25,9 @@ def app() -> Generator[FastAPI, Any, None]:
"""
Create a fresh database on each test case.
"""
print(list(Base.metadata.tables.keys()))
Base.metadata.create_all(engine) # Create the tables.
_app = get_app(databases.Database(SQLALCHEMY_DATABASE_URL))
yield _app
Base.metadata.drop_all(engine)
@@ -61,7 +62,6 @@ def client(app: FastAPI, db_session: Session) -> Generator[TestClient, Any, None
Create a new FastAPI TestClient that uses the `db_session` fixture to override
the `get_db` dependency that is injected into routes.
"""
def _get_test_db():
try:
yield db_session

View File

@@ -1,11 +1,24 @@
from backend.src.db import DbSession
from src.db import DbSession
from src.schemas import Session
from fastapi import FastAPI
from src.db import DbSession
from fastapi.testclient import TestClient
from src.users import UserCreate, User
from fastapi.encoders import jsonable_encoder
#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
def test_session_create(app: FastAPI, db_session: DbSession, client: TestClient):
pass
# Tests to write
# - User Flow: register, verify, login
# - create, list, delete session
# - friendship: query user by mail, create friend request, accept
def test_register_user(app: FastAPI, db_session: DbSession, client: TestClient):
req_data = jsonable_encoder(UserCreate(email="test@abc.com", password="password"))
response = client.post("/auth/register", json=req_data)
print(response.json())
resp_user = User(**response.json())
assert response.status_code == 201
assert resp_user.is_active
assert not resp_user.is_superuser
assert not resp_user.is_verified