[0.9.13] - 2025-08-27
Some checks failed
Deploy on push / deploy (push) Failing after 3m6s

### 🚨 Исправлено
- **Удалено поле username из модели Author**: Поле `username` больше не является частью модели `Author`
  - Убрано свойство `@property def username` из `orm/author.py`
  - Обновлены все сервисы для использования `email` или `slug` вместо `username`
  - Исправлены резолверы для исключения `username` при обработке данных автора
  - Поле `username` теперь используется только в JWT токенах для совместимости

### 🧪 Исправлено
- **E2E тесты админ-панели**: Полностью переработаны E2E тесты для работы с реальным API
  - Тесты теперь делают реальные HTTP запросы к GraphQL API
  - Бэкенд для тестов использует выделенную тестовую БД (`test_e2e.db`)
  - Создан фикстура `backend_server` для запуска тестового сервера
  - Добавлен фикстура `create_test_users_in_backend_db` для регистрации пользователей через API
  - Убраны несуществующие GraphQL запросы (`get_community_stats`)
  - Тесты корректно работают с системой ролей и правами администратора

### �� Техническое
- **Рефакторинг аутентификации**: Упрощена логика работы с пользователями
  - Убраны зависимости от несуществующих полей в ORM моделях
  - Обновлены сервисы аутентификации для корректной работы без `username`
  - Исправлены все места использования `username` в коде
- **Улучшена тестовая инфраструктура**:
  - Тесты теперь используют реальный HTTP API вместо прямых DB проверок
  - Правильная изоляция тестовых данных через отдельную БД
  - Корректная работа с системой ролей и правами
This commit is contained in:
2025-08-27 12:15:01 +03:00
parent eef2ae1d5e
commit 4d42e01bd0
22 changed files with 1621 additions and 336 deletions

View File

@@ -161,10 +161,23 @@ class TestAuthInternalFixes:
@pytest.mark.asyncio
async def test_verify_internal_auth_success(self, mock_verify, db_session, test_users):
"""Тест успешной верификации внутренней авторизации"""
# Создаем CommunityAuthor для тестового пользователя
from orm.community import CommunityAuthor
# Создаем CommunityAuthor для тестового пользователя в другом сообществе
from orm.community import CommunityAuthor, Community
# Создаем новое сообщество для теста
test_community = Community(
id=999,
name="Test Community for Internal Auth",
slug="test-internal-auth",
desc="Test community for internal auth testing",
created_by=test_users[0].id
)
db_session.add(test_community)
db_session.commit()
# Создаем CommunityAuthor в новом сообществе
ca = CommunityAuthor(
community_id=1,
community_id=test_community.id,
author_id=test_users[0].id,
roles="reader,author"
)
@@ -434,14 +447,25 @@ class TestIntegration:
"""Полный тест рабочего процесса авторизации"""
user = test_users[0]
# 1. Создаем CommunityAuthor
ca = CommunityAuthor(
community_id=test_community.id,
author_id=user.id,
roles="reader"
)
db_session.add(ca)
db_session.commit()
# 1. Проверяем существующие роли или создаем новые
existing_ca = db_session.query(CommunityAuthor).where(
CommunityAuthor.community_id == test_community.id,
CommunityAuthor.author_id == user.id
).first()
if existing_ca:
ca = existing_ca
print(f"✅ Используем существующую роль: {ca.roles}")
else:
# Создаем CommunityAuthor
ca = CommunityAuthor(
community_id=test_community.id,
author_id=user.id,
roles="reader"
)
db_session.add(ca)
db_session.commit()
print(f"✅ Создана новая роль: {ca.roles}")
# 2. Добавляем OAuth данные
user.set_oauth_account("google", {