def test_resolve_invalid_reference(api): op_spec = { 'operationId': 'fakeapi.hello.post_greeting', 'parameters': [{'$ref': '/parameters/fail'}] } with pytest.raises(RefResolutionError) as exc_info: resolve_refs(op_spec, { "parameters": PARAMETER_DEFINITIONS }) exception = exc_info.value assert "parameters/fail" in str(exception)
def test_resolve_invalid_reference(api): op_spec = { 'operationId': 'fakeapi.hello.post_greeting', 'parameters': [{ '$ref': '/parameters/fail' }] } with pytest.raises(RefResolutionError) as exc_info: resolve_refs(op_spec, {"parameters": PARAMETER_DEFINITIONS}) exception = exc_info.value assert "parameters/fail" in str(exception)
def test_non_existent_reference(api): op_spec = { 'parameters': [{ 'in': 'body', 'name': 'new_stack', 'required': True, 'schema': {'$ref': '#/definitions/new_stack'} }] } with pytest.raises(RefResolutionError) as exc_info: # type: py.code.ExceptionInfo resolve_refs(op_spec, {}) exception = exc_info.value assert "definitions/new_stack" in str(exception)
def test_invalid_reference(api): op_spec = { 'parameters': [{ 'in': 'body', 'name': 'new_stack', 'required': True, 'schema': {'$ref': '#/notdefinitions/new_stack'} }] } with pytest.raises(RefResolutionError) as exc_info: # type: py.code.ExceptionInfo resolve_refs(op_spec, { "definitions": DEFINITIONS, "parameters": PARAMETER_DEFINITIONS }) exception = exc_info.value assert "notdefinitions/new_stack" in str(exception)
def make_operation(op, definitions=True, parameters=True): """ note the wrapper because definitions namespace and operation namespace collide """ new_op = {"wrapper": copy.deepcopy(op)} if definitions: new_op.update({"definitions": DEFINITIONS}) if parameters: new_op.update({"parameters": PARAMETER_DEFINITIONS}) return resolve_refs(new_op)["wrapper"]
def test_resolve_web_reference(api): op_spec = { 'parameters': [{ '$ref': 'https://reallyfake.asd/parameters.json' }] } store = {"https://reallyfake.asd/parameters.json": {"name": "test"}} spec = resolve_refs(op_spec, store=store) assert spec["parameters"][0]["name"] == "test"
def test_resolve_web_reference(api): op_spec = { 'parameters': [{'$ref': 'https://reallyfake.asd/parameters.json'}] } store = { "https://reallyfake.asd/parameters.json": {"name": "test"} } spec = resolve_refs(op_spec, store=store) assert spec["parameters"][0]["name"] == "test"
def __init__(self, raw_spec): # Disable validation self._raw_spec = copy.deepcopy(raw_spec) self._set_defaults(raw_spec) #self._validate_spec(raw_spec) self._spec = resolve_refs(raw_spec)