mirror of
https://github.com/LukeHagar/connexion.git
synced 2025-12-07 12:27:46 +00:00
This PR fixes 'outside of Flask context' errors in our test suite and contains the following changes: - `Connexion.request` is now a Connexion `ASGIRequest` instead of a Flask `request` - All other tests with a Flask dependency have been updated or split Failing tests are down to 11.
238 lines
6.8 KiB
Python
238 lines
6.8 KiB
Python
from connexion import FlaskApp
|
|
from connexion.operations import OpenAPIOperation
|
|
from connexion.resolver import MethodResolver, MethodViewResolver, Resolver
|
|
|
|
from conftest import build_app_from_fixture
|
|
|
|
COMPONENTS = {"parameters": {"myparam": {"in": "path", "schema": {"type": "integer"}}}}
|
|
|
|
|
|
def test_standard_resolve_x_router_controller():
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="endpoint",
|
|
path_parameters=[],
|
|
operation={
|
|
"x-openapi-router-controller": "fakeapi.hello",
|
|
"operationId": "post_greeting",
|
|
},
|
|
components=COMPONENTS,
|
|
resolver=Resolver(),
|
|
)
|
|
assert operation.operation_id == "fakeapi.hello.post_greeting"
|
|
|
|
|
|
def test_methodview_resolve_operation_id(method_view_resolver):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="endpoint",
|
|
path_parameters=[],
|
|
operation={
|
|
"operationId": "fakeapi.hello.post_greeting",
|
|
},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.hello.post_greeting"
|
|
|
|
|
|
def test_methodview_resolve_x_router_controller_with_operation_id(method_view_resolver):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="endpoint",
|
|
path_parameters=[],
|
|
operation={
|
|
"x-openapi-router-controller": "fakeapi.PetsView",
|
|
"operationId": "post_greeting",
|
|
},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.post_greeting"
|
|
|
|
|
|
def test_methodview_resolve_x_router_controller_without_operation_id(
|
|
method_view_resolver,
|
|
):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="/hello/{id}",
|
|
path_parameters=[],
|
|
operation={"x-openapi-router-controller": "fakeapi.pets"},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.get"
|
|
|
|
|
|
def test_methodview_resolve_with_default_module_name(method_view_resolver):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="/pets/{id}",
|
|
path_parameters=[],
|
|
operation={},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.get"
|
|
|
|
|
|
def test_methodview_resolve_with_default_module_name_lowercase_verb(
|
|
method_view_resolver,
|
|
):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="get",
|
|
path="/pets/{id}",
|
|
path_parameters=[],
|
|
operation={},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.get"
|
|
|
|
|
|
def test_methodview_resolve_with_default_module_name_will_translate_dashes_in_resource_name(
|
|
method_view_resolver,
|
|
):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="/pets",
|
|
path_parameters=[],
|
|
operation={},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.search"
|
|
|
|
|
|
def test_methodview_resolve_with_default_module_name_can_resolve_api_root(
|
|
method_view_resolver,
|
|
):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="/",
|
|
path_parameters=[],
|
|
operation={},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver(
|
|
"fakeapi.pets",
|
|
),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.get"
|
|
|
|
|
|
def test_methodview_resolve_with_default_module_name_will_resolve_resource_root_get_as_search(
|
|
method_view_resolver,
|
|
):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="/pets",
|
|
path_parameters=[],
|
|
operation={},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.search"
|
|
|
|
|
|
def test_methodview_resolve_with_default_module_name_and_x_router_controller_will_resolve_resource_root_get_as_search(
|
|
method_view_resolver,
|
|
):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="/hello",
|
|
path_parameters=[],
|
|
operation={
|
|
"x-openapi-router-controller": "fakeapi.pets",
|
|
},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.search"
|
|
|
|
|
|
def test_methodview_resolve_with_default_module_name_will_resolve_resource_root_as_configured(
|
|
method_view_resolver,
|
|
):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="GET",
|
|
path="/pets",
|
|
path_parameters=[],
|
|
operation={},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi", "api_list"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.api_list"
|
|
|
|
|
|
def test_methodview_resolve_with_default_module_name_will_resolve_resource_root_post_as_post(
|
|
method_view_resolver,
|
|
):
|
|
operation = OpenAPIOperation(
|
|
api=None,
|
|
method="POST",
|
|
path="/pets",
|
|
path_parameters=[],
|
|
operation={},
|
|
components=COMPONENTS,
|
|
resolver=method_view_resolver("fakeapi"),
|
|
)
|
|
assert operation.operation_id == "fakeapi.PetsView.post"
|
|
|
|
|
|
def test_method_view_resolver_integration(spec):
|
|
method_view_app = build_app_from_fixture(
|
|
"method_view",
|
|
app_class=FlaskApp,
|
|
spec_file=spec,
|
|
resolver=MethodViewResolver("fakeapi.example_method_view"),
|
|
)
|
|
|
|
client = method_view_app.test_client()
|
|
|
|
r = client.get("/v1.0/pets")
|
|
assert r.json() == [{"name": "get"}]
|
|
|
|
r = client.get("/v1.0/pets/1")
|
|
assert r.json() == {"name": "get", "petId": 1}
|
|
|
|
r = client.post("/v1.0/pets", json={"name": "Musti"})
|
|
assert r.json() == {"name": "post", "body": {"name": "Musti"}}
|
|
|
|
r = client.put("/v1.0/pets/1", json={"name": "Igor"})
|
|
assert r.json() == {"name": "put", "petId": 1, "body": {"name": "Igor"}}
|
|
|
|
|
|
def test_method_resolver_integration(spec, app_class):
|
|
method_view_app = build_app_from_fixture(
|
|
"method_view",
|
|
app_class=app_class,
|
|
spec_file=spec,
|
|
resolver=MethodResolver("fakeapi.example_method_class"),
|
|
)
|
|
|
|
client = method_view_app.test_client()
|
|
|
|
r = client.get("/v1.0/pets")
|
|
assert r.json() == [{"name": "search"}]
|
|
|
|
r = client.get("/v1.0/pets/1")
|
|
assert r.json() == {"name": "get", "petId": 1}
|
|
|
|
r = client.post("/v1.0/pets", json={"name": "Musti"})
|
|
assert r.json() == {"name": "post", "body": {"name": "Musti"}}
|
|
|
|
r = client.put("/v1.0/pets/1", json={"name": "Igor"})
|
|
assert r.json() == {"name": "put", "petId": 1, "body": {"name": "Igor"}}
|