Files
connexion/tests/test_mock3.py
Robbe Sneyders 4f6ddfb0a0 Add jsonifier as argument to app / api (#1656)
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.
2023-03-02 22:00:47 +01:00

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)