Initial commit: site monorepo with API, web, and infra.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
влад
2026-07-16 10:11:54 +03:00
co-authored by Cursor
commit 016910ffb7
447 changed files with 73972 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
from __future__ import annotations
import pytest
from fastapi import HTTPException
from fastapi.security import HTTPAuthorizationCredentials
from app.core.dependencies import get_current_user, require_admin, require_superuser
from app.core.security import create_access_token, hash_password
from app.modules.users.repository import create_user, update_user
def test_get_current_user_rejects_missing_credentials():
with pytest.raises(HTTPException) as exc:
get_current_user(None)
assert exc.value.status_code == 401
def test_get_current_user_rejects_pending_user():
user = create_user("pending-dep@example.com", hash_password("Valid123"), status="pending")
token = create_access_token(user.id, user.role, user.is_superuser)
credentials = HTTPAuthorizationCredentials(scheme="Bearer", credentials=token)
with pytest.raises(HTTPException) as exc:
get_current_user(credentials)
assert exc.value.status_code == 403
assert exc.value.detail == "EMAIL_NOT_VERIFIED"
def test_get_current_user_rejects_blocked_user():
user = create_user("blocked-dep@example.com", hash_password("Valid123"), status="active")
user.status = "blocked"
update_user(user)
token = create_access_token(user.id, user.role, user.is_superuser)
credentials = HTTPAuthorizationCredentials(scheme="Bearer", credentials=token)
with pytest.raises(HTTPException) as exc:
get_current_user(credentials)
assert exc.value.status_code == 403
assert exc.value.detail == "ACCOUNT_BLOCKED"
def test_get_current_user_rejects_invalid_token():
credentials = HTTPAuthorizationCredentials(scheme="Bearer", credentials="not-a-jwt")
with pytest.raises(HTTPException) as exc:
get_current_user(credentials)
assert exc.value.status_code == 401
assert exc.value.detail == "INVALID_TOKEN"
def test_get_current_user_rejects_unknown_user():
token = create_access_token("missing-user-id", "user", False)
credentials = HTTPAuthorizationCredentials(scheme="Bearer", credentials=token)
with pytest.raises(HTTPException) as exc:
get_current_user(credentials)
assert exc.value.status_code == 401
def test_require_admin_rejects_regular_user():
user = create_user("regular-dep@example.com", hash_password("Valid123"), role="user", status="active")
with pytest.raises(HTTPException) as exc:
require_admin(user)
assert exc.value.status_code == 403
def test_require_superuser_rejects_non_super_admin():
user = create_user("ops-dep@example.com", hash_password("Valid123"), role="admin", status="active")
with pytest.raises(HTTPException) as exc:
require_superuser(user)
assert exc.value.status_code == 403
assert exc.value.detail == "SUPERUSER_ONLY"