98 lines
3.7 KiB
Bash
98 lines
3.7 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
# =============================================================================
|
|||
|
|
# 验证 priority 修复 - 端到端测试 (v4 - 用 docker exec)
|
|||
|
|
# =============================================================================
|
|||
|
|
|
|||
|
|
set -e
|
|||
|
|
REDIS_PWD="WKzl7jgKTkeWxFWGIBXfzokm59Gvfr76"
|
|||
|
|
TOKEN=$(openssl rand -hex 32)
|
|||
|
|
|
|||
|
|
# 1. 在 backend 容器内用 Python 写 token(容器已装 redis)
|
|||
|
|
USER_INFO='{"employee_id": "sxn", "username": "admin", "name": "宋献", "role": "admin", "department": "IT支持组", "login_source": "test", "login_method": "test_script", "last_active": "2026-07-28T02:00:00"}'
|
|||
|
|
|
|||
|
|
docker exec wecom_it_backend python3 - <<PYEOF
|
|||
|
|
import redis
|
|||
|
|
import json
|
|||
|
|
|
|||
|
|
r = redis.Redis(host="redis", port=6379, password="${REDIS_PWD}", db=0)
|
|||
|
|
token = "${TOKEN}"
|
|||
|
|
user_info = json.loads("""${USER_INFO}""")
|
|||
|
|
r.setex(f"user:token:{token}", 8 * 3600, json.dumps(user_info, ensure_ascii=False))
|
|||
|
|
print(f"Token written: {token[:20]}...")
|
|||
|
|
print(f"Verified: {r.exists(f'user:token:{token}') == 1}")
|
|||
|
|
PYEOF
|
|||
|
|
|
|||
|
|
# 2. 测试 API
|
|||
|
|
echo ""
|
|||
|
|
echo "===== Test 1: GET /admin/quick-rules?rule_type=routing_target ====="
|
|||
|
|
RESP1=$(curl -s "http://localhost/api/admin/quick-rules?rule_type=routing_target&page=1&size=20" \
|
|||
|
|
-H "Authorization: Bearer ${TOKEN}")
|
|||
|
|
echo "${RESP1}" | python3 -m json.tool 2>&1 | head -80
|
|||
|
|
|
|||
|
|
# 3. 测试 API - category=行政
|
|||
|
|
echo ""
|
|||
|
|
echo "===== Test 2: GET /admin/quick-rules?rule_type=routing_target&category=行政 ====="
|
|||
|
|
RESP2=$(curl -s --get "http://localhost/api/admin/quick-rules" \
|
|||
|
|
--data-urlencode "rule_type=routing_target" \
|
|||
|
|
--data-urlencode "category=行政" \
|
|||
|
|
--data-urlencode "page=1" \
|
|||
|
|
--data-urlencode "size=20" \
|
|||
|
|
-H "Authorization: Bearer ${TOKEN}")
|
|||
|
|
echo "${RESP2}" | python3 -m json.tool 2>&1 | head -50
|
|||
|
|
|
|||
|
|
# 4. 测试 API - category=人力资源
|
|||
|
|
echo ""
|
|||
|
|
echo "===== Test 3: GET /admin/quick-rules?rule_type=routing_target&category=人力资源 ====="
|
|||
|
|
RESP3=$(curl -s --get "http://localhost/api/admin/quick-rules" \
|
|||
|
|
--data-urlencode "rule_type=routing_target" \
|
|||
|
|
--data-urlencode "category=人力资源" \
|
|||
|
|
--data-urlencode "page=1" \
|
|||
|
|
--data-urlencode "size=20" \
|
|||
|
|
-H "Authorization: Bearer ${TOKEN}")
|
|||
|
|
echo "${RESP3}" | python3 -m json.tool 2>&1 | head -50
|
|||
|
|
|
|||
|
|
# 5. 测试 API - category=IT服务
|
|||
|
|
echo ""
|
|||
|
|
echo "===== Test 4: GET /admin/quick-rules?rule_type=routing_target&category=IT服务 ====="
|
|||
|
|
RESP4=$(curl -s --get "http://localhost/api/admin/quick-rules" \
|
|||
|
|
--data-urlencode "rule_type=routing_target" \
|
|||
|
|
--data-urlencode "category=IT服务" \
|
|||
|
|
--data-urlencode "page=1" \
|
|||
|
|
--data-urlencode "size=20" \
|
|||
|
|
-H "Authorization: Bearer ${TOKEN}")
|
|||
|
|
echo "${RESP4}" | python3 -m json.tool 2>&1 | head -50
|
|||
|
|
|
|||
|
|
# 6. 测试 API - category=行政-物业
|
|||
|
|
echo ""
|
|||
|
|
echo "===== Test 5: GET /admin/quick-rules?rule_type=routing_target&category=行政-物业 ====="
|
|||
|
|
RESP5=$(curl -s --get "http://localhost/api/admin/quick-rules" \
|
|||
|
|
--data-urlencode "rule_type=routing_target" \
|
|||
|
|
--data-urlencode "category=行政-物业" \
|
|||
|
|
--data-urlencode "page=1" \
|
|||
|
|
--data-urlencode "size=20" \
|
|||
|
|
-H "Authorization: Bearer ${TOKEN}")
|
|||
|
|
echo "${RESP5}" | python3 -m json.tool 2>&1 | head -50
|
|||
|
|
|
|||
|
|
# 7. 测试 API - 不存在的分类
|
|||
|
|
echo ""
|
|||
|
|
echo "===== Test 6: GET /admin/quick-rules?rule_type=routing_target&category=不存在的分类 ====="
|
|||
|
|
RESP6=$(curl -s --get "http://localhost/api/admin/quick-rules" \
|
|||
|
|
--data-urlencode "rule_type=routing_target" \
|
|||
|
|
--data-urlencode "category=不存在的分类" \
|
|||
|
|
--data-urlencode "page=1" \
|
|||
|
|
--data-urlencode "size=20" \
|
|||
|
|
-H "Authorization: Bearer ${TOKEN}")
|
|||
|
|
echo "${RESP6}" | python3 -m json.tool 2>&1 | head -20
|
|||
|
|
|
|||
|
|
# 8. cleanup
|
|||
|
|
echo ""
|
|||
|
|
echo "===== Cleanup ====="
|
|||
|
|
docker exec wecom_it_backend python3 -c "
|
|||
|
|
import redis
|
|||
|
|
r = redis.Redis(host='redis', port=6379, password='${REDIS_PWD}', db=0)
|
|||
|
|
print(r.delete(f'user:token:${TOKEN}'))
|
|||
|
|
"
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "===== 验证完成 ====="
|