#!/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}')