Commit Graph

55 Commits

Author SHA1 Message Date
1b48675b92 [0.9.7] - 2025-08-18
Some checks failed
Deploy on push / deploy (push) Failing after 2m22s
### 🔄 Изменения
- **SQLAlchemy KeyError** - исправление ошибки `KeyError: Reaction` при инициализации
- **Исправлена ошибка SQLAlchemy**: Устранена проблема `InvalidRequestError: When initializing mapper Mapper[Shout(shout)], expression Reaction failed to locate a name (Reaction)`

### 🧪 Тестирование
- **Исправление тестов** - адаптация к новой структуре моделей
- **RBAC инициализация** - добавление `rbac.initialize_rbac()` в `conftest.py`
- **Создан тест для getSession**: Добавлен комплексный тест `test_getSession_cookies.py` с проверкой всех сценариев
- **Покрытие edge cases**: Тесты проверяют работу с валидными/невалидными токенами, отсутствующими пользователями
- **Мокирование зависимостей**: Использование unittest.mock для изоляции тестируемого кода

### 🔧 Рефакторинг
- **Упрощена архитектура**: Убраны сложные конструкции с отложенными импортами, заменены на чистую архитектуру
- **Перемещение моделей** - `Author` и связанные модели перенесены в `orm/author.py`: Вынесены базовые модели пользователей (`Author`, `AuthorFollower`, `AuthorBookmark`, `AuthorRating`) из `orm.author` в отдельный модуль
- **Устранены циклические импорты**: Разорван цикл между `auth.core` → `orm.community` → `orm.author` через реструктуризацию архитектуры
- **Создан модуль `utils/password.py`**: Класс `Password` вынесен в utils для избежания циклических зависимостей
- **Оптимизированы импорты моделей**: Убран прямой импорт `Shout` из `orm/community.py`, заменен на строковые ссылки

### 🔧 Авторизация с cookies
- **getSession теперь работает с cookies**: Мутация `getSession` теперь может получать токен из httpOnly cookies даже без заголовка Authorization
- **Убрано требование авторизации**: `getSession` больше не требует декоратор `@login_required`, работает автономно
- **Поддержка dual-авторизации**: Токен может быть получен как из заголовка Authorization, так и из cookie `session_token`
- **Автоматическая установка cookies**: Middleware автоматически устанавливает httpOnly cookies при успешном `getSession`
- **Обновлена GraphQL схема**: `SessionInfo` теперь содержит поля `success`, `error` и опциональные `token`, `author`
- **Единообразная обработка токенов**: Все модули теперь используют централизованные функции для работы с токенами
- **Улучшена обработка ошибок**: Добавлена детальная валидация токенов и пользователей в `getSession`
- **Логирование операций**: Добавлены подробные логи для отслеживания процесса авторизации

### 📝 Документация
- **Обновлена схема GraphQL**: `SessionInfo` тип теперь соответствует новому формату ответа
- Обновлена документация RBAC
- Обновлена документация авторизации с cookies
2025-08-18 14:25:25 +03:00
9a2b792f08 refactored
Some checks failed
Deploy on push / deploy (push) Failing after 6s
2025-08-17 17:56:31 +03:00
8c363a6615 e2e-fixing
fix: убран health endpoint, E2E тест использует корневой маршрут

- Убран health endpoint из main.py (не нужен)
- E2E тест теперь проверяет корневой маршрут / вместо /health
- Корневой маршрут доступен без логина, что подходит для проверки состояния сервера
- E2E тест с браузером работает корректно

docs: обновлен отчет о прогрессе E2E теста

- Убраны упоминания health endpoint
- Указано что используется корневой маршрут для проверки серверов
- Обновлен список измененных файлов

fix: исправлены GraphQL проблемы и E2E тест с браузером

- Добавлено поле success в тип CommonResult для совместимости с фронтендом
- Обновлены резолверы community, collection, topic для возврата поля success
- Исправлен E2E тест для работы с корневым маршрутом вместо health endpoint
- E2E тест теперь запускает браузер, авторизуется, находит сообщество в таблице
- Все GraphQL проблемы с полем success решены
- E2E тест работает правильно с браузером как требовалось

fix: исправлен поиск UI элементов в E2E тесте

- Добавлен правильный поиск кнопки удаления по CSS классу _delete-button_1qlfg_300
- Добавлены альтернативные способы поиска кнопки удаления (title, aria-label, символ ×)
- Добавлен правильный поиск модального окна с множественными селекторами
- Добавлен правильный поиск кнопки подтверждения в модальном окне
- E2E тест теперь полностью работает: находит кнопку удаления, модальное окно и кнопку подтверждения
- Обновлен отчет о прогрессе с полными результатами тестирования

fix: исправлен импорт require_any_permission в resolvers/collection.py

- Заменен импорт require_any_permission с auth.decorators на services.rbac
- Бэкенд сервер теперь запускается корректно
- E2E тест полностью работает: находит кнопку удаления, модальное окно и кнопку подтверждения
- Оба сервера (бэкенд и фронтенд) работают стабильно

fix: исправлен порядок импортов в resolvers/collection.py

- Перемещен импорт require_any_permission в правильное место
- E2E тест полностью работает: находит кнопку удаления, модальное окно и кнопку подтверждения
- Сообщество не удаляется из-за прав доступа - это нормальное поведение системы безопасности

feat: настроен HTTPS для локальной разработки с mkcert
2025-08-01 04:51:06 +03:00
e7230ba63c tests-passed 2025-07-31 18:55:59 +03:00
82111ed0f6 Squashed new RBAC
All checks were successful
Deploy on push / deploy (push) Successful in 7s
2025-07-02 22:30:21 +03:00
952b294345 0.5.8-panel-upgrade-community-crud-fix
All checks were successful
Deploy on push / deploy (push) Successful in 6s
2025-06-30 21:25:26 +03:00
3327976586 Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
4070f4fcde linted+fmt
All checks were successful
Deploy on push / deploy (push) Successful in 6s
2025-05-29 12:37:39 +03:00
d3a760b6ba auth-wip 2025-05-21 01:34:02 +03:00
2d382be794 upgrade schema, resolvers, panel added 2025-05-16 09:23:48 +03:00
a4e48eb3f4 commynity-cudl
All checks were successful
Deploy on push / deploy (push) Successful in 1m5s
2024-10-21 16:42:50 +03:00
160f02e67f 0.4.5-api-update
All checks were successful
Deploy on push / deploy (push) Successful in 1m49s
2024-10-21 10:52:23 +03:00
b2fdc9a453 parser-fix
All checks were successful
Deploy on push / deploy (push) Successful in 1m9s
2024-06-11 14:46:10 +03:00
713fb4d62b 0.4.1-following-update 2024-06-05 17:45:55 +03:00
e638ad81e2 fmt+follows-refactored 2024-05-30 07:12:00 +03:00
0b4c0faa79 stat-fix 2024-04-23 15:14:59 +03:00
c25d7e3ab6 fmt 2024-04-17 18:32:23 +03:00
c301256751 precommit
All checks were successful
Deploy on push / deploy (push) Successful in 49s
2024-04-08 10:38:58 +03:00
003fa1bbac types fixes 2024-02-24 13:22:35 +03:00
214af0cf51 fmt 2024-02-21 19:45:53 +03:00
7cf702eb98 fmt
All checks were successful
Deploy to core / deploy (push) Successful in 2m0s
2024-02-21 10:27:16 +03:00
183755e637 one-logger
All checks were successful
Deploy to core / deploy (push) Successful in 1m24s
2024-02-20 19:19:46 +03:00
6d3c0ee39e isort+authfix
All checks were successful
Deploy to core / deploy (push) Successful in 1m36s
2024-02-19 14:45:55 +03:00
4a5f1d634a granian+precommit 2024-01-25 22:41:27 +03:00
c41fe8b6c9 cached-auth 2024-01-23 21:34:51 +03:00
d6dc374b01 community-stats-fix 2024-01-23 05:03:23 +03:00
a6c5243c06 viewed-service-fixes
All checks were successful
deploy / deploy (push) Successful in 1m23s
2023-12-17 23:30:20 +03:00
312900cec1 community-author-fix
All checks were successful
deploy / deploy (push) Successful in 1m41s
2023-12-17 09:17:23 +03:00
919aaa951f string-enum-fix 2023-11-30 11:40:27 +03:00
20f7c22441 0.2.16-resolvers-revision
All checks were successful
deploy / deploy (push) Successful in 2m22s
2023-11-28 10:53:48 +03:00
5f8ec549df emptybody-fix
All checks were successful
deploy / deploy (push) Successful in 2m12s
2023-11-27 21:03:59 +03:00
db76ba3733 0.2.14
Some checks failed
deploy / deploy (push) Failing after 2m1s
2023-11-22 19:38:39 +03:00
435d1e4505 new-version-0-2-13
Some checks failed
deploy / deploy (push) Failing after 1m54s
2023-11-03 13:10:22 +03:00
e151034bab fix-imports
Some checks failed
deploy / deploy (push) Failing after 1m43s
2023-10-23 17:51:13 +03:00
bf241a8fbd merged-isolated-core
Some checks failed
deploy / deploy (push) Failing after 1m46s
2023-10-23 17:47:11 +03:00
ffa3fbb252 no-sigil-here 2023-10-06 01:02:14 +03:00
400fff4ef0 schema-no-subs2 2023-10-06 00:42:34 +03:00
9942fc2558 load-by pattern, shoutscache removed 2022-11-15 05:36:30 +03:00
4c3439d241 confirm-token-fix 2022-10-23 12:33:28 +03:00
1122fe580b followers-migrated 2022-09-18 17:29:21 +03:00
3136eecd7e migration, auth, refactoring, formatting 2022-09-17 21:12:14 +03:00
71f3ac5ed6 formatted, linted, fixed 2022-09-04 20:20:38 +03:00
a89a44f660 format and lint orm 2022-09-03 13:50:14 +03:00
8aec6c6e07 refactored 2022-08-11 08:53:14 +03:00
817002b17b typingsfix 2022-07-21 19:11:39 +03:00
6cb5061ce5 wip refactoring: reactions, storages isolated 2022-07-21 14:58:50 +03:00
910f8f59e6 some fixes 2022-07-10 21:52:57 +03:00
0f6e505706 community model and resolver fixes 2022-06-28 22:40:44 +03:00
knst-kotov
f92beaaeeb return subscribed communities in user info 2022-06-12 11:45:08 +03:00
knst-kotov
39070dc359 add community subscription; unify subscription interface 2022-06-12 10:51:22 +03:00