""" Test the fixed ActionMappingManager structure via REST API This creates a mapping and you should verify it in GeViSet """ import requests import json BASE_URL = "http://localhost:8000" def authenticate(): response = requests.post(f'{BASE_URL}/api/v1/auth/login', json={ 'username': 'admin', 'password': 'admin123' }) return response.json()['access_token'] def main(): token = authenticate() headers = {'Authorization': f'Bearer {token}'} print("=" * 80) print("TESTING FIXED STRUCTURE") print("=" * 80) print() # Step 1: Delete existing test mapping print("Step 1: Cleaning up existing test mappings...") response = requests.get(f'{BASE_URL}/api/v1/configuration/action-mappings', headers=headers) for mapping in response.json().get('mappings', []): if mapping['name'] in ['FIXED_STRUCTURE_TEST', 'API_CORRECT_ALIASES_TEST', 'BACKEND_ROUNDTRIP_TEST']: print(f" Deleting mapping: {mapping['name']}") requests.delete(f'{BASE_URL}/api/v1/configuration/action-mappings/{mapping['id']}', headers=headers) print() # Step 2: Create mapping with correct server aliases print("Step 2: Creating mapping with FIXED structure...") print(" This mapping includes:") print(" - Filter flags (.SwitchMode, .VideoInput, .VideoOutput)") print(" - Actual field values (SwitchMode, VideoInput, VideoOutput)") print(" - GSC Server: GEVISCOPE_01_UPDATED") print(" - G-Core Server: gscope-cdu-10") print() new_mapping = { "name": "FIXED_STRUCTURE_TEST", "input_action": "FIXED_STRUCTURE_TEST", "output_actions": [ { "action": "PanLeft", "parameters": { "Caption": "GSC PanLeft FIXED", "GscServer": "GEVISCOPE_01_UPDATED", "PTZ head": "101027" } }, { "action": "PanRight", "parameters": { "Caption": "G-Core PanRight FIXED", "GCoreServer": "gscope-cdu-10", "PTZ head": "101028" } } ], "enabled": True } response = requests.post( f'{BASE_URL}/api/v1/configuration/action-mappings', headers=headers, json=new_mapping ) if response.status_code not in [200, 201]: print(f"ERROR: Failed to create mapping: {response.status_code}") print(response.text) return print("[OK] Mapping created successfully") print() print("=" * 80) print("VERIFICATION STEPS") print("=" * 80) print() print("1. Open GeViSet application") print("2. Connect to GeViServer (downloads current configuration)") print("3. Navigate to MappingRules") print("4. Find mapping 'FIXED_STRUCTURE_TEST'") print("5. Open the mapping to view Output Actions") print() print("EXPECTED RESULTS:") print(" - Output Action 1 should show as 'PanLeft' (NOT CrossSwitch)") print(" - Output Action 2 should show as 'PanRight' (NOT CrossSwitch)") print(" - Both actions should have their server aliases visible") print() print("If both actions show with correct names, THE BUG IS FIXED!") print() if __name__ == '__main__': main()