|
31 | 31 | from starlette.middleware.authentication import AuthenticationMiddleware |
32 | 32 | from starlette.middleware.trustedhost import TrustedHostMiddleware |
33 | 33 | from starlette.testclient import TestClient |
34 | | - |
35 | 34 | from tests.integrations.conftest import parametrize_test_configurable_status_codes |
36 | 35 |
|
37 | 36 |
|
@@ -238,6 +237,12 @@ async def do_stuff(message): |
238 | 237 | await self.app(scope, receive, do_stuff) |
239 | 238 |
|
240 | 239 |
|
| 240 | +class SampleMiddlewareWithArgs(Middleware): |
| 241 | + def __init__(self, app, bla=None): |
| 242 | + self.app = app |
| 243 | + self.bla = bla |
| 244 | + |
| 245 | + |
241 | 246 | class SampleReceiveSendMiddleware: |
242 | 247 | def __init__(self, app): |
243 | 248 | self.app = app |
@@ -862,6 +867,22 @@ def test_middleware_partial_receive_send(sentry_init, capture_events): |
862 | 867 | idx += 1 |
863 | 868 |
|
864 | 869 |
|
| 870 | +@pytest.mark.skipif( |
| 871 | + STARLETTE_VERSION < (0, 35), |
| 872 | + reason="Positional args for middleware have been introduced in Starlette >= 0.35", |
| 873 | +) |
| 874 | +def test_middleware_positional_args(sentry_init): |
| 875 | + sentry_init( |
| 876 | + traces_sample_rate=1.0, |
| 877 | + integrations=[StarletteIntegration()], |
| 878 | + ) |
| 879 | + _ = starlette_app_factory(middleware=[Middleware(SampleMiddlewareWithArgs, "bla")]) |
| 880 | + |
| 881 | + # Only creating the App with an Middleware with args |
| 882 | + # should not raise an error |
| 883 | + # So as long as test passes, we are good |
| 884 | + |
| 885 | + |
865 | 886 | def test_legacy_setup( |
866 | 887 | sentry_init, |
867 | 888 | capture_events, |
|
0 commit comments