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