1+ from pathlib import Path
12from types import SimpleNamespace
23from unittest .mock import patch
34
@@ -20,7 +21,11 @@ def test_vendored_sentry_bundle_sourcemap_exists(self) -> None:
2021 SENTRY_TRACES_SAMPLE_RATE = 0.25 ,
2122 )
2223 def test_build_info_exposes_sentry_browser_bundle_and_config (self ) -> None :
23- context = build_info (SimpleNamespace ())
24+ with patch ("core.context_processors.sentry_sdk.get_traceparent" , return_value = "trace-parent" ), patch (
25+ "core.context_processors.sentry_sdk.get_baggage" ,
26+ return_value = "sentry-sample=value" ,
27+ ):
28+ context = build_info (SimpleNamespace ())
2429
2530 self .assertEqual (
2631 context ["sentry_browser_bundle_src" ],
@@ -36,13 +41,17 @@ def test_build_info_exposes_sentry_browser_bundle_and_config(self) -> None:
3641 "tunnel" : "/_ci/envelope/" ,
3742 },
3843 )
44+ self .assertEqual (context ["sentry_trace" ], "trace-parent" )
45+ self .assertEqual (context ["sentry_baggage" ], "sentry-sample=value" )
3946
4047 @override_settings (SENTRY_DSN = "" )
4148 def test_build_info_omits_sentry_browser_config_without_dsn (self ) -> None :
4249 context = build_info (SimpleNamespace ())
4350
4451 self .assertEqual (context ["sentry_browser_bundle_src" ], "" )
4552 self .assertIsNone (context ["sentry_browser_config" ])
53+ self .assertEqual (context ["sentry_trace" ], "" )
54+ self .assertEqual (context ["sentry_baggage" ], "" )
4655
4756
4857class SentryBrowserTemplateTests (TestCase ):
@@ -71,7 +80,13 @@ def test_profile_page_includes_sentry_browser_bundle_and_tunnel_config(self) ->
7180 },
7281 )
7382
74- with patch ("core.freeipa.user.FreeIPAUser.get" , return_value = freeipa_user ):
83+ with patch ("core.freeipa.user.FreeIPAUser.get" , return_value = freeipa_user ), patch (
84+ "core.context_processors.sentry_sdk.get_traceparent" ,
85+ return_value = "trace-parent" ,
86+ ), patch (
87+ "core.context_processors.sentry_sdk.get_baggage" ,
88+ return_value = "sentry-sample=value" ,
89+ ):
7590 response = self .client .get (f"/user/{ username } /" )
7691
7792 self .assertEqual (response .status_code , 200 )
@@ -80,8 +95,19 @@ def test_profile_page_includes_sentry_browser_bundle_and_tunnel_config(self) ->
8095 'src="/static/core/vendor/sentry/bundle.tracing.min.js"' ,
8196 )
8297 self .assertContains (response , 'id="sentry-browser-config"' )
98+ self .assertContains (response , '<meta name="sentry-trace" content="trace-parent">' , html = True )
99+ self .assertContains (response , '<meta name="baggage" content="sentry-sample=value">' , html = True )
83100 self .assertContains (response , "window.Sentry && window.Sentry.init" )
84101 self .assertContains (response , '"environment": "staging"' )
85102 self .assertContains (response , '"release": "build-123"' )
86103 self .assertContains (response , '"tracesSampleRate": 0.25' )
87- self .assertContains (response , '"tunnel": "/_ci/envelope/"' )
104+ self .assertContains (response , '"tunnel": "/_ci/envelope/"' )
105+
106+
107+ class SentryCaddyConfigTests (SimpleTestCase ):
108+ def test_caddy_configs_forward_sentry_trace_headers (self ) -> None :
109+ repo_root = Path (__file__ ).resolve ().parents [3 ]
110+ for relative_path in ("infra/systemd/Caddyfile" , "infra/systemd/Caddyfile.j2" ):
111+ source = (repo_root / relative_path ).read_text (encoding = "utf-8" )
112+ self .assertIn ("header_up sentry-trace" , source )
113+ self .assertIn ("header_up baggage" , source )
0 commit comments