/
h_a_p_p_y
/
Testing
Обзор
Документация
Войти
/
h_a_p_p_y
/
Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
homework/tests/test.py
74 строки
2 KB
arina.aristova@aibb.ai
initial commit
10 янв 2026, 00:35
10 янв 2026, 00:35
ee9243c
Код
Авторство
О чём код?
import pytest from fastapi.testclient import TestClient from unittest.mock import MagicMock, patch import os from dotenv import load_dotenv load_dotenv() from backend import main, cl_shortlink, encode, decode client = TestClient(main.app) @pytest.fixture def mock_db_session(): mock_link = cl_shortlink.ShortLink(id=123, original_url="https://example.com") mock_session = MagicMock() mock_query = MagicMock() mock_filter = MagicMock() mock_session.query.return_value = mock_query mock_query.filter.return_value = mock_filter mock_filter.first.return_value = mock_link mock_session.add.return_value = None mock_session.commit.return_value = None mock_session.refresh.return_value = None return mock_session def test_create_short_link(mock_db_session): payload = {"long_url": "https://example.com"} with patch("backend.main.get_db", return_value=mock_db_session): response = client.post("/api/links", json=payload) assert response.status_code == 200 data = response.json() assert "short_url" in data assert data["short_url"].startswith("http://localhost:8000/s/") def test_redirect_short_link(mock_db_session): mock_link_id = 2 public_id = mock_link_id ^ int(os.getenv('SECRET_XOR')) short_code = encode.base62_encode(public_id) with patch("backend.main.get_db", return_value=mock_db_session): response = client.get(f"/s/{short_code}", follow_redirects=False) assert response.status_code == 302 assert response.headers["location"] == "https://example.com/" def test_invalid_short_code(mock_db_session): with patch("backend.main.get_db", return_value=mock_db_session): response = client.get("/s/invalidcode", follow_redirects=False) assert response.status_code == 404 def test_base62_encode_decode(): for i in [0, 1, 10, 123, 9999]: s = encode.base62_encode(i) n = decode.base62_decode(s) assert i == n def test_decode_xor(): value = 123 secret = 42 encoded = value ^ secret decoded = encoded ^ secret assert decoded == value