mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
OpenSpec: разнести openspec по проектам
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Тест авторизации на Prosody 13.0 (test.nixg.ru:15222)."""
|
||||
import asyncio, sys, logging, ssl
|
||||
import slixmpp
|
||||
|
||||
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(name)s: %(message)s')
|
||||
|
||||
async def try_login(jid, password, expect_ok=True):
|
||||
class T(slixmpp.ClientXMPP):
|
||||
def __init__(self):
|
||||
super().__init__(jid, password)
|
||||
self.ok = None
|
||||
# Отключаем проверку сертификата (тестовый стенд, самоподписанный)
|
||||
self.ssl_context = ssl.create_default_context()
|
||||
self.ssl_context.check_hostname = False
|
||||
self.ssl_context.verify_mode = ssl.CERT_NONE
|
||||
self.add_event_handler('session_start', self.on_start)
|
||||
self.add_event_handler('failed_auth', self.on_fail)
|
||||
self.add_event_handler('disconnected', self.on_disc)
|
||||
self.add_event_handler('connected', self.on_conn)
|
||||
def on_conn(self, ev): print(f" [connected] {jid}")
|
||||
def on_start(self, ev):
|
||||
self.ok = True
|
||||
print(f" [AUTH OK] {jid} — session_start, full JID={self.boundjid}")
|
||||
self.disconnect()
|
||||
def on_fail(self, ev):
|
||||
self.ok = False
|
||||
print(f" [AUTH FAILED] {jid} — incorrect credentials rejected correctly")
|
||||
self.disconnect()
|
||||
def on_disc(self, ev):
|
||||
if self.ok is None:
|
||||
print(f" [DISCONNECTED before auth] {jid} reason={ev}")
|
||||
x = T()
|
||||
# Явно указываем хост/порт тестового сервера (15222 = нестандартный c2s)
|
||||
try:
|
||||
await x.connect('127.0.0.1', 15222)
|
||||
await asyncio.wait_for(x.wait_until('session_start' if expect_ok else 'failed_auth'), 15)
|
||||
except asyncio.TimeoutError:
|
||||
print(f" [TIMEOUT] {jid} — no auth result in 15s")
|
||||
x.disconnect()
|
||||
except Exception as e:
|
||||
print(f" [ERROR] {jid}: {type(e).__name__}: {e}")
|
||||
finally:
|
||||
try: x.disconnect()
|
||||
except: pass
|
||||
|
||||
async def main():
|
||||
print("=== 1. Верный пароль: testuser1@test.nixg.ru ===")
|
||||
await try_login("testuser1@test.nixg.ru", "pass12345", True)
|
||||
print("=== 2. Верный пароль: testuser2@test.nixg.ru ===")
|
||||
await try_login("testuser2@test.nixg.ru", "pass12345", True)
|
||||
print("=== 3. Админ ===")
|
||||
await try_login("admin@test.nixg.ru", "adminpass123", True)
|
||||
print("=== 4. НЕВЕРНЫЙ пароль (должен отказать) ===")
|
||||
await try_login("testuser1@test.nixg.ru", "WRONG", False)
|
||||
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user