[0.6.1] - 2025-09-02
### 🚀 Изменено - Упрощение архитектуры - **Генерация миниатюр**: Полностью удалена из Quoter, теперь управляется Vercel Edge API - **Очистка legacy кода**: Удалены все функции генерации миниатюр и сложность - **Документация**: Сокращена с 17 файлов до 7, следуя принципам KISS/DRY - **Смена фокуса**: Quoter теперь сосредоточен на upload + storage, Vercel обрабатывает миниатюры - **Логирование запросов**: Добавлена аналитика источников для оптимизации CORS whitelist - **Реализация таймаутов**: Добавлены настраиваемые таймауты для S3, Redis и внешних операций - **Упрощенная безопасность**: Удален сложный rate limiting, оставлена только необходимая защита upload - **Vercel интеграция**: Добавлена поддержка Vercel Edge API с CORS и оптимизированными заголовками - **Redis graceful fallback**: Приложение теперь работает без Redis с предупреждениями вместо паники - **Умная логика ответов**: Автоматическое определение Vercel запросов и оптимизированные заголовки - **Консолидация документации**: Объединены 4 Vercel документа в один comprehensive guide ### 📝 Обновлено - Консолидирована документация в практическую структуру: - Основной README.md с быстрым стартом - docs/SETUP.md для конфигурации и развертывания - Упрощенный features.md с фокусом на основную функциональность - docs/vercel-frontend-migration.md - единый comprehensive guide для Vercel интеграции - Добавлен акцент на Vercel по всему коду и документации - Обновлены URL patterns в документации: quoter.discours.io → files.dscrs.site ### 🗑️ Удалено - Избыточные файлы документации (api-reference, deployment, development, и т.д.) - Дублирующийся контент в нескольких документах - Излишне детальная документация для простого файлового прокси - 4 отдельных Vercel документа: vercel-thumbnails.md, vercel-integration.md, hybrid-architecture.md, vercel-og-integration.md 💋 **Упрощение**: KISS принцип применен - убрали избыточность, оставили суть.
This commit is contained in:
@@ -1,39 +1,5 @@
|
||||
use actix_web::{App, HttpResponse, test, web};
|
||||
|
||||
/// Простой тест health check
|
||||
#[actix_web::test]
|
||||
async fn test_health_check() {
|
||||
let app = test::init_service(App::new().route(
|
||||
"/",
|
||||
web::get().to(|req: actix_web::HttpRequest| async move {
|
||||
match req.method().as_str() {
|
||||
"GET" => Ok::<HttpResponse, actix_web::Error>(
|
||||
HttpResponse::Ok().content_type("text/plain").body("ok"),
|
||||
),
|
||||
_ => {
|
||||
Ok::<HttpResponse, actix_web::Error>(HttpResponse::MethodNotAllowed().finish())
|
||||
}
|
||||
}
|
||||
}),
|
||||
))
|
||||
.await;
|
||||
|
||||
// Тестируем GET запрос
|
||||
let req = test::TestRequest::get().uri("/").to_request();
|
||||
|
||||
let resp = test::call_service(&app, req).await;
|
||||
assert!(resp.status().is_success());
|
||||
|
||||
let body = test::read_body(resp).await;
|
||||
assert_eq!(body, "ok");
|
||||
|
||||
// Тестируем POST запрос (должен вернуть 405)
|
||||
let req = test::TestRequest::post().uri("/").to_request();
|
||||
|
||||
let resp = test::call_service(&app, req).await;
|
||||
assert_eq!(resp.status(), actix_web::http::StatusCode::NOT_FOUND);
|
||||
}
|
||||
|
||||
/// Тест для проверки JSON сериализации/десериализации
|
||||
#[test]
|
||||
async fn test_json_serialization() {
|
||||
|
||||
Reference in New Issue
Block a user