"""Tests for our JSON util method.""" import os import jsonschema import pytest from marketing import config from marketing.utils import json def test_create_draft_from_model(): """Test creating a draft from a file.""" directory = os.path.dirname(config.MODEL_DEFINITION_PATH) for model in os.listdir(directory): model_name = model.replace('.json', '') draft = json.create_draft_validator_from_model(model_name) assert isinstance(draft, jsonschema.Draft3Validator) jsonschema.Draft3Validator.check_schema(draft.schema) def test_create_draft_from_file(): """Test getting a schema from a file.""" directory = os.path.dirname(config.MODEL_DEFINITION_PATH) for model in os.listdir(directory): model_name = model.replace('.json', '') filename = config.MODEL_DEFINITION_PATH.format(model_name=model_name) draft = json.create_draft_validator_from_file(filename) assert isinstance(draft, jsonschema.Draft3Validator) jsonschema.Draft3Validator.check_schema(draft.schema) def test_get_enum_from_schema(sample_draft_validator): """Test getting an enum from a schema.""" enum = json.get_enum_from_draft(sample_draft_validator, 'attachment') assert enum == ['Y', 'N'] def test_get_nonexistent_enum_from_schema(sample_draft_validator): """Test getting an enum that does not exist on a schema.""" with pytest.raises(KeyError): json.get_enums_from_draft(sample_draft_validator, 'random') def test_get_enums_from_schema(sample_draft_validator): """Test getting a list of enums from a schema.""" enums = json.get_enums_from_draft( sample_draft_validator, 'client', 'scope') assert len(enums) == 2 assert enums[0] == ['oa', 'alw'] assert enums[1] == ['public', 'internal_only'] def test_get_nonexistent_enums_from_schema(sample_draft_validator): """Test getting a list of enums that do not exist on a schema.""" with pytest.raises(KeyError): json.get_enums_from_draft( sample_draft_validator, 'random', 'scope')