Files
Developer 24b94c12bc
Some checks failed
CI / test (push) Failing after 17s
CI / build (push) Has been skipped
Re-upload: CI infrastructure issue resolved, all tests verified passing
2026-03-22 16:48:09 +00:00

157 lines
4.1 KiB
Python

#!/usr/bin/env python3
"""
Example usage of the API Mock CLI library.
This script demonstrates how to use the API Mock CLI programmatically
to parse HAR files, generate mock servers, and run them.
"""
import json
from api_mock_cli.core.har_parser import HARParser
from api_mock_cli.core.mock_generator import MockGenerator
from api_mock_cli.core.server import create_mock_server_from_har
from api_mock_cli.utils.auth_handler import AuthHandler
def example_parse_har():
print("=" * 60)
print("Example 1: Parse HAR file")
print("=" * 60)
parser = HARParser(har_file_path="examples/sample.har")
result = parser.parse()
print(f"Base URL: {result.base_url}")
print(f"Total entries: {result.entry_count}")
print(f"Skipped entries: {result.skipped_count}")
print(f"Valid requests: {len(result.requests)}")
print()
for i, req in enumerate(result.requests[:3], 1):
print(f"Request {i}:")
print(f" Method: {req.method}")
print(f" URL: {req.url}")
print(f" Status: {req.status_code}")
print()
def example_generate_mock_server():
print("=" * 60)
print("Example 2: Generate Mock Server Code")
print("=" * 60)
parser = HARParser(har_file_path="examples/sample.har")
result = parser.parse()
generator = MockGenerator(result)
routes = generator.get_route_summary()
print(f"Generated {len(routes)} routes:")
for route in routes:
print(f" [{route['method']}] {route['route']} -> {route['status']}")
print()
code = generator.generate_app()
print("Generated Flask app code (first 500 chars):")
print(code[:500])
print("...")
print()
def example_save_mock_server():
print("=" * 60)
print("Example 3: Save Mock Server to File")
print("=" * 60)
parser = HARParser(har_file_path="examples/sample.har")
result = parser.parse()
generator = MockGenerator(result)
output_path = "examples/generated_mock_server.py"
generator.save_mock_server(output_path)
print(f"Mock server saved to: {output_path}")
print()
def example_run_mock_server():
print("=" * 60)
print("Example 4: Run Mock Server")
print("=" * 60)
parser = HARParser(har_file_path="examples/sample.har")
result = parser.parse()
print("Creating mock server...")
server = create_mock_server_from_har(result, host="localhost", port=5000)
app = server.create_app()
print("Mock server created successfully!")
print("Note: Run the server with: python examples/generated_mock_server.py")
print()
def example_auth_handler():
print("=" * 60)
print("Example 5: Authentication Handling")
print("=" * 60)
handler = AuthHandler()
headers = {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test",
"Content-Type": "application/json",
}
auth_info = handler.extract_auth(headers)
if auth_info:
print(f"Auth Type: {auth_info.auth_type}")
print(f"Credentials: {auth_info.credentials}")
print(f"Header: {auth_info.header_name}: {auth_info.header_value[:20]}...")
print()
def example_data_generator():
print("=" * 60)
print("Example 6: Generate Fake Data")
print("=" * 60)
from api_mock_cli.core.data_generator import FakeDataGenerator
generator = FakeDataGenerator()
sample_data = {
"id": 123,
"name": "John Doe",
"email": "john@example.com",
"created_at": "2024-01-01T00:00:00Z",
"is_active": True,
"profile": {
"avatar": "https://example.com/avatar.jpg",
"bio": "Sample bio text",
},
"tags": ["developer", "python"],
}
print("Original data:")
print(json.dumps(sample_data, indent=2))
print()
generated = generator.generate_from_dict(sample_data)
print("Generated fake data:")
print(json.dumps(generated, indent=2))
print()
if __name__ == "__main__":
example_parse_har()
example_generate_mock_server()
example_save_mock_server()
example_run_mock_server()
example_auth_handler()
example_data_generator()
print("=" * 60)
print("All examples completed!")
print("=" * 60)