def test_get_vocabulary(uri, is_known): if is_known: vocabulary = Catalogue.get_vocabulary(URI(uri)) assert vocabulary.uri == uri else: with pytest.raises(CatalogueError): Catalogue.get_vocabulary(URI(uri))
def test_get_schema(example_schema_uri, ptr, is_schema): uri = example_schema_uri.copy(fragment=ptr) if is_schema: subschema = Catalogue.get_schema(uri) assert JSONPointer(ptr).evaluate(example_schema) == subschema else: with pytest.raises(CatalogueError): Catalogue.get_schema(uri)
def setup_validators(): Catalogue.add_format_validators({ "ipv4": ipv4_validator, "ipv6": ipv6_validator, "json-pointer": jsonpointer_validator, }) yield Catalogue._format_validators.clear()
def test_add_directory_invalid_dir(setup_tmpdir): tmpdir_path, subdir_name, jsonfile_name = setup_tmpdir # base_dir is a file with pytest.raises(CatalogueError): Catalogue.add_directory( URI('http://example.com/'), pathlib.Path(tmpdir_path) / subdir_name / jsonfile_name) # base_dir does not exist with pytest.raises(CatalogueError): Catalogue.add_directory(URI('http://example.com/'), pathlib.Path(tmpdir_path) / 'foo')
def test_add_directory_and_load_json(base_uri, setup_tmpdir): tmpdir_path, subdir_name, jsonfile_name = setup_tmpdir Catalogue.add_directory(URI(base_uri), pathlib.Path(tmpdir_path)) json_doc = Catalogue.load_json( URI(f'{base_uri}{subdir_name}/{jsonfile_name}')) assert json_doc == json_example # incorrect base URI with pytest.raises(CatalogueError): Catalogue.load_json( URI(f'http://example.net/{subdir_name}/{jsonfile_name}')) # incorrect file name with pytest.raises(CatalogueError): Catalogue.load_json(URI(f'{base_uri}{subdir_name}/baz'))
def test_load_json_invalid_uri(uri): with pytest.raises(CatalogueError): Catalogue.load_json(URI(uri))
def test_add_directory_invalid_uri(base_uri, setup_tmpdir): tmpdir_path, subdir_name, jsonfile_name = setup_tmpdir with pytest.raises(CatalogueError): Catalogue.add_directory(URI(base_uri), pathlib.Path(tmpdir_path))
def test_keyword_dependency_resolution_2019_09(value: list): metaschema = Catalogue.get_schema(metaschema_uri_2019_09) kwclasses = { key: kwclass for key in value if (kwclass := metaschema.kwclasses.get(key)) }
import pathlib import pytest from jschon import Catalogue, JSON, JSONSchema, URI, JSONEvaluator from jschon.utils import json_loadf from tests import metaschema_uri_2019_09, metaschema_uri_2020_12 testsuite_dir = pathlib.Path(__file__).parent / 'JSON-Schema-Test-Suite' Catalogue.add_directory( base_uri=URI('http://localhost:1234/'), base_dir=testsuite_dir / 'remotes', ) def pytest_generate_tests(metafunc): argnames = ('metaschema_uri', 'schema', 'data', 'valid') argvalues = [] testids = [] only_version = metafunc.config.getoption("testsuite_version") include_optionals = metafunc.config.getoption("testsuite_optionals") include_formats = metafunc.config.getoption("testsuite_formats") base_dir = testsuite_dir / 'tests' version_dirs = { '2019-09': (metaschema_uri_2019_09, base_dir / 'draft2019-09'), '2020-12': (metaschema_uri_2020_12, base_dir / 'draft2020-12'), }