@@ -654,6 +654,7 @@ def test_middleware_spans(sentry_init, capture_events, capture_items, span_strea
654654 sentry_init (
655655 traces_sample_rate = 1.0 ,
656656 integrations = [StarletteIntegration (middleware_spans = True )],
657+ auto_enabling_integrations = False , # disable because httpx will enable otherwise, leading to the segment span being an `http.client` sentry.op (the TestClient initiating the request), rather than the more realistic `http.server`.
657658 _experiments = {
658659 "trace_lifecycle" : "stream" if span_streaming else "static" ,
659660 },
@@ -686,19 +687,19 @@ def test_middleware_spans(sentry_init, capture_events, capture_items, span_strea
686687 if span_streaming :
687688 sentry_sdk .flush ()
688689
689- middleware_spans = sorted (
690- [
691- item .payload
692- for item in items
693- if item .payload .get ("attributes" , {})
694- .get ("sentry.op" , "" )
695- .startswith ("middleware.starlette" )
696- ],
697- key = lambda s : s ["start_timestamp" ],
698- )
690+ segment = items .pop ().payload
691+ middleware_spans = [item .payload for item in items ]
692+
693+ # In span-first, the `middleware.starlette.send` ops appear first,
694+ # so the list needs to be reversed for the assertions below
695+ middleware_spans .reverse ()
699696
700697 assert len (middleware_spans ) == len (expected_middleware_spans )
701698
699+ assert segment ["is_segment" ] is True
700+ assert segment ["attributes" ]["sentry.op" ] == "http.server"
701+
702+ idx = 0
702703 for idx , span in enumerate (middleware_spans ):
703704 assert (
704705 span ["attributes" ]["middleware.name" ] == expected_middleware_spans [idx ]
@@ -725,6 +726,7 @@ def test_middleware_spans_disabled(
725726 sentry_init (
726727 traces_sample_rate = 1.0 ,
727728 integrations = [StarletteIntegration (middleware_spans = False )],
729+ auto_enabling_integrations = False , # disable because httpx will enable otherwise, leading to the segment span being an `http.client` sentry.op (the TestClient initiating the request), rather than the more realistic `http.server`.
728730 _experiments = {
729731 "trace_lifecycle" : "stream" if span_streaming else "static" ,
730732 },
@@ -747,14 +749,13 @@ def test_middleware_spans_disabled(
747749 if span_streaming :
748750 sentry_sdk .flush ()
749751
750- middleware_spans = [
751- item .payload
752- for item in items
753- if item .payload .get ("attributes" , {})
754- .get ("sentry.op" , "" )
755- .startswith ("middleware.starlette" )
756- ]
752+ segment = items .pop ().payload
753+ middleware_spans = [item .payload for item in items ]
754+
757755 assert len (middleware_spans ) == 0
756+
757+ assert segment ["is_segment" ] is True
758+ assert segment ["attributes" ]["sentry.op" ] == "http.server"
758759 else :
759760 (_ , transaction_event ) = events
760761 assert len (transaction_event ["spans" ]) == 0
@@ -767,6 +768,7 @@ def test_middleware_callback_spans(
767768 sentry_init (
768769 traces_sample_rate = 1.0 ,
769770 integrations = [StarletteIntegration (middleware_spans = True )],
771+ auto_enabling_integrations = False , # disable because httpx will enable otherwise, leading to the segment span being an `http.client` sentry.op (the TestClient initiating the request), rather than the more realistic `http.server`.
770772 _experiments = {
771773 "trace_lifecycle" : "stream" if span_streaming else "static" ,
772774 },
@@ -835,18 +837,18 @@ def test_middleware_callback_spans(
835837 if span_streaming :
836838 sentry_sdk .flush ()
837839
838- middleware_spans = sorted (
839- [
840- item .payload
841- for item in items
842- if item .payload .get ("attributes" , {})
843- .get ("sentry.op" , "" )
844- .startswith ("middleware.starlette" )
845- ],
846- key = lambda s : s ["start_timestamp" ],
847- )
840+ segment = items .pop ().payload
841+ middleware_spans = [item .payload for item in items ]
842+
843+ # In span-first, the `middleware.starlette.send` ops appear first,
844+ # so the list needs to be reversed for the assertions below
845+ middleware_spans .reverse ()
848846
849847 assert len (middleware_spans ) == len (expected )
848+
849+ assert segment ["is_segment" ] is True
850+ assert segment ["attributes" ]["sentry.op" ] == "http.server"
851+
850852 for span , exp in zip (middleware_spans , expected ):
851853 assert span ["attributes" ]["sentry.op" ] == exp ["op" ]
852854 assert span ["name" ] == exp ["description" ]
@@ -1066,7 +1068,7 @@ async def _handler(request):
10661068
10671069
10681070@pytest .mark .parametrize ("middleware_spans" , [False , True ])
1069- def test_request_body_data_scrubs_pii_span_streaming (
1071+ def test_request_body_data_does_not_scrub_pii_span_streaming (
10701072 sentry_init , capture_items , middleware_spans
10711073):
10721074 sentry_init (
0 commit comments