Merge pull request 'refactor tests for src.db.models... and for new code, message, field error response' (#7) from future/AURORA-1007 into test
Reviewed-on: #7
This commit is contained in:
commit
05d1f2afb0
@ -5,7 +5,8 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from src.core.config import settings
|
||||
from src.core.security import verify_token
|
||||
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
|
||||
|
||||
security = HTTPBearer()
|
||||
@ -16,7 +17,7 @@ if settings.DEBUG:
|
||||
async def get_current_user(
|
||||
credentials: HTTPAuthorizationCredentials = Depends(security),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
) -> Users:
|
||||
) -> AppUser:
|
||||
token = credentials.credentials
|
||||
payload = verify_token(token)
|
||||
if payload is None:
|
||||
@ -52,7 +53,7 @@ else:
|
||||
async def get_current_user(
|
||||
user: UserInfo = Depends(get_user_dependency),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
) -> Users:
|
||||
) -> AppUser:
|
||||
user_repo = UserRepository(db)
|
||||
db_user = await user_repo.get_by_email(user.email)
|
||||
if db_user is None:
|
||||
@ -64,22 +65,22 @@ else:
|
||||
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
|
||||
|
||||
|
||||
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),
|
||||
) -> Users:
|
||||
) -> AppUser:
|
||||
|
||||
user_repo = UserRepository(db)
|
||||
await user_repo.set_app_user_id(current_user.id)
|
||||
return current_user
|
||||
|
||||
|
||||
def require_admin(current_user: Users = Depends(get_current_active_user)) -> Users:
|
||||
if current_user.role_id != UserRole.ADMIN:
|
||||
def require_admin(current_user: AppUser = Depends(get_current_active_user)) -> AppUser:
|
||||
if current_user.role_id != UserRoleEnum.ADMIN:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail="Недостаточно прав",
|
||||
@ -87,11 +88,11 @@ def require_admin(current_user: Users = Depends(get_current_active_user)) -> Use
|
||||
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 [
|
||||
UserRole.ADMIN,
|
||||
UserRole.EXECUTOR_DFIP,
|
||||
UserRole.EXECUTOR_RF,
|
||||
UserRoleEnum.ADMIN,
|
||||
UserRoleEnum.EXECUTOR_DFIP,
|
||||
UserRoleEnum.EXECUTOR_RF,
|
||||
]:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
@ -100,8 +101,8 @@ def require_executor(current_user: Users = Depends(get_current_active_user)) ->
|
||||
return current_user
|
||||
|
||||
|
||||
def require_executor_dfip(current_user: Users = Depends(get_current_active_user)) -> Users:
|
||||
if current_user.role_id not in [UserRole.ADMIN, UserRole.EXECUTOR_DFIP]:
|
||||
def require_executor_dfip(current_user: AppUser = Depends(get_current_active_user)) -> AppUser:
|
||||
if current_user.role_id not in [UserRoleEnum.ADMIN, UserRoleEnum.EXECUTOR_DFIP]:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
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.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 (
|
||||
SSPIDList,
|
||||
@ -21,7 +21,7 @@ router = APIRouter(prefix="/users", tags=["users"])
|
||||
|
||||
|
||||
@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
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ async def get_users(
|
||||
skip: int = 0,
|
||||
limit: int = 100,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: Users = Depends(require_admin),
|
||||
current_user: AppUser = Depends(require_admin),
|
||||
):
|
||||
user_service = UserService(db)
|
||||
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(
|
||||
user_id: int,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: Users = Depends(require_executor_dfip),
|
||||
current_user: AppUser = Depends(require_executor_dfip),
|
||||
):
|
||||
user_service = UserService(db)
|
||||
ssp_list = await user_service.get_many_ssp(user_id, current_user)
|
||||
@ -57,7 +57,7 @@ async def set_many_ssp(
|
||||
user_id: int,
|
||||
ssp_ids_data: SSPIDList,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: Users = Depends(require_admin),
|
||||
current_user: AppUser = Depends(require_admin),
|
||||
):
|
||||
user_service = UserService(db)
|
||||
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,
|
||||
ssp_ids_data: SSPIDList,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: Users = Depends(require_admin),
|
||||
current_user: AppUser = Depends(require_admin),
|
||||
):
|
||||
user_service = UserService(db)
|
||||
success = await user_service.unset_many_ssp(
|
||||
@ -88,7 +88,7 @@ async def unset_many_ssp(
|
||||
async def get_user(
|
||||
user_id: int,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: Users = Depends(require_admin),
|
||||
current_user: AppUser = Depends(require_admin),
|
||||
):
|
||||
user_service = UserService(db)
|
||||
user = await user_service.get(user_id, current_user)
|
||||
@ -104,7 +104,7 @@ async def get_user(
|
||||
async def create_user(
|
||||
user_data: UserCreate,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: Users = Depends(require_admin),
|
||||
current_user: AppUser = Depends(require_admin),
|
||||
):
|
||||
user_service = UserService(db)
|
||||
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_data: UserUpdate,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: Users = Depends(require_admin),
|
||||
current_user: AppUser = Depends(require_admin),
|
||||
):
|
||||
user_service = UserService(db)
|
||||
user = await user_service.update_user(
|
||||
@ -131,7 +131,7 @@ async def update_user(
|
||||
async def delete_user(
|
||||
user_id: int,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: Users = Depends(require_admin),
|
||||
current_user: AppUser = Depends(require_admin),
|
||||
):
|
||||
user_service = UserService(db)
|
||||
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.app_user import AppUser
|
||||
from src.core.security import get_password_hash, verify_password
|
||||
# from src.domain.models import Role, OrgUnit, UserOrg, AppUser
|
||||
|
||||
|
||||
|
||||
class UserRepository:
|
||||
|
||||
@ -32,7 +32,7 @@ def test_forms_sheet_get_not_found_error_shape(client, admin_tokens):
|
||||
assert response.status_code == 404
|
||||
payload = response.json()
|
||||
assert isinstance(payload, dict)
|
||||
assert "detail" in payload
|
||||
assert "message" in payload
|
||||
|
||||
|
||||
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
|
||||
payload = response.json()
|
||||
assert isinstance(payload, dict)
|
||||
assert "detail" in payload
|
||||
assert "message" in payload
|
||||
|
||||
|
||||
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
|
||||
payload = response.json()
|
||||
assert isinstance(payload, dict)
|
||||
assert "detail" in payload
|
||||
assert "message" in payload
|
||||
|
||||
|
||||
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
|
||||
payload = response.json()
|
||||
assert isinstance(payload, dict)
|
||||
assert "detail" in payload
|
||||
assert "message" in payload
|
||||
|
||||
|
||||
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
|
||||
payload = response.json()
|
||||
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
|
||||
payload = response.json()
|
||||
assert isinstance(payload, dict)
|
||||
assert "detail" in payload
|
||||
assert isinstance(payload["detail"], str)
|
||||
assert "message" in payload
|
||||
assert isinstance(payload["message"], str)
|
||||
|
||||
|
||||
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
|
||||
payload = response.json()
|
||||
assert isinstance(payload, dict)
|
||||
assert payload.get("detail") == "Отчёт не найден"
|
||||
assert payload.get("message") == "Отчёт не найден"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user