From d24b99b8b0a9925249d8e2f303001801e207660e Mon Sep 17 00:00:00 2001 From: "MH.Dmitrii" Date: Tue, 28 Jul 2026 15:16:52 +0300 Subject: [PATCH] integrated tests + omit unnecessary --- pyproject.toml | 13 ++++++++++ tests/integrated/__init__.py | 0 tests/integrated/conftest.py | 10 ++++++-- tests/integrated/test_auth.py | 47 +++++++++++++++++++++++++++++++++++ tests/unit/__init__.py | 0 tests/unit/conftest.py | 5 ---- tests/unit/test_jwt.py | 1 - 7 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 tests/integrated/__init__.py create mode 100644 tests/integrated/test_auth.py create mode 100644 tests/unit/__init__.py diff --git a/pyproject.toml b/pyproject.toml index b064d24..1ba7a6c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,3 +31,16 @@ dependencies = [ [build-system] requires = ["poetry-core>=2.0.0,<3.0.0"] build-backend = "poetry.core.masonry.api" + +[tool.coverage.run] +omit = [ + "*/models/*", + "*/migrations/*", + "__init__.py", + "*/docker/*" +] + +[tool.coverage.report] +exclude_lines = [ + "pragma: no cover", +] \ No newline at end of file diff --git a/tests/integrated/__init__.py b/tests/integrated/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/integrated/conftest.py b/tests/integrated/conftest.py index 63ad342..60e864a 100644 --- a/tests/integrated/conftest.py +++ b/tests/integrated/conftest.py @@ -1,9 +1,15 @@ import pytest -from service.auth.auth import CurrentUser +from src.service.auth.auth import CurrentUser +from src.service.auth.jwt import Jwt @pytest.fixture def current_user_service()->CurrentUser: current_user_service=CurrentUser() - return current_user_service \ No newline at end of file + return current_user_service + +@pytest.fixture +def jwt_service()->Jwt: + jwt_service=Jwt() + return jwt_service \ No newline at end of file diff --git a/tests/integrated/test_auth.py b/tests/integrated/test_auth.py new file mode 100644 index 0000000..4631333 --- /dev/null +++ b/tests/integrated/test_auth.py @@ -0,0 +1,47 @@ +from types import SimpleNamespace +from uuid import uuid4 + +import allure +import pytest + +from src.service.auth.auth import CurrentUser +from src.service.auth.jwt import Jwt + + +@pytest.mark.integra +class TestAuth: + ''' + create token + decode it + mock db with fake data + check output + ''' + + @pytest.mark.parametrize("user_data",[ + (SimpleNamespace(first_name="test", + last_name="test", + middle_name="test", + email="d@d.d", + direct_permissions=[], + group=[], + status=True)) + ]) + def test_get_current_user_positive(self,current_user_service:CurrentUser, jwt_service:Jwt, monkeypatch, user_data:SimpleNamespace)->None: + + with allure.step("create token"): + + token=jwt_service.create_access_token({"sub":str(uuid4())}) + + with allure.step("test get_current_user_with_fake_token"): + + monkeypatch.setattr(current_user_service.crud_db_actions, "get_user_by_id", lambda user:user_data) + + test_result= current_user_service.get_current_user(token) + + assert test_result.first_name==user_data.first_name + assert test_result.last_name==user_data.last_name + assert test_result.middle_name==user_data.middle_name + assert test_result.email==user_data.email + assert test_result.direct_permissions==user_data.direct_permissions + assert test_result.group==user_data.group + \ No newline at end of file diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index f13a959..2061915 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -1,6 +1,5 @@ import pytest -from service.auth.auth import CurrentUser from src.service.auth.jwt import Hashes, Jwt @@ -14,7 +13,3 @@ def hash_service()->Hashes: hash_service=Hashes() return hash_service -@pytest.fixture -def current_user_service()->CurrentUser: - current_user_service=CurrentUser() - return current_user_service \ No newline at end of file diff --git a/tests/unit/test_jwt.py b/tests/unit/test_jwt.py index 92b33d4..cc7e37b 100644 --- a/tests/unit/test_jwt.py +++ b/tests/unit/test_jwt.py @@ -5,7 +5,6 @@ import pytest from fastapi import HTTPException from jose import jwt -from service.auth.auth import CurrentUser from src.models.configs_read.env import env_settings from src.service.auth.jwt import Hashes, Jwt