test_s2_sender_nickname.py
2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3
"""test_s2_sender_nickname.py — RED: verify /api/messages returns sender_nickname."""
import sys, os, json, subprocess
sys.path.insert(0, "/data/data/com.termux/files/home/wechat-viewer")
PASSED = 0
FAILED = 0
def check(cond, msg):
global PASSED, FAILED
if cond:
PASSED += 1
print(f" ✓ {msg}")
else:
FAILED += 1
print(f" ✗ {msg}")
# Check if Flask is running
try:
r = subprocess.run(
["curl", "-s", "-o", "/dev/null", "-w", "%{http_code}",
"http://127.0.0.1:5000/", "--connect-timeout", "5"],
capture_output=True, text=True, timeout=10
)
if r.stdout.strip() != "200":
print("Flask not running, trying to start...")
# Can't start Flask in cron mode easily, skip
print("SKIP: Flask not accessible")
sys.exit(0)
except:
print("SKIP: curl failed")
sys.exit(0)
# Get a group chat talker
from wechat_db import query
groups = query("SELECT talker FROM message WHERE talker LIKE '%@chatroom' LIMIT 1")
if not groups:
print("SKIP: No group chats")
sys.exit(0)
talker = groups[0]['talker']
print(f"Testing /api/messages?talker={talker}")
r = subprocess.run(
["curl", "-s", f"http://127.0.0.1:5000/api/messages?talker={talker}&limit=5",
"--connect-timeout", "10", "--max-time", "15"],
capture_output=True, text=True, timeout=20
)
try:
data = json.loads(r.stdout)
except:
print(f"FAIL: JSON parse error: {r.stdout[:200]}")
sys.exit(1)
check(data.get('ok') == True, f"API ok=True (got: {data.get('ok')})")
msgs = data.get('data', [])
check(len(msgs) > 0, f"Got messages: {len(msgs)}")
sender_nicknames = 0
for m in msgs:
has = 'sender_nickname' in m
if 'sender_nickname' in m:
nn = m['sender_nickname']
if nn is not None and len(nn) > 0:
sender_nicknames += 1
check('sender_nickname' in msgs[0] if msgs else False, "First message has sender_nickname field")
check(sender_nicknames > 0, f"At least one message has non-empty sender_nickname (found {sender_nicknames})")
print(f"\n{'='*40}")
print(f"Results: {PASSED} passed, {FAILED} failed")
sys.exit(0 if FAILED == 0 else 1)