Skip to content

Commit 0f17886

Browse files
committed
fix tests
1 parent e0454cc commit 0f17886

File tree

6 files changed

+29
-54
lines changed

6 files changed

+29
-54
lines changed

app/logic/users.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99

1010
class Users:
11-
def __init__(self, logic: 'Logic'):
11+
def __init__(self, logic: "Logic"):
1212
self.logic = logic
1313

1414
async def create(self, data: UserCreate) -> User | None:
@@ -21,10 +21,10 @@ async def create(self, data: UserCreate) -> User | None:
2121

2222
async def retrieve_by_token(self, token: str) -> User | None:
2323
payload = self.logic.security.jwt.decode_token(token)
24-
if not (
25-
user := await self.logic.db.user.retrieve_one(
26-
ident=payload.get('id')
27-
)
28-
):
24+
if not (user := await self.logic.db.user.retrieve_one(ident=payload.get("id"))):
2925
raise exps.UserNotFoundException()
3026
return user
27+
28+
async def delete_by_token(self, token: str) -> None:
29+
if user := await self.retrieve_by_token(token):
30+
await self.logic.db.user.delete(user)

tests/conftest.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import AsyncGenerator
22

3-
import pytest_asyncio
3+
import pytest
44

55
from sqlmodel import SQLModel
66
from sqlalchemy.ext.asyncio import create_async_engine
@@ -14,7 +14,7 @@
1414
engine = create_async_engine("sqlite+aiosqlite:///:memory:", echo=False, future=True)
1515

1616

17-
@pytest_asyncio.fixture(scope="function")
17+
@pytest.fixture(scope="session", autouse=True)
1818
async def db() -> AsyncGenerator[Database, None]:
1919
async with engine.begin() as conn:
2020
await conn.run_sync(SQLModel.metadata.create_all)
@@ -23,23 +23,26 @@ async def db() -> AsyncGenerator[Database, None]:
2323
yield db
2424

2525

26-
@pytest_asyncio.fixture(scope="function")
26+
@pytest.fixture(scope="session", autouse=True)
2727
async def logic(db: Database) -> Logic:
2828
return Logic(db)
2929

3030

31-
@pytest_asyncio.fixture(scope="function")
32-
async def user_create_model() -> UserCreate:
31+
@pytest.fixture(scope="function")
32+
async def user_create() -> UserCreate:
3333
return UserCreate(email="email@email.email", password="password")
3434

3535

36-
@pytest_asyncio.fixture(scope="function")
36+
@pytest.fixture(scope="function")
3737
async def token(logic: Logic) -> str:
3838
return logic.security.jwt.encode_token({}, 1)
3939

4040

41-
@pytest_asyncio.fixture(scope="function")
42-
async def access_token(
43-
logic: Logic, user_create_model: UserCreate
44-
) -> AccessToken | None:
45-
return await logic.auth.generate_token(user_create_model)
41+
@pytest.fixture(scope="function")
42+
async def access_token(logic: Logic, user_create: UserCreate) -> AccessToken | None:
43+
return await logic.auth.generate_token(user_create)
44+
45+
46+
@pytest.fixture(scope="function")
47+
async def hashpwd(logic: Logic, user_create: UserCreate) -> str | None:
48+
return logic.security.pwd.hashpwd(user_create.password)

tests/logic/security/test_jwt.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
1-
import pytest
2-
import pytest_asyncio
3-
41
from app.logic.logic import Logic
52

63

7-
@pytest_asyncio.fixture(scope="function")
8-
async def token(logic: Logic) -> str:
9-
return logic.security.jwt.encode_token({}, 1)
10-
11-
12-
@pytest.mark.asyncio
134
async def test_encode(token: str):
145
assert token is not None
156

167

17-
@pytest.mark.asyncio
188
async def test_decode(logic: Logic, token: str):
199
data = logic.security.jwt.decode_token(token)
2010
assert data is not None

tests/logic/security/test_pwd.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,11 @@
1-
import pytest
2-
import pytest_asyncio
3-
41
from app.logic.logic import Logic
52
from app.models.users import UserCreate
63

74

8-
@pytest_asyncio.fixture(scope="function")
9-
async def hashpwd(logic: Logic, user_create_model: UserCreate):
10-
return logic.security.pwd.hashpwd(user_create_model.password)
11-
12-
13-
@pytest.mark.asyncio
145
async def test_hashpwd(hashpwd: str):
156
assert hashpwd is not None
167

178

18-
@pytest.mark.asyncio
19-
async def test_checkpwd(logic: Logic, hashpwd: str, user_create_model: UserCreate):
20-
data = logic.security.pwd.checkpwd(user_create_model.password, hashpwd)
9+
async def test_checkpwd(logic: Logic, hashpwd: str, user_create: UserCreate):
10+
data = logic.security.pwd.checkpwd(user_create.password, hashpwd)
2111
assert data is not None

tests/logic/users/test_users.py

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,17 @@
1-
import pytest
2-
import pytest_asyncio
3-
41
from app.logic.logic import Logic
52
from app.models.auth import AccessToken
63
from app.models.users import UserCreate
74

85

9-
@pytest_asyncio.fixture(scope="function")
10-
async def user_create() -> UserCreate:
11-
return UserCreate(email="email@email.email", password="password")
12-
13-
14-
@pytest_asyncio.fixture(scope="function")
15-
async def access_token(logic: Logic, user_create: UserCreate) -> AccessToken | None:
16-
return await logic.auth.generate_token(user_create)
17-
18-
19-
@pytest.mark.asyncio
206
async def test_create(logic: Logic, user_create: UserCreate):
217
user = await logic.users.create(user_create)
228
assert user is not None
239

2410

25-
@pytest.mark.asyncio
2611
async def test_retrieve(logic: Logic, access_token: AccessToken):
2712
user = await logic.users.retrieve_by_token(access_token.token)
2813
assert user is not None
14+
15+
16+
async def test_delete(logic: Logic, access_token: AccessToken):
17+
await logic.users.delete_by_token(access_token.token)

tests/pytest.ini

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# pytest.ini
2+
[pytest]
3+
asyncio_mode=auto

0 commit comments

Comments
 (0)