53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
import pytest
|
|
|
|
from jsonschema import ValidationError
|
|
|
|
from flask_restx import errors, schemas
|
|
|
|
|
|
class SchemasTest:
|
|
def test_lazyness(self):
|
|
schema = schemas.LazySchema("oas-2.0.json")
|
|
assert schema._schema is None
|
|
|
|
"" in schema # Trigger load
|
|
assert schema._schema is not None
|
|
assert isinstance(schema._schema, dict)
|
|
|
|
def test_oas2_schema_is_present(self):
|
|
assert hasattr(schemas, "OAS_20")
|
|
assert isinstance(schemas.OAS_20, schemas.LazySchema)
|
|
|
|
|
|
class ValidationTest:
|
|
def test_oas_20_valid(self):
|
|
assert schemas.validate(
|
|
{
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"title": "An empty minimal specification",
|
|
"version": "1.0",
|
|
},
|
|
"paths": {},
|
|
}
|
|
)
|
|
|
|
def test_oas_20_invalid(self):
|
|
with pytest.raises(schemas.SchemaValidationError) as excinfo:
|
|
schemas.validate(
|
|
{
|
|
"swagger": "2.0",
|
|
"should": "not be here",
|
|
}
|
|
)
|
|
for error in excinfo.value.errors:
|
|
assert isinstance(error, ValidationError)
|
|
|
|
def test_unknown_schema(self):
|
|
with pytest.raises(errors.SpecsError):
|
|
schemas.validate({"valid": "no"})
|
|
|
|
def test_unknown_version(self):
|
|
with pytest.raises(errors.SpecsError):
|
|
schemas.validate({"swagger": "42.0"})
|