Files
testdata-cli/tests/test_mock_generator.py

70 lines
2.4 KiB
Python

import json
import pytest
from api_mock_cli.core.har_parser import HARParser, UnifiedRequest
from api_mock_cli.core.mock_generator import MockGenerator
class TestMockGenerator:
@pytest.fixture
def parse_result(self, sample_har_data):
parser = HARParser(har_data=sample_har_data)
return parser.parse()
def test_mock_generator_creation(self, parse_result):
generator = MockGenerator(parse_result)
assert generator.parse_result == parse_result
def test_generate_routes(self, parse_result):
generator = MockGenerator(parse_result)
routes = generator.generate_routes()
assert len(routes) > 0
assert all("pattern" in r for r in routes)
assert all("method" in r for r in routes)
assert all("status_code" in r for r in routes)
def test_get_route_summary(self, parse_result):
generator = MockGenerator(parse_result)
summary = generator.get_route_summary()
assert len(summary) > 0
assert all("method" in r for r in summary)
assert all("route" in r for r in summary)
assert all("status" in r for r in summary)
def test_generate_app_returns_flask_code(self, parse_result):
generator = MockGenerator(parse_result)
code = generator.generate_app()
assert "from flask import Flask" in code
assert "def create_app():" in code
assert "app.run" in code
def test_save_mock_server(self, parse_result, tmp_path):
generator = MockGenerator(parse_result)
output_path = tmp_path / "mock_server.py"
generator.save_mock_server(str(output_path))
assert output_path.exists()
content = output_path.read_text()
assert "from flask import Flask" in content
def test_routes_have_unique_patterns(self, parse_result):
generator = MockGenerator(parse_result)
routes = generator.generate_routes()
patterns = [r["pattern"] for r in routes]
assert len(patterns) == len(set(patterns))
def test_response_body_is_json(self, parse_result):
generator = MockGenerator(parse_result)
routes = generator.generate_routes()
for route in routes:
body = route["response_body"]
try:
json.loads(body)
except json.JSONDecodeError:
pytest.fail("Response body is not valid JSON")