@@ -1316,6 +1316,44 @@ mod tests {
13161316 ) ;
13171317 }
13181318
1319+ #[ tokio:: test]
1320+ async fn publisher_request_sends_configured_host_header_override ( ) {
1321+ let mut settings = create_test_settings ( ) ;
1322+ settings. publisher . origin_host_header_override = Some ( "www.example.com" . to_string ( ) ) ;
1323+ let registry =
1324+ IntegrationRegistry :: new ( & settings) . expect ( "should create integration registry" ) ;
1325+ let stub = Arc :: new ( StubHttpClient :: new ( ) ) ;
1326+ stub. push_response ( 200 , b"origin response" . to_vec ( ) ) ;
1327+ let services = build_services_with_http_client (
1328+ Arc :: clone ( & stub) as Arc < dyn crate :: platform:: PlatformHttpClient >
1329+ ) ;
1330+ let req = HttpRequest :: builder ( )
1331+ . method ( Method :: GET )
1332+ . uri ( "https://publisher.example/page" )
1333+ . header ( header:: HOST , "publisher.example" )
1334+ . body ( EdgeBody :: empty ( ) )
1335+ . expect ( "should build request" ) ;
1336+
1337+ let _ = handle_publisher_request ( & settings, & registry, & services, req)
1338+ . await
1339+ . expect ( "should proxy publisher request" ) ;
1340+
1341+ let recorded_headers = stub. recorded_request_headers ( ) ;
1342+ let outbound_headers = recorded_headers
1343+ . first ( )
1344+ . expect ( "should record one outbound request" ) ;
1345+ let outbound_host = outbound_headers
1346+ . iter ( )
1347+ . find ( |( name, _) | name. eq_ignore_ascii_case ( "host" ) )
1348+ . map ( |( _, value) | value. as_str ( ) ) ;
1349+
1350+ assert_eq ! (
1351+ outbound_host,
1352+ Some ( "www.example.com" ) ,
1353+ "should send configured host override to outbound request"
1354+ ) ;
1355+ }
1356+
13191357 #[ test]
13201358 fn stream_publisher_body_preserves_gzip_round_trip ( ) {
13211359 use flate2:: write:: GzEncoder ;
0 commit comments