All checks were successful
continuous-integration/drone/push Build is passing
72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
"""
|
|
Basic Unit Tests for Women's Safety App Backend
|
|
"""
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
|
|
|
|
def test_basic_health_check():
|
|
"""Базовый тест работоспособности"""
|
|
# Простая проверка что модули импортируются
|
|
import fastapi
|
|
import redis
|
|
import sqlalchemy
|
|
|
|
assert True # Если дошли сюда, то импорты работают
|
|
|
|
|
|
def test_basic_functionality():
|
|
"""Тест базовой функциональности"""
|
|
from fastapi import FastAPI
|
|
|
|
app = FastAPI()
|
|
|
|
@app.get("/health")
|
|
def health():
|
|
return {"status": "ok"}
|
|
|
|
client = TestClient(app)
|
|
response = client.get("/health")
|
|
assert response.status_code == 200
|
|
assert response.json() == {"status": "ok"}
|
|
|
|
|
|
def test_environment_variables():
|
|
"""Тест переменных окружения"""
|
|
import os
|
|
|
|
# Проверяем что переменные окружения доступны
|
|
database_url = os.getenv("DATABASE_URL")
|
|
redis_url = os.getenv("REDIS_URL")
|
|
jwt_secret = os.getenv("JWT_SECRET_KEY")
|
|
|
|
assert database_url is not None
|
|
assert redis_url is not None
|
|
assert jwt_secret is not None
|
|
|
|
|
|
def test_pydantic_models():
|
|
"""Тест Pydantic моделей"""
|
|
from pydantic import BaseModel
|
|
|
|
class TestModel(BaseModel):
|
|
name: str
|
|
age: int
|
|
|
|
model = TestModel(name="Test", age=25)
|
|
assert model.name == "Test"
|
|
assert model.age == 25
|
|
|
|
|
|
def test_password_hashing():
|
|
"""Тест хеширования паролей"""
|
|
from passlib.context import CryptContext
|
|
|
|
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
|
|
|
|
password = "testpassword123"
|
|
hashed = pwd_context.hash(password)
|
|
|
|
assert pwd_context.verify(password, hashed)
|
|
assert not pwd_context.verify("wrongpassword", hashed)
|