81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
测试列出所有用户的HTTP接口 (/api/user/list)
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
import json
|
||
from datetime import datetime
|
||
|
||
# 将后端根目录加入路径,便于导入app
|
||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
|
||
from app import create_app
|
||
from modules.auth import generate_token
|
||
from werkzeug.security import generate_password_hash
|
||
|
||
|
||
def run_test():
|
||
"""运行用户列表接口测试,输出真实数据"""
|
||
# 使用.env中的真实Mongo配置,不造假
|
||
app = create_app()
|
||
|
||
with app.app_context():
|
||
db = app.mongo.db
|
||
users = db.userdata
|
||
|
||
# 插入一个测试用户(真实写入后再删除),确保可验证接口输出
|
||
test_email = "infogenie.test.user@foxmail.com"
|
||
users.delete_many({'邮箱': test_email})
|
||
test_user = {
|
||
'邮箱': test_email,
|
||
'用户名': '测试用户_列表',
|
||
'密码': generate_password_hash('TestPass123!'),
|
||
'头像': None,
|
||
'注册时间': datetime.now().isoformat(),
|
||
'最后登录': None,
|
||
'登录次数': 0,
|
||
'用户状态': 'active',
|
||
'等级': 0,
|
||
'经验': 0,
|
||
'萌芽币': 0,
|
||
'签到系统': {
|
||
'连续签到天数': 0,
|
||
'今日是否已签到': False,
|
||
'签到时间': datetime.now().strftime('%Y-%m-%d')
|
||
}
|
||
}
|
||
insert_result = users.insert_one(test_user)
|
||
test_user_id = str(insert_result.inserted_id)
|
||
|
||
# 生成有效JWT,满足认证要求
|
||
token = generate_token({
|
||
'user_id': test_user_id,
|
||
'email': test_email,
|
||
'username': test_user['用户名']
|
||
})
|
||
|
||
client = app.test_client()
|
||
resp = client.get('/api/user/list', headers={'Authorization': f'Bearer {token}'})
|
||
|
||
print("状态码:", resp.status_code)
|
||
data = resp.get_json()
|
||
print("响应内容:")
|
||
print(json.dumps(data, ensure_ascii=False, indent=2))
|
||
|
||
# 基本断言,确保返回真实列表数据且包含刚插入的测试用户
|
||
assert resp.status_code == 200
|
||
assert data.get('success') is True
|
||
assert isinstance(data.get('data'), list)
|
||
assert any(u.get('email') == test_email for u in data['data'])
|
||
|
||
# 清理测试数据
|
||
users.delete_many({'邮箱': test_email})
|
||
|
||
|
||
if __name__ == '__main__':
|
||
print('🔎 开始测试 /api/user/list 接口...')
|
||
run_test()
|
||
print('✅ 测试完成!') |