1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

Fix tests

This commit is contained in:
MoonTestUse1
2025-01-06 23:22:21 +06:00
parent f77782dabe
commit 161361609d
4 changed files with 101 additions and 38 deletions

View File

@@ -0,0 +1,36 @@
"""Test settings configuration"""
from pydantic_settings import BaseSettings, SettingsConfigDict
class TestSettings(BaseSettings):
"""Test application settings"""
PROJECT_NAME: str = "Support Service Test"
VERSION: str = "1.0.0"
API_V1_STR: str = "/api"
# Database
DATABASE_URL: str = "sqlite:///:memory:"
# JWT
SECRET_KEY: str = "test-secret-key"
ALGORITHM: str = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
# Redis
REDIS_HOST: str = "redis"
REDIS_PORT: int = 6379
# Admin
ADMIN_USERNAME: str = "admin"
ADMIN_PASSWORD: str = "admin123"
# Telegram
TELEGRAM_BOT_TOKEN: str = "test-bot-token"
TELEGRAM_CHAT_ID: str = "test-chat-id"
model_config = SettingsConfigDict(
env_file=".env.test",
env_file_encoding="utf-8",
case_sensitive=True
)
test_settings = TestSettings()

View File

@@ -8,8 +8,16 @@ from .models.employee import Employee # noqa
from .models.request import Request # noqa
from .models.token import Token # noqa
# Используем разные URL для тестов и продакшена
SQLALCHEMY_DATABASE_URL = settings.DATABASE_URL
def get_database_url():
"""Получение URL базы данных в зависимости от окружения."""
try:
from .core.test_config import test_settings
return test_settings.DATABASE_URL
except ImportError:
return settings.DATABASE_URL
# Используем правильный URL для базы данных
SQLALCHEMY_DATABASE_URL = get_database_url()
# Создаем движок с нужными параметрами
connect_args = {}

View File

@@ -2,6 +2,7 @@
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from sqlalchemy.orm import Session
from pydantic_settings import BaseSettings
from .models.base import Base
from .database import engine, SessionLocal
@@ -9,9 +10,11 @@ from .routers import admin, employees, requests, auth, statistics
from .db.init_db import init_db
from .core.config import settings
# Создаем таблицы только если не в тестовом режиме
if not settings.TESTING:
def get_application(app_settings: BaseSettings = settings) -> FastAPI:
"""Создание экземпляра приложения с заданными настройками."""
# Создаем таблицы
Base.metadata.create_all(bind=engine)
# Инициализируем базу данных
db = SessionLocal()
try:
@@ -19,37 +22,41 @@ if not settings.TESTING:
finally:
db.close()
app = FastAPI(
# Включаем автоматическое перенаправление со слэшем
redirect_slashes=True,
# Добавляем описание API
title="Support System API",
description="API для системы поддержки",
version="1.0.0"
)
app = FastAPI(
# Включаем автоматическое перенаправление со слэшем
redirect_slashes=True,
# Добавляем описание API
title="Support System API",
description="API для системы поддержки",
version="1.0.0"
)
# CORS configuration
origins = [
"http://localhost",
"http://localhost:8080",
"http://localhost:5173",
"http://127.0.0.1:5173",
"http://127.0.0.1:8080",
"http://185.139.70.62", # Добавляем ваш production домен
]
# CORS configuration
origins = [
"http://localhost",
"http://localhost:8080",
"http://localhost:5173",
"http://127.0.0.1:5173",
"http://127.0.0.1:8080",
"http://185.139.70.62", # Добавляем ваш production домен
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
expose_headers=["*"]
)
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
expose_headers=["*"]
)
# Include routers
app.include_router(auth.router, prefix="/api/auth", tags=["auth"])
app.include_router(employees.router, prefix="/api/employees", tags=["employees"])
app.include_router(requests.router, prefix="/api/requests", tags=["requests"])
app.include_router(admin.router, prefix="/api/admin", tags=["admin"])
app.include_router(statistics.router, prefix="/api/statistics", tags=["statistics"])
# Include routers
app.include_router(auth.router, prefix="/api/auth", tags=["auth"])
app.include_router(employees.router, prefix="/api/employees", tags=["employees"])
app.include_router(requests.router, prefix="/api/requests", tags=["requests"])
app.include_router(admin.router, prefix="/api/admin", tags=["admin"])
app.include_router(statistics.router, prefix="/api/statistics", tags=["statistics"])
return app
app = get_application()