fix: credentials property returns all cookies for session restoration

This commit is contained in:
root 2026-03-29 21:59:10 +00:00
parent 6f60830af3
commit ffb3248e8e
3 changed files with 8 additions and 11 deletions

View File

@ -162,12 +162,12 @@ class KworkClient:
return self._cookies.copy() return self._cookies.copy()
@property @property
def credentials(self) -> dict[str, str | None]: def credentials(self) -> dict[str, str]:
""" """
Учётные данные для восстановления сессии. Учётные данные для восстановления сессии.
Returns: Returns:
Словарь с token и cookies для передачи в KworkClient(). Словарь со всеми cookies (включая slrememberme и userId) для передачи в KworkClient(cookies=...).
Example: Example:
# Сохранение # Сохранение
@ -179,12 +179,9 @@ class KworkClient:
# Восстановление # Восстановление
with open("session.json") as f: with open("session.json") as f:
creds = json.load(f) creds = json.load(f)
client = KworkClient(**creds) client = KworkClient(cookies=creds)
""" """
return { return self._cookies.copy() if self._cookies else {}
"token": self._token,
"cookies": self._cookies.copy() if self._cookies else None,
}
@classmethod @classmethod
async def login( async def login(

View File

@ -31,16 +31,16 @@ async def test_login_invalid_credentials():
@pytest.mark.e2e @pytest.mark.e2e
async def test_restore_session(require_credentials): async def test_restore_session(require_credentials):
"""E2E: Восстановление сессии из токена.""" """E2E: Восстановление сессии из cookies."""
# First login # First login
client1 = await KworkClient.login( client1 = await KworkClient.login(
username=require_credentials["username"], password=require_credentials["password"] username=require_credentials["username"], password=require_credentials["password"]
) )
token = client1.token credentials = client1.credentials # Get all cookies
await client1.close() await client1.close()
# Restore from token # Restore from credentials (all cookies)
client2 = KworkClient(token=token) client2 = KworkClient(cookies=credentials)
try: try:
user = await client2.user.get_info() user = await client2.user.get_info()
assert user["username"] == require_credentials["username"] assert user["username"] == require_credentials["username"]