drf-yasg/tests/conftest.py

72 lines
1.6 KiB
Python

import copy
import json
import os
import pytest
from ruamel import yaml
from drf_swagger import openapi, codecs
from drf_swagger.generators import OpenAPISchemaGenerator
@pytest.fixture
def generator():
return OpenAPISchemaGenerator(
info=openapi.Info(title="Test generator", default_version="v1"),
version="v2",
)
@pytest.fixture
def codec_json():
return codecs.OpenAPICodecJson(['flex', 'ssv'])
@pytest.fixture
def codec_yaml():
return codecs.OpenAPICodecYaml(['ssv', 'flex'])
@pytest.fixture
def swagger(generator):
return generator.get_schema(None, True)
@pytest.fixture
def swagger_dict(generator):
swagger = generator.get_schema(None, True)
json_bytes = codec_json().encode(swagger)
return json.loads(json_bytes.decode('utf-8'))
@pytest.fixture
def validate_schema():
def validate_schema(swagger):
from flex.core import parse as validate_flex
from swagger_spec_validator.validator20 import validate_spec as validate_ssv
validate_flex(swagger)
validate_ssv(swagger)
return validate_schema
@pytest.fixture
def swagger_settings(settings):
swagger_settings = copy.deepcopy(settings.SWAGGER_SETTINGS)
settings.SWAGGER_SETTINGS = swagger_settings
return swagger_settings
@pytest.fixture
def redoc_settings(settings):
redoc_settings = copy.deepcopy(settings.REDOC_SETTINGS)
settings.REDOC_SETTINGS = redoc_settings
return redoc_settings
@pytest.fixture
def reference_schema():
with open(os.path.join(os.path.dirname(__file__), 'reference.yaml')) as reference:
return yaml.safe_load(reference)