""" 测试 OAuth 登录流程 验证配置是否正确 """ import requests import json BASE_URL = "http://localhost:8003" def test_oauth_status(): """测试 OAuth 状态端点""" print("=" * 60) print("测试 1: OAuth 状态") print("=" * 60) response = requests.get(f"{BASE_URL}/api/oauth/status") print(f"状态码: {response.status_code}") print(f"响应: {json.dumps(response.json(), indent=2, ensure_ascii=False)}") print() return response.status_code == 200 def test_oauth_login(): """测试 OAuth 登录端点""" print("=" * 60) print("测试 2: OAuth 登录 URL 生成") print("=" * 60) response = requests.get(f"{BASE_URL}/api/oauth/login") print(f"状态码: {response.status_code}") if response.status_code == 200: data = response.json() print(f"授权 URL: {data['authorization_url']}") print(f"State: {data['state']}") print() # 验证 URL 包含正确的 client_id if "sRyfcQwNVoFimigzuuZxhqd36fPkVN5G" in data['authorization_url']: print("✅ Client ID 正确") else: print("❌ Client ID 错误") # 验证 URL 包含正确的 redirect_uri if "http://localhost:4200/auth/callback" in data['authorization_url']: print("✅ Redirect URI 正确") else: print("❌ Redirect URI 错误") return True else: print(f"错误: {response.text}") return False def main(): """运行所有测试""" print("\n🚀 开始测试 OAuth 配置...\n") tests = [ ("OAuth 状态", test_oauth_status), ("OAuth 登录", test_oauth_login), ] results = [] for name, test_func in tests: try: result = test_func() results.append((name, result)) except Exception as e: print(f"❌ 测试失败: {e}\n") results.append((name, False)) # 打印总结 print("=" * 60) print("测试总结") print("=" * 60) for name, result in results: status = "✅ 通过" if result else "❌ 失败" print(f"{name}: {status}") passed = sum(1 for _, result in results if result) total = len(results) print(f"\n总计: {passed}/{total} 测试通过") if passed == total: print("\n🎉 所有测试通过!OAuth 配置正确。") print("\n下一步:") print("1. 在浏览器中访问: http://localhost:4200/login") print("2. 点击 '使用 SSO 登录' 按钮") print("3. 在 OAuth 登录页面输入用户名和密码") print("4. 授权后应该自动登录到标注平台") else: print("\n⚠️ 部分测试失败,请检查配置。") if __name__ == "__main__": main()