import datetime from minecraft_stack import _access_state, _relay_diagnostics def test_session_and_join_counters(): lines = [ '[2026-09-27 16:00:00] friends> time=now level=INFO msg="xbox live session created" sessionID=private', '[2026-09-27 16:00:01] friends> time=now level=INFO msg="session is live - should now be visible on the friends tab" sessionID=private', '[2026-09-27 16:01:00] friends> time=now level=INFO msg="player authenticated via xbox live" xuid=private', '[2026-09-27 16:01:01] friends> time=now level=ERROR msg="failed to dial backend" err="connection refused"', ] result = _relay_diagnostics(lines) assert result['session_live'] assert result['last_live_at'] == '2026-09-27 16:00:01' assert result['join_attempts'] == 1 assert result['backend_joins'] == 0 assert result['backend_failures'] == 1 assert result['last_error_category'] == 'connection_refused' assert 'private' not in str(result) def test_session_ended_and_recovered(): lines = [ '[2026-09-27 16:00:00] friends> level=INFO msg="session is live - should now be visible on the friends tab"', '[2026-09-27 16:02:00] friends> level=ERROR msg="session ended, restarting" err="403: owner isn\'t active"', ] result = _relay_diagnostics(lines) assert not result['session_live'] assert result['session_failures'] == 1 assert result['last_error_category'] == 'owner_inactive' lines.append('[2026-09-27 16:04:00] friends> level=INFO msg="session is live - should now be visible on the friends tab"') assert _relay_diagnostics(lines)['session_live'] def test_access_grace_and_degraded_state(): now = datetime.datetime(2026, 9, 27, 16, 30, 0) live = {"session_live": True, "last_session_event_at": "2026-09-27 16:15:00"} ended = {"session_live": False, "last_session_event_at": "2026-09-27 16:29:00"} assert _access_state("starting", None, ended, now) == "starting" assert _access_state("running", None, live, now) == "ready" assert _access_state("running", None, ended, now) == "recovering" ended["last_session_event_at"] = "2026-09-27 16:25:00" assert _access_state("running", None, ended, now) == "degraded" if __name__ == '__main__': test_session_and_join_counters() test_session_ended_and_recovered() test_access_grace_and_degraded_state() print('PASS relay diagnostics')