| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #!/usr/bin/env python3
- import requests
- import json
- # Test the role menus API for user role
- admin_login_data = {
- 'username': 'admin',
- 'password': 'Admin123456'
- }
- try:
- # Login as admin to get access to role management APIs
- login_response = requests.post('http://localhost:8000/api/v1/auth/login', json=admin_login_data)
- if login_response.status_code == 200:
- login_result = login_response.json()
- if login_result.get('code') == 0:
- token = login_result['data']['access_token']
- print('✅ Admin login successful')
-
- # Get user role ID first
- headers = {'Authorization': f'Bearer {token}'}
- roles_response = requests.get('http://localhost:8000/api/v1/admin/roles', headers=headers)
-
- if roles_response.status_code == 200:
- roles_result = roles_response.json()
- if roles_result.get('code') == 0:
- roles = roles_result['data']['items']
- user_role_id = None
-
- for role in roles:
- if role['name'] == 'user':
- user_role_id = role['id']
- print(f'✅ Found user role ID: {user_role_id}')
- break
-
- if user_role_id:
- # Get role menu permissions
- role_menus_response = requests.get(
- f'http://localhost:8000/api/v1/admin/roles/{user_role_id}/menus',
- headers=headers
- )
-
- if role_menus_response.status_code == 200:
- role_menus_result = role_menus_response.json()
- if role_menus_result.get('code') == 0:
- data = role_menus_result['data']
- menu_ids = data.get('menu_ids', [])
- menu_details = data.get('menu_details', [])
-
- print(f'✅ Role menus API successful')
- print(f'📊 User role has {len(menu_ids)} menu permissions')
- print(f'📋 Menu IDs: {menu_ids[:5]}...' if len(menu_ids) > 5 else f'📋 Menu IDs: {menu_ids}')
-
- # Categorize menus
- main_menus = []
- sub_menus = []
- buttons = []
-
- for menu in menu_details:
- if menu['menu_type'] == 'menu' and menu['parent_id'] is None:
- main_menus.append(menu)
- elif menu['menu_type'] == 'menu' and menu['parent_id'] is not None:
- sub_menus.append(menu)
- elif menu['menu_type'] == 'button':
- buttons.append(menu)
-
- print(f'\n📁 Main Menus ({len(main_menus)}):')
- for menu in main_menus:
- print(f' - {menu["title"]} ({menu["name"]})')
-
- print(f'\n📄 Sub Menus ({len(sub_menus)}):')
- for menu in sub_menus:
- print(f' - {menu["title"]} ({menu["name"]})')
-
- print(f'\n🔘 Buttons ({len(buttons)}):')
- for menu in buttons[:10]: # Show first 10 buttons
- print(f' - {menu["title"]} ({menu["name"]})')
- if len(buttons) > 10:
- print(f' ... and {len(buttons) - 10} more buttons')
-
- # Check for problematic menus
- problematic_menu_names = [
- 'user-management', 'role-management', 'menu-management',
- 'permission-management', 'app-management', 'log-management'
- ]
-
- print(f'\n🔍 Checking for problematic menus:')
- found_problematic = []
- for menu in menu_details:
- if menu['name'] in problematic_menu_names:
- found_problematic.append(menu['name'])
- print(f' ❌ FOUND: {menu["title"]} ({menu["name"]})')
-
- if not found_problematic:
- print(' ✅ No problematic menus found - API is correct!')
- else:
- print(f' ❌ Found {len(found_problematic)} problematic menus in API response!')
-
- else:
- print(f'❌ Role menus API error: {role_menus_result.get("message")}')
- else:
- print(f'❌ Role menus API HTTP error: {role_menus_response.status_code}')
- print(f'Response: {role_menus_response.text}')
- else:
- print('❌ User role not found!')
- else:
- print(f'❌ Roles API error: {roles_result.get("message")}')
- else:
- print(f'❌ Roles API HTTP error: {roles_response.status_code}')
- else:
- print(f'❌ Login error: {login_result.get("message")}')
- else:
- print(f'❌ Login HTTP error: {login_response.status_code}')
-
- except Exception as e:
- print(f'❌ Request error: {e}')
|