test_oauth_flow.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. """
  2. 测试 OAuth 登录流程
  3. 验证配置是否正确
  4. """
  5. import requests
  6. import json
  7. BASE_URL = "http://localhost:8002"
  8. def test_oauth_status():
  9. """测试 OAuth 状态端点"""
  10. print("=" * 60)
  11. print("测试 1: OAuth 状态")
  12. print("=" * 60)
  13. response = requests.get(f"{BASE_URL}/api/oauth/status")
  14. print(f"状态码: {response.status_code}")
  15. print(f"响应: {json.dumps(response.json(), indent=2, ensure_ascii=False)}")
  16. print()
  17. return response.status_code == 200
  18. def test_oauth_login():
  19. """测试 OAuth 登录端点"""
  20. print("=" * 60)
  21. print("测试 2: OAuth 登录 URL 生成")
  22. print("=" * 60)
  23. response = requests.get(f"{BASE_URL}/api/oauth/login")
  24. print(f"状态码: {response.status_code}")
  25. if response.status_code == 200:
  26. data = response.json()
  27. print(f"授权 URL: {data['authorization_url']}")
  28. print(f"State: {data['state']}")
  29. print()
  30. # 验证 URL 包含正确的 client_id
  31. if "sRyfcQwNVoFimigzuuZxhqd36fPkVN5G" in data['authorization_url']:
  32. print("✅ Client ID 正确")
  33. else:
  34. print("❌ Client ID 错误")
  35. # 验证 URL 包含正确的 redirect_uri
  36. if "http://localhost:4200/auth/callback" in data['authorization_url']:
  37. print("✅ Redirect URI 正确")
  38. else:
  39. print("❌ Redirect URI 错误")
  40. return True
  41. else:
  42. print(f"错误: {response.text}")
  43. return False
  44. def main():
  45. """运行所有测试"""
  46. print("\n🚀 开始测试 OAuth 配置...\n")
  47. tests = [
  48. ("OAuth 状态", test_oauth_status),
  49. ("OAuth 登录", test_oauth_login),
  50. ]
  51. results = []
  52. for name, test_func in tests:
  53. try:
  54. result = test_func()
  55. results.append((name, result))
  56. except Exception as e:
  57. print(f"❌ 测试失败: {e}\n")
  58. results.append((name, False))
  59. # 打印总结
  60. print("=" * 60)
  61. print("测试总结")
  62. print("=" * 60)
  63. for name, result in results:
  64. status = "✅ 通过" if result else "❌ 失败"
  65. print(f"{name}: {status}")
  66. passed = sum(1 for _, result in results if result)
  67. total = len(results)
  68. print(f"\n总计: {passed}/{total} 测试通过")
  69. if passed == total:
  70. print("\n🎉 所有测试通过!OAuth 配置正确。")
  71. print("\n下一步:")
  72. print("1. 在浏览器中访问: http://localhost:4200/login")
  73. print("2. 点击 '使用 SSO 登录' 按钮")
  74. print("3. 在 OAuth 登录页面输入用户名和密码")
  75. print("4. 授权后应该自动登录到标注平台")
  76. else:
  77. print("\n⚠️ 部分测试失败,请检查配置。")
  78. if __name__ == "__main__":
  79. main()