[0.6.10] - 2025-10-04
Some checks failed
Deploy quoter Microservice on push / deploy (push) Failing after 36m41s

### 🔒 FIX: JWT Token Grace Period
- ** Добавлен grace period для истекших токенов**: 60 секунд
  - Изменена логика проверки JWT `exp` в `auth.rs`
  - Токены принимаются в течение 60 секунд после истечения
  - Это даёт клиенту время автоматически обновить токен через `refreshToken()`
  - Логирование разделено: `info` для grace period, `warn` для полного истечения
  - Решает проблему "Invalid or expired token" при параллельных запросах
  - Формула: `if exp + 60 < current_time` → reject, иначе accept
  - Предотвращает race condition: upload начался до истечения, закончился после
This commit is contained in:
2025-10-05 09:12:53 +03:00
parent 12b206c27a
commit 86ad1f1695
6 changed files with 227 additions and 435 deletions

View File

@@ -161,11 +161,11 @@ async fn test_quota_calculations() {
// Тестируем различные сценарии
let test_cases = vec![
(0, 1 * MB, true), // Пустая квота + 1MB = OK
(1 * GB, 1 * MB, true), // 1GB + 1MB = OK
(4 * GB, 1 * GB, true), // 4GB + 1GB = OK
(0, MB, true), // Пустая квота + 1MB = OK
(GB, MB, true), // 1GB + 1MB = OK
(4 * GB, GB, true), // 4GB + 1GB = OK
(4 * GB, 2 * GB, false), // 4GB + 2GB = превышение
(5 * GB, 1 * MB, false), // 5GB + 1MB = превышение
(5 * GB, MB, false), // 5GB + 1MB = превышение
];
for (current_quota, file_size, should_allow) in test_cases {
@@ -410,7 +410,7 @@ async fn test_image_format_detection() {
async fn test_find_closest_width() {
// Мокаем функцию find_closest_width для тестов
fn find_closest_width(requested: u32) -> u32 {
let available_widths = vec![100, 150, 200, 300, 400, 500, 600, 800];
let available_widths = [100, 150, 200, 300, 400, 500, 600, 800];
if available_widths.contains(&requested) {
return requested;