openapi-core/tests/integration/validation/test_minimal.py

66 lines
2.2 KiB
Python
Raw Normal View History

import pytest
2018-04-18 10:39:03 +00:00
from openapi_core.schema.operations.exceptions import InvalidOperation
2019-06-18 15:13:44 +00:00
from openapi_core.schema.paths.exceptions import InvalidPath
from openapi_core.shortcuts import create_spec
2019-10-19 11:01:50 +00:00
from openapi_core.testing.mock import MockRequest
2018-04-17 12:38:23 +00:00
from openapi_core.validation.request.validators import RequestValidator
class TestMinimal(object):
servers = [
"http://minimal.test/",
"https://bad.remote.domain.net/",
"http://localhost",
"http://localhost:8080",
"https://u:p@a.b:1337"
]
spec_paths = [
"data/v3.0/minimal_with_servers.yaml",
"data/v3.0/minimal.yaml"
]
@pytest.mark.parametrize("server", servers)
@pytest.mark.parametrize("spec_path", spec_paths)
def test_hosts(self, factory, server, spec_path):
spec_dict = factory.spec_from_file(spec_path)
spec = create_spec(spec_dict)
validator = RequestValidator(spec)
request = MockRequest(server, "get", "/status")
result = validator.validate(request)
assert not result.errors
@pytest.mark.parametrize("server", servers)
@pytest.mark.parametrize("spec_path", spec_paths)
def test_invalid_operation(self, factory, server, spec_path):
spec_dict = factory.spec_from_file(spec_path)
spec = create_spec(spec_dict)
validator = RequestValidator(spec)
2019-06-18 15:13:44 +00:00
request = MockRequest(server, "post", "/status")
result = validator.validate(request)
assert len(result.errors) == 1
assert isinstance(result.errors[0], InvalidOperation)
assert result.body is None
assert result.parameters is None
2019-06-18 15:13:44 +00:00
@pytest.mark.parametrize("server", servers)
@pytest.mark.parametrize("spec_path", spec_paths)
def test_invalid_path(self, factory, server, spec_path):
spec_dict = factory.spec_from_file(spec_path)
spec = create_spec(spec_dict)
validator = RequestValidator(spec)
request = MockRequest(server, "get", "/nonexistent")
result = validator.validate(request)
assert len(result.errors) == 1
assert isinstance(result.errors[0], InvalidPath)
assert result.body is None
assert result.parameters is None