106 lines
3.4 KiB
Python
106 lines
3.4 KiB
Python
"""Integration tests for mock server."""
|
|
|
|
import pytest
|
|
|
|
from mockapi.core.spec_loader import SpecLoader
|
|
from mockapi.core.validator import OpenAPIValidator
|
|
from mockapi.core.server_generator import MockServerGenerator
|
|
from mockapi.core.config import Config
|
|
|
|
|
|
class TestMockServerIntegration:
|
|
"""Test cases for mock server integration."""
|
|
|
|
def test_load_spec(self):
|
|
"""Test loading a spec."""
|
|
spec_dict = {
|
|
"openapi": "3.0.0",
|
|
"info": {"title": "Test API", "version": "1.0.0"},
|
|
"paths": {
|
|
"/users": {
|
|
"get": {"operationId": "getUsers", "responses": {"200": {"description": "OK"}}},
|
|
},
|
|
},
|
|
}
|
|
generator = MockServerGenerator(spec_dict)
|
|
assert generator.spec is not None
|
|
|
|
def test_validate_spec(self):
|
|
"""Test validating a spec."""
|
|
spec = {
|
|
"openapi": "3.0.0",
|
|
"info": {"title": "Test", "version": "1.0.0"},
|
|
"paths": {},
|
|
}
|
|
validator = OpenAPIValidator(spec)
|
|
assert validator.is_valid() is True
|
|
|
|
def test_get_paths(self):
|
|
"""Test getting paths from spec."""
|
|
spec = {
|
|
"openapi": "3.0.0",
|
|
"info": {"title": "Test", "version": "1.0.0"},
|
|
"paths": {
|
|
"/users": {},
|
|
"/items": {},
|
|
},
|
|
}
|
|
validator = OpenAPIValidator(spec)
|
|
paths = validator.get_paths()
|
|
assert len(paths) == 2
|
|
|
|
def test_generate_mock_server(self):
|
|
"""Test generating a mock server."""
|
|
spec = {
|
|
"openapi": "3.0.0",
|
|
"info": {"title": "Test API", "version": "1.0.0"},
|
|
"paths": {
|
|
"/users": {
|
|
"get": {"operationId": "getUsers", "responses": {"200": {"description": "OK"}}},
|
|
},
|
|
},
|
|
}
|
|
config = Config()
|
|
generator = MockServerGenerator(spec, config)
|
|
app = generator.generate()
|
|
assert app is not None
|
|
|
|
def test_paths_have_operations(self):
|
|
"""Test that paths have operations defined."""
|
|
spec = {
|
|
"openapi": "3.0.0",
|
|
"info": {"title": "Test API", "version": "1.0.0"},
|
|
"paths": {
|
|
"/users": {
|
|
"get": {"operationId": "getUsers", "responses": {"200": {}}},
|
|
"post": {"operationId": "createUser", "responses": {"201": {}}},
|
|
},
|
|
},
|
|
}
|
|
validator = OpenAPIValidator(spec)
|
|
ops = validator.get_operations("/users")
|
|
assert "get" in ops
|
|
assert "post" in ops
|
|
|
|
def test_schemas_defined(self):
|
|
"""Test that schemas are properly defined."""
|
|
spec = {
|
|
"openapi": "3.0.0",
|
|
"info": {"title": "Test API", "version": "1.0.0"},
|
|
"paths": {},
|
|
"components": {
|
|
"schemas": {
|
|
"User": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "integer"},
|
|
"name": {"type": "string"},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
validator = OpenAPIValidator(spec)
|
|
schema = validator.get_schema("User")
|
|
assert schema is not None
|
|
assert schema["type"] == "object" |