/
semak
/
py-client-generator
Обзор
Документация
Войти
/
semak
/
py-client-generator
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
tests/test_base.py
114 строк
4 KB
semak
ruff
17 июн 2026, 17:15
17 июн 2026, 17:15
783585d
Код
Авторство
О чём код?
"""Тесты для базовых классов клиента (base.py).""" import httpx import pytest from pydantic import BaseModel from py_client_generator.base import ( BearerAuth, BasicAuth, ApiKeyAuth, ClientHttpError, BaseClient, ClientParseError, ) class SampleModel(BaseModel): id: int name: str class TestAuth: def test_bearer_auth(self): auth = BearerAuth(bearer_token="my_token_123") assert auth.headers == {"Authorization": "Bearer my_token_123"} def test_bearer_auth_repr(self): auth = BearerAuth(bearer_token="short") assert "BearerAuth" in repr(auth) def test_basic_auth(self): auth = BasicAuth(username="user", password="pass") assert auth.headers["Authorization"].startswith("Basic ") def test_basic_auth_repr(self): auth = BasicAuth(username="user", password="pass") assert "user" in repr(auth) def test_api_key_auth_header(self): auth = ApiKeyAuth(api_key="key123", header_name="X-API-Key", location="header") assert auth.headers == {"X-API-Key": "key123"} def test_api_key_auth_query(self): auth = ApiKeyAuth(api_key="key123", header_name="api_key", location="query") assert auth.query_params == {"api_key": "key123"} assert auth.headers == {} def test_api_key_auth_cookie(self): auth = ApiKeyAuth(api_key="key123", header_name="session", location="cookie") assert auth.cookies == {"session": "key123"} def test_api_key_invalid_location(self): with pytest.raises(ValueError, match="Неподдерживаемое расположение"): ApiKeyAuth(api_key="key", location="invalid") class TestClientHttpError: def test_parse_with_model(self): response = httpx.Response( 200, request=httpx.Request("GET", "http://test"), json={"id": 1, "name": "test"}, ) parsed = BaseClient.parse( response=response, status_model_map={200: SampleModel}, default_model=None, ) assert isinstance(parsed, SampleModel) assert parsed.id == 1 assert parsed.name == "test" def test_parse_http_error_with_model(self): request = httpx.Request("GET", "http://test") response = httpx.Response( 404, request=request, json={"id": 0, "name": "not found"} ) err = ClientHttpError( "HTTPError", request=request, response=response, status_model_map={404: SampleModel}, ) assert isinstance(err.parsed_data, SampleModel) assert err.response.status_code == 404 def test_parse_http_error_no_model(self): request = httpx.Request("GET", "http://test") response = httpx.Response(500, request=request, text="server error") err = ClientHttpError( "HTTPError", request=request, response=response, status_model_map={}, ) assert err.parsed_data is None def test_raise_on_bad_status(self): response = httpx.Response( 400, request=httpx.Request("GET", "http://test"), text="bad request" ) with pytest.raises(ClientHttpError): BaseClient.parse( response=response, status_model_map={200: SampleModel}, default_model=None, ) def test_raise_nothing_to_parse(self): response = httpx.Response( 204, request=httpx.Request("GET", "http://test"), text="" ) with pytest.raises(ClientParseError): BaseClient.parse(response=response, status_model_map={}, default_model=None)