Files
remnawave-minishop/tests/test_webapp_telegram_logout.py

66 lines
2.4 KiB
Python

from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
def _read(path: str) -> str:
return (REPO_ROOT / path).read_text(encoding="utf-8")
def test_telegram_init_data_login_runs_before_manual_logout_gate():
source = _read("frontend/src/lib/webapp/webappBoot.js")
init_data_pos = source.index("const initData = getInitDataForBoot();")
manual_logout_pos = source.index("if (isManuallyLoggedOut())")
assert init_data_pos < manual_logout_pos
def test_logout_button_is_controlled_by_telegram_context():
app_source = _read("frontend/src/App.svelte")
settings_source = _read("frontend/src/webapp/screens/SettingsScreen.svelte")
assert "$: telegramMiniAppContext = hasTelegramLaunchParams();" in app_source
assert "showLogout={!telegramMiniAppContext}" in app_source
assert "export let showLogout = true;" in settings_source
assert "{#if showLogout}" in settings_source
def test_logout_handler_is_noop_inside_telegram_mini_app():
source = _read("frontend/src/lib/webapp/stores/accountStore.js")
guard_pos = source.index("if (telegramSdk.hasLaunchParams()) return;")
mark_logout_pos = source.index("markManualLogout();")
assert guard_pos < mark_logout_pos
def test_open_app_route_uses_fallback_screen_without_auth_flow():
main_source = _read("frontend/src/main.js")
app_source = _read("frontend/src/App.svelte")
screen_source = _read("frontend/src/webapp/screens/AppLaunchScreen.svelte")
assert "loadBootstrap().finally" in main_source
assert "AppLaunchScreen" in app_source
assert 'mode = isAppLaunchRoute ? "appLaunch"' in app_source
assert "window.close()" in screen_source
assert 'window.addEventListener("blur", notePageLeft)' not in screen_source
assert "CLOSE_ATTEMPT_DELAY_MS = 2500" in screen_source
assert "if (pageLeft || document.hidden) tryCloseWindow();" in screen_source
launch_guard_pos = app_source.index("if (isAppLaunchRoute) return;")
boot_pos = app_source.index("boot();", launch_guard_pos)
assert launch_guard_pos < boot_pos
def test_frontend_nginx_proxies_open_app_gateway_to_backend():
source = _read("deploy/docker/frontend/nginx.conf")
open_app_pos = source.index("location = /open-app")
fallback_pos = source.index("location / {")
block = source[open_app_pos:fallback_pos]
assert open_app_pos < fallback_pos
assert "proxy_pass http://backend:8081;" in block