/
wonkxe
/
Contact_and_task
Обзор
Документация
Войти
/
wonkxe
/
Contact_and_task
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/tests/test_auth.py
107 строк
5 KB
wonkxe
1
25 май 2026, 13:57
25 май 2026, 13:57
8620ad8
Код
Авторство
О чём код?
""" Тесты для контроллера авторизации (Этап 2). Проверяет регистрацию, вход и смену пароля. """ import sys import os # Добавляем корень проекта в путь поиска модулей sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) from src.Controllers.auth_controller import register_user, login_user, change_password from src.Connection.connect import db from src.Models.user import User def run_tests(): print("Запуск тестов авторизации...") # Подготовка БД db.connect() # Создаем таблицу, если нет (safe=True игнорирует ошибку, если таблица есть) db.create_tables([User], safe=True) # Очистка таблицы перед тестом для чистоты эксперимента User.delete().execute() passed = 0 total = 7 # Переменная для хранения ID пользователя, созданного в Тесте 1 test_user_id = None # --- Тест 1: Успешная регистрация --- success, msg, uid = register_user("alice", "pass123", "pass123") if success and uid is not None: print("[PASS] Тест 1: Успешная регистрация") passed += 1 test_user_id = uid # Сохраняем ID для последующих тестов else: print(f"[FAIL] Тест 1: Ожидался успех, получено: {msg}") # --- Тест 2: Регистрация с существующим логином --- success, msg, uid = register_user("alice", "pass123", "pass123") if not success and "существует" in msg.lower(): print("[PASS] Тест 2: Регистрация с существующим логином") passed += 1 else: print(f"[FAIL] Тест 2: Ожидалась ошибка 'существует', получено: {msg}") # --- Тест 3: Регистрация с несовпадающими паролями --- success, msg, uid = register_user("bob", "pass123", "pass456") if not success and "совпадают" in msg.lower(): print("[PASS] Тест 3: Несовпадающие пароли") passed += 1 else: print(f"[FAIL] Тест 3: Ожидалась ошибка 'совпадают', получено: {msg}") # --- Тест 4: Успешный вход --- success, msg, uid = login_user("alice", "pass123") if success and uid is not None: print("[PASS] Тест 4: Успешный вход") passed += 1 # Можно обновить test_user_id, если вдруг он не сохранился в Тесте 1 if test_user_id is None: test_user_id = uid else: print(f"[FAIL] Тест 4: Ожидался успех, получено: {msg}") # --- Тест 5: Неудачный вход (неверный пароль) --- success, msg, uid = login_user("alice", "wrongpass") if not success: print("[PASS] Тест 5: Неудачный вход") passed += 1 else: print(f"[FAIL] Тест 5: Ожидался отказ, получено: {msg}") # --- Тест 6: Смена пароля --- # Используем сохраненный test_user_id if test_user_id is None: print("[FAIL] Тест 6: Пропущен, так как не удалось получить ID пользователя в предыдущих тестах") else: success, msg = change_password(test_user_id, "pass123", "newpass456") if success: print("[PASS] Тест 6: Смена пароля") passed += 1 else: print(f"[FAIL] Тест 6: Ожидался успех, получено: {msg} (ID пользователя: {test_user_id})") # --- Тест 7: Вход с новым паролем --- success, msg, uid = login_user("alice", "newpass456") if success and uid is not None: print("[PASS] Тест 7: Вход с новым паролем") passed += 1 else: print(f"[FAIL] Тест 7: Ожидался успех, получено: {msg}") print(f"\nРезультат: {passed}/{total} тестов пройдено.") # Очистка после тестов (опционально) User.delete().execute() db.close() if __name__ == "__main__": run_tests()