#!/usr/bin/env python3 """Test the REST API structured action mappings endpoint""" import requests import json # API configuration API_URL = "http://localhost:8000" USERNAME = "admin" PASSWORD = "admin123" def main(): print("Testing structured action mappings REST API...") print("="*70) # Get authentication token print("\n1. Authenticating...") auth_response = requests.post( f"{API_URL}/api/v1/auth/login", json={"username": USERNAME, "password": PASSWORD} ) if auth_response.status_code != 200: print(f"Authentication failed: {auth_response.status_code}") print(auth_response.text) return False token = auth_response.json()["access_token"] print(f" ✓ Authenticated as {USERNAME}") # Get action mappings print("\n2. Fetching action mappings...") headers = {"Authorization": f"Bearer {token}"} mappings_response = requests.get( f"{API_URL}/api/v1/configuration/action-mappings/export", headers=headers ) if mappings_response.status_code != 200: print(f"Failed to get mappings: {mappings_response.status_code}") print(mappings_response.text) return False data = mappings_response.json() print(f" ✓ Retrieved {data['total_mappings']} mappings") print(f" ✓ {data['mappings_with_parameters']} mappings have parameters") # Show some examples print("\n3. Example mappings:") print("-"*70) # Show a simple mapping simple_mappings = [m for m in data['mappings'] if len(m['output_actions']) > 0 and all(len(a['parameters']) == 0 for a in m['output_actions'])] if simple_mappings: mapping = simple_mappings[0] print(f"\n Simple mapping (offset {mapping['offset']}):") for action in mapping['output_actions'][:2]: print(f" • {action['action']}") if action['parameters']: print(f" Parameters: {action['parameters']}") # Show a complex mapping with parameters complex_mappings = [m for m in data['mappings'] if len(m['output_actions']) > 0 and any(len(a['parameters']) > 0 for a in m['output_actions'])] if complex_mappings: print(f"\n Complex mapping with parameters ({len(complex_mappings)} total):") mapping = complex_mappings[0] print(f" Offset: {mapping['offset']}") for i, action in enumerate(mapping['output_actions'][:2], 1): print(f"\n Action {i}: {action['action']}") if action['parameters']: print(f" Parameters:") for key, value in action['parameters'].items(): print(f" • {key}: {value}") # Save full output to file print("\n4. Saving complete output...") output_file = "structured_action_mappings_api.json" with open(output_file, 'w', encoding='utf-8') as f: json.dump(data, f, indent=2, ensure_ascii=False) print(f" ✓ Saved to {output_file}") print("\n" + "="*70) print("✓ Test completed successfully!") return True if __name__ == '__main__': main()