""" E2E тесты аутентификации. """ import pytest from kwork_api import KworkClient from kwork_api.errors import KworkAuthError @pytest.mark.e2e async def test_login_success(require_credentials): """E2E: Успешная аутентификация.""" client = await KworkClient.login( username=require_credentials["username"], password=require_credentials["password"] ) try: assert client.token is not None assert len(client.token) > 0 finally: await client.close() @pytest.mark.e2e async def test_login_invalid_credentials(): """E2E: Неверные credentials.""" with pytest.raises(KworkAuthError): await KworkClient.login(username="invalid_user_12345", password="invalid_pass_12345") @pytest.mark.skip(reason="Kwork API (api.kwork.ru) requires separate API token, cookies only work for kwork.ru web") @pytest.mark.e2e async def test_restore_session(require_credentials): """E2E: Восстановление сессии из cookies. NOTE: Currently fails because Kwork separates authentication: - kwork.ru (web): accepts cookies (slrememberme) - api.kwork.ru (API): requires separate API token Workaround: Just call login() each time - it's fast and reliable. """ # First login client1 = await KworkClient.login( username=require_credentials["username"], password=require_credentials["password"] ) credentials = client1.credentials # Get all cookies await client1.close() # Restore from credentials (all cookies) client2 = KworkClient(cookies=credentials) try: user = await client2.user.get_info() assert user["username"] == require_credentials["username"] finally: await client2.close()