### 🚨 Исправлено - **Удалено поле 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:
@@ -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", {
|
||||
|
||||
Reference in New Issue
Block a user