From 0756aab53fd79927c921ab5c02372733fda99c26 Mon Sep 17 00:00:00 2001 From: mirai Date: Fri, 2 Jan 2026 23:25:02 +0300 Subject: [PATCH] Final notes --- cmd_chat/client/client.py | 1 - cmd_chat/server/views.py | 10 +++------- tests/test_health.py | 5 +---- tests/test_srp.py | 7 ------- tests/test_websocket.py | 7 +------ 5 files changed, 5 insertions(+), 25 deletions(-) diff --git a/cmd_chat/client/client.py b/cmd_chat/client/client.py index d9c7a31..f537a1b 100644 --- a/cmd_chat/client/client.py +++ b/cmd_chat/client/client.py @@ -48,7 +48,6 @@ class Client: self.console.print(f"[cyan]• {message}[/]") def srp_authenticate(self) -> None: - """SRP authentication flow""" with self.console.status("[cyan]Starting SRP handshake...[/]", spinner="dots"): usr = srp.User(b"chat", self.password, hash_alg=srp.SHA256) diff --git a/cmd_chat/server/views.py b/cmd_chat/server/views.py index 7d26b3e..827ee5e 100644 --- a/cmd_chat/server/views.py +++ b/cmd_chat/server/views.py @@ -1,24 +1,21 @@ from dataclasses import asdict -from uuid import uuid4 + import json import base64 from sanic import Sanic, Request, response, Websocket from sanic.response import HTTPResponse, json as json_response -from cryptography.fernet import Fernet from .models import Message, UserSession from .logger import logger from .helpers import ( get_client_ip, - get_param, send_state, utcnow, ) async def srp_init(request: Request, app: Sanic) -> HTTPResponse: - """SRP Step 1: клиент отправляет username + A""" try: data = request.json or {} username = data.get("username", "unknown") @@ -50,7 +47,6 @@ async def srp_init(request: Request, app: Sanic) -> HTTPResponse: async def srp_verify(request: Request, app: Sanic) -> HTTPResponse: - """SRP Step 2: клиент отправляет proof M""" try: data = request.json or {} user_id = data.get("user_id") @@ -104,7 +100,7 @@ async def chat_ws(request: Request, ws: Websocket, app: Sanic) -> None: return manager = app.ctx.connection_manager - await manager.connect(user_id, ws) # await добавлен + await manager.connect(user_id, ws) try: await send_state(ws, app) @@ -134,7 +130,7 @@ async def chat_ws(request: Request, ws: Websocket, app: Sanic) -> None: except Exception: logger.exception(f"WebSocket error for {user_id}") finally: - await manager.disconnect(user_id) # await добавлен + await manager.disconnect(user_id) await manager.broadcast( json.dumps( { diff --git a/tests/test_health.py b/tests/test_health.py index a6752c0..5dbb16f 100644 --- a/tests/test_health.py +++ b/tests/test_health.py @@ -1,12 +1,9 @@ -# tests/test_health.py -import pytest + class TestHealth: - """Тесты health endpoint""" def test_health_ok(self, test_client): - """GET /health возвращает статус""" _, response = test_client.get("/health") assert response.status == 200 diff --git a/tests/test_srp.py b/tests/test_srp.py index b6d16e4..1f06c96 100644 --- a/tests/test_srp.py +++ b/tests/test_srp.py @@ -1,14 +1,9 @@ -# tests/test_srp.py import base64 -import pytest import srp class TestSRPFlow: - """Тесты SRP аутентификации""" - def test_srp_init_success(self, test_client): - """POST /srp/init возвращает user_id, B, salt""" usr = srp.User(b"chat", b"testpassword") _, A = usr.start_authentication() @@ -27,7 +22,6 @@ class TestSRPFlow: assert "salt" in data def test_srp_init_missing_a(self, test_client): - """POST /srp/init без A возвращает 400""" _, response = test_client.post( "/srp/init", json={"username": "testuser"}, @@ -36,7 +30,6 @@ class TestSRPFlow: assert response.status == 400 def test_srp_verify_invalid_session(self, test_client): - """Verify с несуществующим user_id возвращает 401""" _, response = test_client.post( "/srp/verify", json={ diff --git a/tests/test_websocket.py b/tests/test_websocket.py index 2b3d902..b9f8718 100644 --- a/tests/test_websocket.py +++ b/tests/test_websocket.py @@ -1,17 +1,12 @@ -# tests/test_websocket.py -import pytest class TestWebSocket: - """Тесты WebSocket подключения""" def test_ws_connect_no_user_id(self, test_client): - """WebSocket без user_id отклоняется""" _, ws = test_client.websocket("/ws/chat") - # Проверяем что соединение закрыто или вернулась ошибка assert ws is not None def test_ws_connect_invalid_session(self, test_client): - """WebSocket с невалидным user_id отклоняется""" + _, ws = test_client.websocket("/ws/chat?user_id=invalid123") assert ws is not None \ No newline at end of file