You've already forked RekomenciBackend
113 lines
2.8 KiB
Python
113 lines
2.8 KiB
Python
from typing import Final
|
|
|
|
from dirty_equals import IsDict, IsPartialDict, IsStr
|
|
from dishka import FromDishka
|
|
|
|
from tests.web_api.helpers import (
|
|
is_conflict_response,
|
|
is_not_found_response,
|
|
is_success_response,
|
|
is_unauthorized_response,
|
|
)
|
|
from tests.web_api.ioc import DatabaseClearer, inject
|
|
from tests.web_api.test_api_gateway import TestApiGateway
|
|
|
|
DEFAULT_PASSWORD: Final = "Sup3rPuperS3cret" # noqa: S105
|
|
|
|
|
|
@inject
|
|
async def test_email_sign_up_creates_user(
|
|
unique_email: str,
|
|
test_api_gateway: FromDishka[TestApiGateway],
|
|
database_clearer: FromDishka[DatabaseClearer],
|
|
) -> None:
|
|
await database_clearer.clear()
|
|
|
|
response = await test_api_gateway.sign_up_email(
|
|
email=unique_email,
|
|
password=DEFAULT_PASSWORD,
|
|
)
|
|
assert is_success_response(response)
|
|
assert response.json() == IsPartialDict(
|
|
access_token=IsStr()
|
|
)
|
|
|
|
|
|
@inject
|
|
async def test_email_sign_up_existing_user_conflict(
|
|
unique_email: str,
|
|
test_api_gateway: FromDishka[TestApiGateway],
|
|
database_clearer: FromDishka[DatabaseClearer],
|
|
) -> None:
|
|
await database_clearer.clear()
|
|
|
|
await test_api_gateway.sign_up_email(
|
|
email=unique_email,
|
|
password=DEFAULT_PASSWORD,
|
|
)
|
|
|
|
response = await test_api_gateway.sign_up_email(
|
|
email=unique_email,
|
|
password=DEFAULT_PASSWORD,
|
|
)
|
|
assert is_conflict_response(response)
|
|
|
|
|
|
@inject
|
|
async def test_email_sign_in_returns_token(
|
|
unique_email: str,
|
|
test_api_gateway: FromDishka[TestApiGateway],
|
|
database_clearer: FromDishka[DatabaseClearer],
|
|
) -> None:
|
|
await database_clearer.clear()
|
|
|
|
await test_api_gateway.sign_up_email(
|
|
email=unique_email,
|
|
password=DEFAULT_PASSWORD,
|
|
)
|
|
|
|
response = await test_api_gateway.sign_in_email(
|
|
email=unique_email,
|
|
password=DEFAULT_PASSWORD,
|
|
)
|
|
assert is_success_response(response)
|
|
assert response.json() == IsDict(
|
|
access_token=IsStr,
|
|
)
|
|
|
|
|
|
@inject
|
|
async def test_email_sign_in_invalid_password(
|
|
unique_email: str,
|
|
test_api_gateway: FromDishka[TestApiGateway],
|
|
database_clearer: FromDishka[DatabaseClearer],
|
|
) -> None:
|
|
await database_clearer.clear()
|
|
|
|
await test_api_gateway.sign_up_email(
|
|
email=unique_email,
|
|
password=DEFAULT_PASSWORD,
|
|
)
|
|
|
|
response = await test_api_gateway.sign_in_email(
|
|
email=unique_email,
|
|
password="wrong-password",
|
|
)
|
|
assert is_unauthorized_response(response)
|
|
|
|
|
|
@inject
|
|
async def test_email_sign_in_user_not_found(
|
|
unique_email: str,
|
|
test_api_gateway: FromDishka[TestApiGateway],
|
|
database_clearer: FromDishka[DatabaseClearer],
|
|
) -> None:
|
|
await database_clearer.clear()
|
|
|
|
response = await test_api_gateway.sign_in_email(
|
|
email=unique_email,
|
|
password=DEFAULT_PASSWORD,
|
|
)
|
|
|
|
assert is_not_found_response(response)
|