mirror of
https://github.com/LukeHagar/connexion.git
synced 2025-12-06 04:19:26 +00:00
This PR adds a `jsonifier` argument to the app and api to align it with other customization options. We also no longer pass it via the operation object, which brings us closer to operations as data class only.
137 lines
3.5 KiB
Python
137 lines
3.5 KiB
Python
from connexion.mock import MockResolver
|
|
from connexion.operations import OpenAPIOperation
|
|
|
|
|
|
def test_mock_resolver_default():
|
|
resolver = MockResolver(mock_all=True)
|
|
|
|
responses = {
|
|
"default": {
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {"super_cool_example": {"value": {"foo": "bar"}}}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
operation = OpenAPIOperation(
|
|
method="GET",
|
|
path="endpoint",
|
|
path_parameters=[],
|
|
operation={"responses": responses},
|
|
resolver=resolver,
|
|
)
|
|
assert operation.operation_id == "mock-1"
|
|
|
|
response, status_code = resolver.mock_operation(operation)
|
|
assert status_code == 200
|
|
assert response == {"foo": "bar"}
|
|
|
|
|
|
def test_mock_resolver_numeric():
|
|
resolver = MockResolver(mock_all=True)
|
|
|
|
responses = {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {"super_cool_example": {"value": {"foo": "bar"}}}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
operation = OpenAPIOperation(
|
|
method="GET",
|
|
path="endpoint",
|
|
path_parameters=[],
|
|
operation={"responses": responses},
|
|
resolver=resolver,
|
|
)
|
|
assert operation.operation_id == "mock-1"
|
|
|
|
response, status_code = resolver.mock_operation(operation)
|
|
assert status_code == 200
|
|
assert response == {"foo": "bar"}
|
|
|
|
|
|
def test_mock_resolver_inline_schema_example():
|
|
resolver = MockResolver(mock_all=True)
|
|
|
|
responses = {
|
|
"default": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {"foo": {"schema": {"type": "string"}}},
|
|
},
|
|
"example": {"foo": "bar"},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
operation = OpenAPIOperation(
|
|
method="GET",
|
|
path="endpoint",
|
|
path_parameters=[],
|
|
operation={"responses": responses},
|
|
resolver=resolver,
|
|
)
|
|
assert operation.operation_id == "mock-1"
|
|
|
|
response, status_code = resolver.mock_operation(operation)
|
|
assert status_code == 200
|
|
assert response == {"foo": "bar"}
|
|
|
|
|
|
def test_mock_resolver_no_examples():
|
|
resolver = MockResolver(mock_all=True)
|
|
|
|
responses = {"418": {}}
|
|
|
|
operation = OpenAPIOperation(
|
|
method="GET",
|
|
path="endpoint",
|
|
path_parameters=[],
|
|
operation={"responses": responses},
|
|
resolver=resolver,
|
|
)
|
|
assert operation.operation_id == "mock-1"
|
|
|
|
response, status_code = resolver.mock_operation(operation)
|
|
assert status_code == 418
|
|
assert response == "No example response was defined."
|
|
|
|
|
|
def test_mock_resolver_notimplemented():
|
|
resolver = MockResolver(mock_all=False)
|
|
|
|
responses = {"418": {}}
|
|
|
|
# do not mock the existent functions
|
|
operation = OpenAPIOperation(
|
|
method="GET",
|
|
path="endpoint",
|
|
path_parameters=[],
|
|
operation={"operationId": "fakeapi.hello.get"},
|
|
resolver=resolver,
|
|
)
|
|
assert operation.operation_id == "fakeapi.hello.get"
|
|
|
|
# mock only the nonexistent ones
|
|
operation = OpenAPIOperation(
|
|
method="GET",
|
|
path="endpoint",
|
|
path_parameters=[],
|
|
operation={
|
|
"operationId": "fakeapi.hello.nonexistent_function",
|
|
"responses": responses,
|
|
},
|
|
resolver=resolver,
|
|
)
|
|
# check if it is using the mock function
|
|
assert operation._resolution.function() == ("No example response was defined.", 418)
|