Skip to content

Commit 224a108

Browse files
author
Pau Tena
committed
Refactor tests
1 parent 1b76274 commit 224a108

File tree

19 files changed

+117
-91
lines changed

19 files changed

+117
-91
lines changed

backend/app/auth/repository.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from sqlmodel import Session
2+
3+
from app.core.security import verify_password
4+
from app.users.models import User
5+
from app.users.repository import get_user_by_email
6+
7+
8+
def authenticate(*, session: Session, email: str, password: str) -> User | None:
9+
db_user = get_user_by_email(session=session, email=email)
10+
if not db_user:
11+
return None
12+
if not verify_password(password, db_user.hashed_password):
13+
return None
14+
return db_user

backend/app/auth/routes.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
from fastapi.responses import HTMLResponse
66
from fastapi.security import OAuth2PasswordRequestForm
77

8-
from app import crud
8+
from app.auth import repository as auth_repository
99
from app.auth.models import NewPassword, Token
1010
from app.core import security
1111
from app.core.config import settings
1212
from app.core.security import get_password_hash
1313
from app.models import Message
14+
from app.users import repository as users_repository
1415
from app.users.dependencies import CurrentUser, SessionDep, get_current_active_superuser
1516
from app.users.models import UserPublic
1617
from app.utils.utils import (
@@ -30,7 +31,7 @@ def login_access_token(
3031
"""
3132
OAuth2 compatible token login, get an access token for future requests
3233
"""
33-
user = crud.authenticate(
34+
user = auth_repository.authenticate(
3435
session=session, email=form_data.username, password=form_data.password
3536
)
3637
if not user:
@@ -58,7 +59,7 @@ def recover_password(email: str, session: SessionDep) -> Message:
5859
"""
5960
Password Recovery
6061
"""
61-
user = crud.get_user_by_email(session=session, email=email)
62+
user = users_repository.get_user_by_email(session=session, email=email)
6263

6364
if not user:
6465
raise HTTPException(
@@ -85,7 +86,7 @@ def reset_password(session: SessionDep, body: NewPassword) -> Message:
8586
email = verify_password_reset_token(token=body.token)
8687
if not email:
8788
raise HTTPException(status_code=400, detail="Invalid token")
88-
user = crud.get_user_by_email(session=session, email=email)
89+
user = users_repository.get_user_by_email(session=session, email=email)
8990
if not user:
9091
raise HTTPException(
9192
status_code=404,
@@ -109,7 +110,7 @@ def recover_password_html_content(email: str, session: SessionDep) -> Any:
109110
"""
110111
HTML Content for Password Recovery
111112
"""
112-
user = crud.get_user_by_email(session=session, email=email)
113+
user = users_repository.get_user_by_email(session=session, email=email)
113114

114115
if not user:
115116
raise HTTPException(

backend/app/core/db.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
from sqlmodel import Session, create_engine, select
22

3-
from app import crud
3+
from app.auth.models import * # noqa: F403
44
from app.core.config import settings
5+
from app.items.models import * # noqa: F403
6+
from app.users import repository as users_repository
57
from app.users.models import User, UserCreate
68

79
engine = create_engine(str(settings.SQLALCHEMY_DATABASE_URI))
@@ -30,4 +32,4 @@ def init_db(session: Session) -> None:
3032
password=settings.FIRST_SUPERUSER_PASSWORD,
3133
is_superuser=True,
3234
)
33-
user = crud.create_user(session=session, user_create=user_in)
35+
user = users_repository.create_user(session=session, user_create=user_in)

backend/app/items/repository.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import uuid
2+
3+
from sqlmodel import Session
4+
5+
from app.items.models import Item, ItemCreate
6+
7+
8+
def create_item(*, session: Session, item_in: ItemCreate, owner_id: uuid.UUID) -> Item:
9+
db_item = Item.model_validate(item_in, update={"owner_id": owner_id})
10+
session.add(db_item)
11+
session.commit()
12+
session.refresh(db_item)
13+
return db_item
File renamed without changes.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from sqlmodel import Session
2+
3+
from app.auth import repository as auth_repository
4+
from app.tests.utils.utils import random_email, random_lower_string
5+
from app.users import repository as users_repository
6+
from app.users.models import UserCreate
7+
8+
9+
def test_authenticate_user(db: Session) -> None:
10+
email = random_email()
11+
password = random_lower_string()
12+
user_in = UserCreate(email=email, password=password)
13+
user = users_repository.create_user(session=db, user_create=user_in)
14+
authenticated_user = auth_repository.authenticate(
15+
session=db, email=email, password=password
16+
)
17+
assert authenticated_user
18+
assert user.email == authenticated_user.email
19+
20+
21+
def test_not_authenticate_user(db: Session) -> None:
22+
email = random_email()
23+
password = random_lower_string()
24+
user = auth_repository.authenticate(session=db, email=email, password=password)
25+
assert user is None
File renamed without changes.
File renamed without changes.

backend/app/tests/scripts/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)