Add test files: conftest, parser tests, generator tests
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-02 19:58:14 +00:00
parent 70609fecf5
commit d562020e89

267
tests/conftest.py Normal file
View File

@@ -0,0 +1,267 @@
"""Pytest configuration and fixtures for OpenAPI Mock Generator tests."""
import pytest
import tempfile
import json
from pathlib import Path
@pytest.fixture
def temp_dir():
"""Create a temporary directory for tests."""
with tempfile.TemporaryDirectory() as tmpdir:
yield Path(tmpdir)
@pytest.fixture
def sample_openapi_yaml():
"""Sample OpenAPI specification in YAML format."""
return """
openapi: \"3.0.0\"
info:
title: Sample API
version: \"1.0.0\"
paths:
/users:
get:
summary: Get all users
parameters:
- name: page
in: query
schema:
type: integer
- name: limit
in: query
schema:
type: integer
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
format: email
createdAt:
type: string
format: date-time
/users/{userId}:
get:
summary: Get user by ID
parameters:
- name: userId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
format: email
'404':
description: User not found
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
put:
summary: Update user
parameters:
- name: userId
in: path
required: true
schema:
type: integer
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
email:
type: string
format: email
required:
- name
responses:
'200':
description: User updated
content:
application/json:
schema:
type: object
properties:
id:
type: integer
name:
type: string
/posts:
post:
summary: Create a post
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
content:
type: string
authorId:
type: integer
responses:
'201':
description: Post created
content:
application/json:
schema:
type: object
properties:
id:
type: integer
title:
type: string
content:
type: string
authorId:
type: integer
publishedAt:
type: string
format: date-time
components:
schemas:
User:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
format: email
createdAt:
type: string
format: date-time
Post:
type: object
properties:
id:
type: integer
title:
type: string
content:
type: string
authorId:
type: integer
publishedAt:
type: string
format: date-time
Error:
type: object
properties:
error:
type: string
message:
type: string
"""
@pytest.fixture
def sample_openapi_json():
"""Sample OpenAPI specification in JSON format."""
return json.dumps({
"openapi": "3.0.0",
"info": {
"title": "Sample API",
"version": "1.0.0"
},
"paths": {
"/users": {
"get": {
"summary": "Get all users",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {"type": "integer"},
"name": {"type": "string"}
}
}
}
}
}
}
}
}
}
}
}, indent=2)
@pytest.fixture
def invalid_openapi_yaml():
"""Invalid OpenAPI specification (missing openapi version)."""
return """
info:
title: Invalid API
version: \"1.0.0\"
paths:
/users:
get:
responses:
'200':
description: Success
"""
@pytest.fixture
def temp_spec_file(sample_openapi_yaml, tmp_path):
"""Create a temporary OpenAPI spec file."""
spec_file = tmp_path / "openapi.yaml"
spec_file.write_text(sample_openapi_yaml)
return str(spec_file)
@pytest.fixture
def temp_json_spec_file(sample_openapi_json, tmp_path):
"""Create a temporary OpenAPI spec file in JSON format."""
spec_file = tmp_path / "openapi.json"
spec_file.write_text(sample_openapi_json)
return str(spec_file)