Initial commit: Add OpenAPI Mock Server project
This commit is contained in:
161
.tests/conftest.py
Normal file
161
.tests/conftest.py
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
"""Pytest configuration and fixtures for OpenAPI Mock Server tests."""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_openapi_spec():
|
||||||
|
"""Sample OpenAPI 3.0 specification for testing."""
|
||||||
|
return {
|
||||||
|
"openapi": "3.0.0",
|
||||||
|
"info": {
|
||||||
|
"title": "Test API",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "A test API for unit tests"
|
||||||
|
},
|
||||||
|
"paths": {
|
||||||
|
"/users": {
|
||||||
|
"get": {
|
||||||
|
"summary": "List users",
|
||||||
|
"operationId": "listUsers",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "A list of users",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {"$ref": "#/components/schemas/User"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"summary": "Create user",
|
||||||
|
"operationId": "createUser",
|
||||||
|
"requestBody": {
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {"$ref": "#/components/schemas/User"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "User created",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {"$ref": "#/components/schemas/User"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/users/{userId}": {
|
||||||
|
"get": {
|
||||||
|
"summary": "Get user by ID",
|
||||||
|
"operationId": "getUser",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "userId",
|
||||||
|
"in": "path",
|
||||||
|
"required": True,
|
||||||
|
"schema": {"type": "integer"}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "User found",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {"$ref": "#/components/schemas/User"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"schemas": {
|
||||||
|
"User": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["id", "username", "email"],
|
||||||
|
"properties": {
|
||||||
|
"id": {"type": "integer", "format": "int64"},
|
||||||
|
"username": {"type": "string", "minLength": 3, "maxLength": 50},
|
||||||
|
"email": {"type": "string", "format": "email"},
|
||||||
|
"created_at": {"type": "string", "format": "date-time"},
|
||||||
|
"active": {"type": "boolean", "default": True}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def swagger_2_spec():
|
||||||
|
"""Sample Swagger 2.0 specification for testing."""
|
||||||
|
return {
|
||||||
|
"swagger": "2.0",
|
||||||
|
"info": {
|
||||||
|
"title": "Swagger Test API",
|
||||||
|
"version": "2.0.0"
|
||||||
|
},
|
||||||
|
"paths": {
|
||||||
|
"/pets": {
|
||||||
|
"get": {
|
||||||
|
"summary": "List pets",
|
||||||
|
"operationId": "listPets",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "A list of pets",
|
||||||
|
"schema": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {"$ref": "#/definitions/Pet"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"definitions": {
|
||||||
|
"Pet": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["id", "name"],
|
||||||
|
"properties": {
|
||||||
|
"id": {"type": "integer"},
|
||||||
|
"name": {"type": "string"},
|
||||||
|
"tag": {"type": "string"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_spec_file(tmp_path, sample_openapi_spec):
|
||||||
|
"""Create a temporary OpenAPI spec file."""
|
||||||
|
import yaml
|
||||||
|
spec_path = tmp_path / "test-spec.yaml"
|
||||||
|
with open(spec_path, "w") as f:
|
||||||
|
yaml.dump(sample_openapi_spec, f)
|
||||||
|
return str(spec_path)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def invalid_yaml_file(tmp_path):
|
||||||
|
"""Create an invalid YAML file."""
|
||||||
|
file_path = tmp_path / "invalid.yaml"
|
||||||
|
with open(file_path, "w") as f:
|
||||||
|
f.write("invalid: yaml: content: [")
|
||||||
|
return str(file_path)
|
||||||
Reference in New Issue
Block a user