test_app_user_menus.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env python3
  2. import requests
  3. import json
  4. # Test app user menu access
  5. login_data = {
  6. 'username': 'app',
  7. 'password': '123456'
  8. }
  9. try:
  10. # Login as app user
  11. login_response = requests.post('http://localhost:8000/api/v1/auth/login', json=login_data)
  12. if login_response.status_code == 200:
  13. login_result = login_response.json()
  14. if login_result.get('code') == 0:
  15. token = login_result['data']['access_token']
  16. print('✅ App user login successful')
  17. # Get user menus
  18. headers = {'Authorization': f'Bearer {token}'}
  19. menus_response = requests.get('http://localhost:8000/api/v1/user/menus', headers=headers)
  20. if menus_response.status_code == 200:
  21. menus_result = menus_response.json()
  22. if menus_result.get('code') == 0:
  23. menus = menus_result['data']
  24. print(f'✅ App user has access to {len(menus)} menu items')
  25. # Check specifically for /admin/apps path
  26. has_admin_apps = False
  27. for menu in menus:
  28. if menu.get('menu_type') == 'menu':
  29. print(f'📁 {menu["title"]} ({menu["name"]}) - Path: {menu.get("path", "N/A")}')
  30. if menu.get('path') == '/admin/apps':
  31. has_admin_apps = True
  32. print(' ✅ Found /admin/apps access!')
  33. if menu.get('children'):
  34. for child in menu['children']:
  35. if child.get('menu_type') == 'menu':
  36. print(f' 📄 {child["title"]} ({child["name"]}) - Path: {child.get("path", "N/A")}')
  37. if child.get('path') == '/admin/apps':
  38. has_admin_apps = True
  39. print(' ✅ Found /admin/apps access!')
  40. if has_admin_apps:
  41. print('\n🎉 App user has access to /admin/apps path!')
  42. else:
  43. print('\n❌ App user does NOT have access to /admin/apps path!')
  44. else:
  45. print(f'❌ Menus API error: {menus_result.get("message")}')
  46. else:
  47. print(f'❌ Menus API HTTP error: {menus_response.status_code}')
  48. else:
  49. print(f'❌ Login error: {login_result.get("message")}')
  50. else:
  51. print(f'❌ Login HTTP error: {login_response.status_code}')
  52. except Exception as e:
  53. print(f'❌ Request error: {e}')