Initial upload with CI/CD workflow
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-01 16:20:39 +00:00
parent c7a8749ca7
commit 98c7e9d403

74
tests/test_parser.py Normal file
View File

@@ -0,0 +1,74 @@
import pytest
from src.core.parser import parse_openapi_spec, load_spec_file, ParseError
@pytest.fixture
def sample_spec(tmp_path):
spec = {
"openapi": "3.0.0",
"info": {
"title": "Test API",
"version": "1.0.0"
},
"paths": {
"/users": {
"get": {
"summary": "Get users",
"description": "Retrieve a list of users",
"tags": ["users"],
"responses": {
"200": {"description": "Successful response"}
}
}
}
}
}
path = tmp_path / "test.json"
path.write_text(__import__('json').dumps(spec))
return path
def test_parse_valid_spec(sample_spec):
result = parse_openapi_spec(str(sample_spec))
assert result['valid'] == True
assert result['title'] == 'Test API'
assert result['version_num'] == '1.0.0'
def test_parse_invalid_spec(tmp_path):
invalid = tmp_path / "invalid.json"
invalid.write_text('{"invalid": "spec"}')
result = parse_openapi_spec(str(invalid))
assert result['valid'] == False
assert 'errors' in result
def test_load_json_spec(sample_spec):
spec = load_spec_file(str(sample_spec))
assert spec['info']['title'] == 'Test API'
def test_load_yaml_spec(tmp_path):
content = '''
openapi: "3.0.0"
info:
title: Test API
version: "1.0.0"
paths: {}
'''
path = tmp_path / "test.yaml"
path.write_text(content)
spec = load_spec_file(str(path))
assert spec['info']['title'] == 'Test API'
def test_parse_error_missing_file():
with pytest.raises(ParseError):
load_spec_file('/nonexistent/path.json')
def test_parse_error_unsupported_format(tmp_path):
path = tmp_path / "test.txt"
path.write_text('some content')
with pytest.raises(ParseError):
load_spec_file(str(path))