test_auth.py 1.96 KB
import os
import sys
from typing import Tuple

from client import ApiClient


BASE_URL = os.environ.get('API_BASE_URL', 'http://localhost:8083')


def login_and_print_token(username: str, password: str) -> Tuple[bool, str]:
	"""
	认证登录API测试 - 详细测试以下接口:
	1. POST /api/auth/login - 用户登录认证
	"""
	print("🚀 开始认证登录API测试")
	print("=" * 50)
	print(f"API基础URL: {BASE_URL}")
	print()
	
	client = ApiClient(BASE_URL)
	
	# 测试用户登录认证接口 - POST /api/auth/login
	print("🔍 测试用户登录认证接口...")
	print(f"   用户名: {username}")
	print(f"   密码: {'*' * len(password)}")
	
	resp = client.post('/api/auth/login', {
		'username': username,
		'password': password
	}, auth=False)
	
	try:
		data = resp.json()
	except Exception:
		print(f"❌ FAIL 用户登录认证")
		print(f"   登录接口返回非JSON格式")
		print(f"   响应内容: {resp.text}")
		return False, ''

	if resp.status_code == 200 and isinstance(data, dict) and data.get('code') == 200:
		token = (data.get('data') or {}).get('token')
		if token:
			print(f"✅ PASS 用户登录认证")
			print(f"   登录成功,获取到JWT Token")
			print(f"   Token: {token}")
			client.set_token(token)
			print(f"   Token已保存到本地文件,后续请求将自动携带")
			print()
			print("=" * 50)
			print("📊 测试结果: 1/1 通过")
			print("🎉 认证登录API测试通过!")
			return True, token
		print(f"❌ FAIL 用户登录认证")
		print(f"   登录成功但未返回token")
		print(f"   完整响应: {data}")
		return False, ''

	print(f"❌ FAIL 用户登录认证")
	print(f"   登录失败")
	print(f"   错误信息: {data}")
	return False, ''


if __name__ == '__main__':
	# 默认账户可根据实际系统修改
	username = sys.argv[1] if len(sys.argv) > 1 else 'admin'
	password = sys.argv[2] if len(sys.argv) > 2 else 'password'
	success, _ = login_and_print_token(username, password)
	sys.exit(0 if success else 1)