Add test files: conftest, parser tests, generator tests
Some checks failed
CI / test (push) Has been cancelled
Some checks failed
CI / test (push) Has been cancelled
This commit is contained in:
267
tests/conftest.py
Normal file
267
tests/conftest.py
Normal 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)
|
||||
Reference in New Issue
Block a user