refactor tests for src.db.models... and for new code, message, field error response
This commit is contained in:
parent
312c8db04f
commit
13db21c4af
@ -5,7 +5,8 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
|||||||
from src.core.config import settings
|
from src.core.config import settings
|
||||||
from src.core.security import verify_token
|
from src.core.security import verify_token
|
||||||
from src.db.session import get_db
|
from src.db.session import get_db
|
||||||
from src.domain.models import UserRole, Users
|
from src.db.models.app_user import AppUser
|
||||||
|
from src.db.models.role import UserRoleEnum
|
||||||
from src.repository.user_repository import UserRepository
|
from src.repository.user_repository import UserRepository
|
||||||
|
|
||||||
security = HTTPBearer()
|
security = HTTPBearer()
|
||||||
@ -16,7 +17,7 @@ if settings.DEBUG:
|
|||||||
async def get_current_user(
|
async def get_current_user(
|
||||||
credentials: HTTPAuthorizationCredentials = Depends(security),
|
credentials: HTTPAuthorizationCredentials = Depends(security),
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
) -> Users:
|
) -> AppUser:
|
||||||
token = credentials.credentials
|
token = credentials.credentials
|
||||||
payload = verify_token(token)
|
payload = verify_token(token)
|
||||||
if payload is None:
|
if payload is None:
|
||||||
@ -52,7 +53,7 @@ else:
|
|||||||
async def get_current_user(
|
async def get_current_user(
|
||||||
user: UserInfo = Depends(get_user_dependency),
|
user: UserInfo = Depends(get_user_dependency),
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
) -> Users:
|
) -> AppUser:
|
||||||
user_repo = UserRepository(db)
|
user_repo = UserRepository(db)
|
||||||
db_user = await user_repo.get_by_email(user.email)
|
db_user = await user_repo.get_by_email(user.email)
|
||||||
if db_user is None:
|
if db_user is None:
|
||||||
@ -64,22 +65,22 @@ else:
|
|||||||
return db_user
|
return db_user
|
||||||
|
|
||||||
|
|
||||||
async def get_current_active_user(current_user: Users = Depends(get_current_user)) -> Users:
|
async def get_current_active_user(current_user: AppUser = Depends(get_current_user)) -> AppUser:
|
||||||
return current_user
|
return current_user
|
||||||
|
|
||||||
|
|
||||||
async def get_current_active_user_with_set_db(
|
async def get_current_active_user_with_set_db(
|
||||||
current_user: Users = Depends(get_current_user),
|
current_user: AppUser = Depends(get_current_user),
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
) -> Users:
|
) -> AppUser:
|
||||||
|
|
||||||
user_repo = UserRepository(db)
|
user_repo = UserRepository(db)
|
||||||
await user_repo.set_app_user_id(current_user.id)
|
await user_repo.set_app_user_id(current_user.id)
|
||||||
return current_user
|
return current_user
|
||||||
|
|
||||||
|
|
||||||
def require_admin(current_user: Users = Depends(get_current_active_user)) -> Users:
|
def require_admin(current_user: AppUser = Depends(get_current_active_user)) -> AppUser:
|
||||||
if current_user.role_id != UserRole.ADMIN:
|
if current_user.role_id != UserRoleEnum.ADMIN:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_403_FORBIDDEN,
|
status_code=status.HTTP_403_FORBIDDEN,
|
||||||
detail="Недостаточно прав",
|
detail="Недостаточно прав",
|
||||||
@ -87,11 +88,11 @@ def require_admin(current_user: Users = Depends(get_current_active_user)) -> Use
|
|||||||
return current_user
|
return current_user
|
||||||
|
|
||||||
|
|
||||||
def require_executor(current_user: Users = Depends(get_current_active_user)) -> Users:
|
def require_executor(current_user: AppUser = Depends(get_current_active_user)) -> AppUser:
|
||||||
if current_user.role_id not in [
|
if current_user.role_id not in [
|
||||||
UserRole.ADMIN,
|
UserRoleEnum.ADMIN,
|
||||||
UserRole.EXECUTOR_DFIP,
|
UserRoleEnum.EXECUTOR_DFIP,
|
||||||
UserRole.EXECUTOR_RF,
|
UserRoleEnum.EXECUTOR_RF,
|
||||||
]:
|
]:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_403_FORBIDDEN,
|
status_code=status.HTTP_403_FORBIDDEN,
|
||||||
@ -100,8 +101,8 @@ def require_executor(current_user: Users = Depends(get_current_active_user)) ->
|
|||||||
return current_user
|
return current_user
|
||||||
|
|
||||||
|
|
||||||
def require_executor_dfip(current_user: Users = Depends(get_current_active_user)) -> Users:
|
def require_executor_dfip(current_user: AppUser = Depends(get_current_active_user)) -> AppUser:
|
||||||
if current_user.role_id not in [UserRole.ADMIN, UserRole.EXECUTOR_DFIP]:
|
if current_user.role_id not in [UserRoleEnum.ADMIN, UserRoleEnum.EXECUTOR_DFIP]:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_403_FORBIDDEN,
|
status_code=status.HTTP_403_FORBIDDEN,
|
||||||
detail="Недостаточно прав",
|
detail="Недостаточно прав",
|
||||||
|
|||||||
@ -3,7 +3,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
|||||||
|
|
||||||
from src.api.v1.deps import get_current_active_user, require_admin, require_executor_dfip
|
from src.api.v1.deps import get_current_active_user, require_admin, require_executor_dfip
|
||||||
from src.db.session import get_db
|
from src.db.session import get_db
|
||||||
from src.domain.models import Users
|
from src.db.models.app_user import AppUser
|
||||||
from src.domain.schemas import User as UserSchema
|
from src.domain.schemas import User as UserSchema
|
||||||
from src.domain.schemas import (
|
from src.domain.schemas import (
|
||||||
SSPIDList,
|
SSPIDList,
|
||||||
@ -21,7 +21,7 @@ router = APIRouter(prefix="/users", tags=["users"])
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/me", response_model=UserSchema)
|
@router.get("/me", response_model=UserSchema)
|
||||||
async def get_current_user_info(current_user: Users = Depends(get_current_active_user)):
|
async def get_current_user_info(current_user: AppUser = Depends(get_current_active_user)):
|
||||||
return current_user
|
return current_user
|
||||||
|
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ async def get_users(
|
|||||||
skip: int = 0,
|
skip: int = 0,
|
||||||
limit: int = 100,
|
limit: int = 100,
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
current_user: Users = Depends(require_admin),
|
current_user: AppUser = Depends(require_admin),
|
||||||
):
|
):
|
||||||
user_service = UserService(db)
|
user_service = UserService(db)
|
||||||
users = await user_service.get_all(current_user, skip=skip, limit=limit)
|
users = await user_service.get_all(current_user, skip=skip, limit=limit)
|
||||||
@ -41,7 +41,7 @@ async def get_users(
|
|||||||
async def get_many_ssp(
|
async def get_many_ssp(
|
||||||
user_id: int,
|
user_id: int,
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
current_user: Users = Depends(require_executor_dfip),
|
current_user: AppUser = Depends(require_executor_dfip),
|
||||||
):
|
):
|
||||||
user_service = UserService(db)
|
user_service = UserService(db)
|
||||||
ssp_list = await user_service.get_many_ssp(user_id, current_user)
|
ssp_list = await user_service.get_many_ssp(user_id, current_user)
|
||||||
@ -57,7 +57,7 @@ async def set_many_ssp(
|
|||||||
user_id: int,
|
user_id: int,
|
||||||
ssp_ids_data: SSPIDList,
|
ssp_ids_data: SSPIDList,
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
current_user: Users = Depends(require_admin),
|
current_user: AppUser = Depends(require_admin),
|
||||||
):
|
):
|
||||||
user_service = UserService(db)
|
user_service = UserService(db)
|
||||||
success = await user_service.set_many_ssp(user_id, ssp_ids_data.ssp_ids, current_user)
|
success = await user_service.set_many_ssp(user_id, ssp_ids_data.ssp_ids, current_user)
|
||||||
@ -72,7 +72,7 @@ async def unset_many_ssp(
|
|||||||
user_id: int,
|
user_id: int,
|
||||||
ssp_ids_data: SSPIDList,
|
ssp_ids_data: SSPIDList,
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
current_user: Users = Depends(require_admin),
|
current_user: AppUser = Depends(require_admin),
|
||||||
):
|
):
|
||||||
user_service = UserService(db)
|
user_service = UserService(db)
|
||||||
success = await user_service.unset_many_ssp(
|
success = await user_service.unset_many_ssp(
|
||||||
@ -88,7 +88,7 @@ async def unset_many_ssp(
|
|||||||
async def get_user(
|
async def get_user(
|
||||||
user_id: int,
|
user_id: int,
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
current_user: Users = Depends(require_admin),
|
current_user: AppUser = Depends(require_admin),
|
||||||
):
|
):
|
||||||
user_service = UserService(db)
|
user_service = UserService(db)
|
||||||
user = await user_service.get(user_id, current_user)
|
user = await user_service.get(user_id, current_user)
|
||||||
@ -104,7 +104,7 @@ async def get_user(
|
|||||||
async def create_user(
|
async def create_user(
|
||||||
user_data: UserCreate,
|
user_data: UserCreate,
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
current_user: Users = Depends(require_admin),
|
current_user: AppUser = Depends(require_admin),
|
||||||
):
|
):
|
||||||
user_service = UserService(db)
|
user_service = UserService(db)
|
||||||
user = await user_service.create_user(user_data=user_data, creator=current_user)
|
user = await user_service.create_user(user_data=user_data, creator=current_user)
|
||||||
@ -116,7 +116,7 @@ async def update_user(
|
|||||||
user_id: int,
|
user_id: int,
|
||||||
user_data: UserUpdate,
|
user_data: UserUpdate,
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
current_user: Users = Depends(require_admin),
|
current_user: AppUser = Depends(require_admin),
|
||||||
):
|
):
|
||||||
user_service = UserService(db)
|
user_service = UserService(db)
|
||||||
user = await user_service.update_user(
|
user = await user_service.update_user(
|
||||||
@ -131,7 +131,7 @@ async def update_user(
|
|||||||
async def delete_user(
|
async def delete_user(
|
||||||
user_id: int,
|
user_id: int,
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
current_user: Users = Depends(require_admin),
|
current_user: AppUser = Depends(require_admin),
|
||||||
):
|
):
|
||||||
user_service = UserService(db)
|
user_service = UserService(db)
|
||||||
await user_service.delete_user(user_id=user_id, user=current_user)
|
await user_service.delete_user(user_id=user_id, user=current_user)
|
||||||
|
|||||||
@ -10,7 +10,7 @@ from src.db.models.role import Role
|
|||||||
from src.db.models.user_org import UserOrg
|
from src.db.models.user_org import UserOrg
|
||||||
from src.db.models.app_user import AppUser
|
from src.db.models.app_user import AppUser
|
||||||
from src.core.security import get_password_hash, verify_password
|
from src.core.security import get_password_hash, verify_password
|
||||||
# from src.domain.models import Role, OrgUnit, UserOrg, AppUser
|
|
||||||
|
|
||||||
|
|
||||||
class UserRepository:
|
class UserRepository:
|
||||||
|
|||||||
@ -32,7 +32,7 @@ def test_forms_sheet_get_not_found_error_shape(client, admin_tokens):
|
|||||||
assert response.status_code == 404
|
assert response.status_code == 404
|
||||||
payload = response.json()
|
payload = response.json()
|
||||||
assert isinstance(payload, dict)
|
assert isinstance(payload, dict)
|
||||||
assert "detail" in payload
|
assert "message" in payload
|
||||||
|
|
||||||
|
|
||||||
def test_forms_cell_update_not_found_error_shape(client, admin_tokens):
|
def test_forms_cell_update_not_found_error_shape(client, admin_tokens):
|
||||||
@ -44,7 +44,7 @@ def test_forms_cell_update_not_found_error_shape(client, admin_tokens):
|
|||||||
assert response.status_code == 404
|
assert response.status_code == 404
|
||||||
payload = response.json()
|
payload = response.json()
|
||||||
assert isinstance(payload, dict)
|
assert isinstance(payload, dict)
|
||||||
assert "detail" in payload
|
assert "message" in payload
|
||||||
|
|
||||||
|
|
||||||
def test_forms_cell_update(client, admin_tokens):
|
def test_forms_cell_update(client, admin_tokens):
|
||||||
@ -72,7 +72,7 @@ def test_forms_cells_update_not_found_error_shape(client, admin_tokens):
|
|||||||
assert response.status_code == 404
|
assert response.status_code == 404
|
||||||
payload = response.json()
|
payload = response.json()
|
||||||
assert isinstance(payload, dict)
|
assert isinstance(payload, dict)
|
||||||
assert "detail" in payload
|
assert "message" in payload
|
||||||
|
|
||||||
|
|
||||||
def test_forms_cells_update(client, admin_tokens):
|
def test_forms_cells_update(client, admin_tokens):
|
||||||
@ -104,7 +104,7 @@ def test_forms_add_line_not_found_error_shape(client, admin_tokens):
|
|||||||
assert response.status_code == 404
|
assert response.status_code == 404
|
||||||
payload = response.json()
|
payload = response.json()
|
||||||
assert isinstance(payload, dict)
|
assert isinstance(payload, dict)
|
||||||
assert "detail" in payload
|
assert "message" in payload
|
||||||
|
|
||||||
|
|
||||||
def test_forms_add_line(client, admin_tokens):
|
def test_forms_add_line(client, admin_tokens):
|
||||||
@ -130,4 +130,4 @@ def test_forms_delete_line_not_found_error_shape(client, admin_tokens):
|
|||||||
assert response.status_code == 404
|
assert response.status_code == 404
|
||||||
payload = response.json()
|
payload = response.json()
|
||||||
assert isinstance(payload, dict)
|
assert isinstance(payload, dict)
|
||||||
assert "detail" in payload
|
assert "message" in payload
|
||||||
|
|||||||
@ -104,8 +104,8 @@ def test_projects_write_invalid_report_type_error_shape(client, admin_tokens):
|
|||||||
assert response.status_code == 400
|
assert response.status_code == 400
|
||||||
payload = response.json()
|
payload = response.json()
|
||||||
assert isinstance(payload, dict)
|
assert isinstance(payload, dict)
|
||||||
assert "detail" in payload
|
assert "message" in payload
|
||||||
assert isinstance(payload["detail"], str)
|
assert isinstance(payload["message"], str)
|
||||||
|
|
||||||
|
|
||||||
def test_projects_write_report_not_found_error_shape(client, admin_tokens):
|
def test_projects_write_report_not_found_error_shape(client, admin_tokens):
|
||||||
@ -120,4 +120,4 @@ def test_projects_write_report_not_found_error_shape(client, admin_tokens):
|
|||||||
assert response.status_code == 400
|
assert response.status_code == 400
|
||||||
payload = response.json()
|
payload = response.json()
|
||||||
assert isinstance(payload, dict)
|
assert isinstance(payload, dict)
|
||||||
assert payload.get("detail") == "Отчёт не найден"
|
assert payload.get("message") == "Отчёт не найден"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user