Some checks failed
Tests / Backend Tests (Python) (3.10) (push) Has been cancelled
Tests / Backend Tests (Python) (3.11) (push) Has been cancelled
Tests / Backend Tests (Python) (3.12) (push) Has been cancelled
Tests / Frontend Tests (JS) (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / All Tests Passed (push) Has been cancelled
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import pytest
|
|
from datetime import datetime, timedelta, timezone
|
|
from unittest.mock import AsyncMock, patch
|
|
|
|
from app.models.terminal_session import TerminalSession, SESSION_STATUS_ACTIVE
|
|
|
|
|
|
class TestTerminalConnectPage:
|
|
@pytest.mark.asyncio
|
|
async def test_connect_page_renders_html(self, client, db_session):
|
|
now = datetime.now(timezone.utc)
|
|
sess = TerminalSession(
|
|
id="s" * 64,
|
|
host_id="host-1",
|
|
host_name="test-host",
|
|
host_ip="127.0.0.1",
|
|
user_id="user-1",
|
|
username="testuser",
|
|
token_hash="x" * 64,
|
|
ttyd_port=7680,
|
|
ttyd_pid=123,
|
|
mode="embedded",
|
|
status=SESSION_STATUS_ACTIVE,
|
|
created_at=now,
|
|
last_seen_at=now,
|
|
expires_at=now + timedelta(minutes=10),
|
|
)
|
|
db_session.add(sess)
|
|
await db_session.commit()
|
|
|
|
with patch("app.services.terminal_service.terminal_service.verify_token", return_value=True), \
|
|
patch("app.services.terminal_service.terminal_service.is_session_process_alive", new=AsyncMock(return_value=True)):
|
|
resp = await client.get(f"/api/terminal/connect/{sess.id}?token=dummy")
|
|
|
|
assert resp.status_code == 200
|
|
assert "<html" in resp.text.lower()
|
|
assert "terminal" in resp.text.lower()
|