♻️ Replace pytest-mock with unittest.mock and remove pytest-cov (#717)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from unittest.mock import patch
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
from pytest_mock import MockerFixture
|
||||
|
||||
from app.core.config import settings
|
||||
from app.utils import generate_password_reset_token
|
||||
@@ -39,18 +40,18 @@ def test_use_access_token(
|
||||
|
||||
|
||||
def test_recovery_password(
|
||||
client: TestClient, normal_user_token_headers: dict[str, str], mocker: MockerFixture
|
||||
client: TestClient, normal_user_token_headers: dict[str, str]
|
||||
) -> None:
|
||||
mocker.patch("app.utils.send_email", return_value=None)
|
||||
mocker.patch("app.core.config.settings.SMTP_HOST", "smtp.example.com")
|
||||
mocker.patch("app.core.config.settings.SMTP_USER", "admin@example.com")
|
||||
email = "test@example.com"
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/password-recovery/{email}",
|
||||
headers=normal_user_token_headers,
|
||||
)
|
||||
assert r.status_code == 200
|
||||
assert r.json() == {"message": "Password recovery email sent"}
|
||||
with patch("app.core.config.settings.SMTP_HOST", "smtp.example.com"), patch(
|
||||
"app.core.config.settings.SMTP_USER", "admin@example.com"
|
||||
):
|
||||
email = "test@example.com"
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/password-recovery/{email}",
|
||||
headers=normal_user_token_headers,
|
||||
)
|
||||
assert r.status_code == 200
|
||||
assert r.json() == {"message": "Password recovery email sent"}
|
||||
|
||||
|
||||
def test_recovery_password_user_not_exits(
|
||||
|
@@ -1,5 +1,6 @@
|
||||
from unittest.mock import patch
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
from pytest_mock import MockerFixture
|
||||
from sqlmodel import Session
|
||||
|
||||
from app import crud
|
||||
@@ -31,27 +32,24 @@ def test_get_users_normal_user_me(
|
||||
|
||||
|
||||
def test_create_user_new_email(
|
||||
client: TestClient,
|
||||
superuser_token_headers: dict[str, str],
|
||||
db: Session,
|
||||
mocker: MockerFixture,
|
||||
client: TestClient, superuser_token_headers: dict[str, str], db: Session
|
||||
) -> None:
|
||||
mocker.patch("app.utils.send_email")
|
||||
mocker.patch("app.core.config.settings.SMTP_HOST", "smtp.example.com")
|
||||
mocker.patch("app.core.config.settings.SMTP_USER", "admin@example.com")
|
||||
username = random_email()
|
||||
password = random_lower_string()
|
||||
data = {"email": username, "password": password}
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/users/",
|
||||
headers=superuser_token_headers,
|
||||
json=data,
|
||||
)
|
||||
assert 200 <= r.status_code < 300
|
||||
created_user = r.json()
|
||||
user = crud.get_user_by_email(session=db, email=username)
|
||||
assert user
|
||||
assert user.email == created_user["email"]
|
||||
with patch("app.utils.send_email", return_value=None), patch(
|
||||
"app.core.config.settings.SMTP_HOST", "smtp.example.com"
|
||||
), patch("app.core.config.settings.SMTP_USER", "admin@example.com"):
|
||||
username = random_email()
|
||||
password = random_lower_string()
|
||||
data = {"email": username, "password": password}
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/users/",
|
||||
headers=superuser_token_headers,
|
||||
json=data,
|
||||
)
|
||||
assert 200 <= r.status_code < 300
|
||||
created_user = r.json()
|
||||
user = crud.get_user_by_email(session=db, email=username)
|
||||
assert user
|
||||
assert user.email == created_user["email"]
|
||||
|
||||
|
||||
def test_get_existing_user(
|
||||
@@ -265,55 +263,56 @@ def test_update_password_me_same_password_error(
|
||||
)
|
||||
|
||||
|
||||
def test_create_user_open(client: TestClient, mocker: MockerFixture) -> None:
|
||||
mocker.patch("app.core.config.settings.USERS_OPEN_REGISTRATION", True)
|
||||
username = random_email()
|
||||
password = random_lower_string()
|
||||
full_name = random_lower_string()
|
||||
data = {"email": username, "password": password, "full_name": full_name}
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/users/open",
|
||||
json=data,
|
||||
)
|
||||
assert r.status_code == 200
|
||||
created_user = r.json()
|
||||
assert created_user["email"] == username
|
||||
assert created_user["full_name"] == full_name
|
||||
def test_create_user_open(client: TestClient) -> None:
|
||||
with patch("app.core.config.settings.USERS_OPEN_REGISTRATION", True):
|
||||
username = random_email()
|
||||
password = random_lower_string()
|
||||
full_name = random_lower_string()
|
||||
data = {"email": username, "password": password, "full_name": full_name}
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/users/open",
|
||||
json=data,
|
||||
)
|
||||
assert r.status_code == 200
|
||||
created_user = r.json()
|
||||
assert created_user["email"] == username
|
||||
assert created_user["full_name"] == full_name
|
||||
|
||||
|
||||
def test_create_user_open_forbidden_error(
|
||||
client: TestClient, mocker: MockerFixture
|
||||
) -> None:
|
||||
mocker.patch("app.core.config.settings.USERS_OPEN_REGISTRATION", False)
|
||||
username = random_email()
|
||||
password = random_lower_string()
|
||||
full_name = random_lower_string()
|
||||
data = {"email": username, "password": password, "full_name": full_name}
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/users/open",
|
||||
json=data,
|
||||
)
|
||||
assert r.status_code == 403
|
||||
assert r.json()["detail"] == "Open user registration is forbidden on this server"
|
||||
def test_create_user_open_forbidden_error(client: TestClient) -> None:
|
||||
with patch("app.core.config.settings.USERS_OPEN_REGISTRATION", False):
|
||||
username = random_email()
|
||||
password = random_lower_string()
|
||||
full_name = random_lower_string()
|
||||
data = {"email": username, "password": password, "full_name": full_name}
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/users/open",
|
||||
json=data,
|
||||
)
|
||||
assert r.status_code == 403
|
||||
assert (
|
||||
r.json()["detail"] == "Open user registration is forbidden on this server"
|
||||
)
|
||||
|
||||
|
||||
def test_create_user_open_already_exists_error(
|
||||
client: TestClient, mocker: MockerFixture
|
||||
) -> None:
|
||||
mocker.patch("app.core.config.settings.USERS_OPEN_REGISTRATION", True)
|
||||
password = random_lower_string()
|
||||
full_name = random_lower_string()
|
||||
data = {
|
||||
"email": settings.FIRST_SUPERUSER,
|
||||
"password": password,
|
||||
"full_name": full_name,
|
||||
}
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/users/open",
|
||||
json=data,
|
||||
)
|
||||
assert r.status_code == 400
|
||||
assert r.json()["detail"] == "The user with this email already exists in the system"
|
||||
def test_create_user_open_already_exists_error(client: TestClient) -> None:
|
||||
with patch("app.core.config.settings.USERS_OPEN_REGISTRATION", True):
|
||||
password = random_lower_string()
|
||||
full_name = random_lower_string()
|
||||
data = {
|
||||
"email": settings.FIRST_SUPERUSER,
|
||||
"password": password,
|
||||
"full_name": full_name,
|
||||
}
|
||||
r = client.post(
|
||||
f"{settings.API_V1_STR}/users/open",
|
||||
json=data,
|
||||
)
|
||||
assert r.status_code == 400
|
||||
assert (
|
||||
r.json()["detail"]
|
||||
== "The user with this email already exists in the system"
|
||||
)
|
||||
|
||||
|
||||
def test_update_user(
|
||||
|
@@ -1,33 +1,30 @@
|
||||
from unittest.mock import MagicMock
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from pytest_mock import MockerFixture
|
||||
from sqlmodel import select
|
||||
|
||||
from app.backend_pre_start import init, logger
|
||||
|
||||
|
||||
def test_init_successful_connection(mocker: MockerFixture) -> None:
|
||||
def test_init_successful_connection() -> None:
|
||||
engine_mock = MagicMock()
|
||||
|
||||
session_mock = MagicMock()
|
||||
exec_mock = MagicMock(return_value=True)
|
||||
session_mock.configure_mock(**{"exec.return_value": exec_mock})
|
||||
mocker.patch("sqlmodel.Session", return_value=session_mock)
|
||||
|
||||
mocker.patch.object(logger, "info")
|
||||
mocker.patch.object(logger, "error")
|
||||
mocker.patch.object(logger, "warn")
|
||||
with patch("sqlmodel.Session", return_value=session_mock), patch.object(
|
||||
logger, "info"
|
||||
), patch.object(logger, "error"), patch.object(logger, "warn"):
|
||||
try:
|
||||
init(engine_mock)
|
||||
connection_successful = True
|
||||
except Exception:
|
||||
connection_successful = False
|
||||
|
||||
try:
|
||||
init(engine_mock)
|
||||
connection_successful = True
|
||||
except Exception:
|
||||
connection_successful = False
|
||||
assert (
|
||||
connection_successful
|
||||
), "The database connection should be successful and not raise an exception."
|
||||
|
||||
assert (
|
||||
connection_successful
|
||||
), "The database connection should be successful and not raise an exception."
|
||||
|
||||
assert session_mock.exec.called_once_with(
|
||||
select(1)
|
||||
), "The session should execute a select statement once."
|
||||
assert session_mock.exec.called_once_with(
|
||||
select(1)
|
||||
), "The session should execute a select statement once."
|
||||
|
@@ -1,33 +1,30 @@
|
||||
from unittest.mock import MagicMock
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from pytest_mock import MockerFixture
|
||||
from sqlmodel import select
|
||||
|
||||
from app.tests_pre_start import init, logger
|
||||
|
||||
|
||||
def test_init_successful_connection(mocker: MockerFixture) -> None:
|
||||
def test_init_successful_connection() -> None:
|
||||
engine_mock = MagicMock()
|
||||
|
||||
session_mock = MagicMock()
|
||||
exec_mock = MagicMock(return_value=True)
|
||||
session_mock.configure_mock(**{"exec.return_value": exec_mock})
|
||||
mocker.patch("sqlmodel.Session", return_value=session_mock)
|
||||
|
||||
mocker.patch.object(logger, "info")
|
||||
mocker.patch.object(logger, "error")
|
||||
mocker.patch.object(logger, "warn")
|
||||
with patch("sqlmodel.Session", return_value=session_mock), patch.object(
|
||||
logger, "info"
|
||||
), patch.object(logger, "error"), patch.object(logger, "warn"):
|
||||
try:
|
||||
init(engine_mock)
|
||||
connection_successful = True
|
||||
except Exception:
|
||||
connection_successful = False
|
||||
|
||||
try:
|
||||
init(engine_mock)
|
||||
connection_successful = True
|
||||
except Exception:
|
||||
connection_successful = False
|
||||
assert (
|
||||
connection_successful
|
||||
), "The database connection should be successful and not raise an exception."
|
||||
|
||||
assert (
|
||||
connection_successful
|
||||
), "The database connection should be successful and not raise an exception."
|
||||
|
||||
assert session_mock.exec.called_once_with(
|
||||
select(1)
|
||||
), "The session should execute a select statement once."
|
||||
assert session_mock.exec.called_once_with(
|
||||
select(1)
|
||||
), "The session should execute a select statement once."
|
||||
|
Reference in New Issue
Block a user