Re-upload: CI infrastructure issue resolved, all tests verified passing
This commit is contained in:
69
tests/test_mock_generator.py
Normal file
69
tests/test_mock_generator.py
Normal file
@@ -0,0 +1,69 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user