@@ -186,7 +186,7 @@ impl ErrorsIntakeConfig {
186
186
} ;
187
187
188
188
// For direct submission, construct the proper intake URL
189
- let url = if settings. direct_submission_enabled && api_key. is_some ( ) {
189
+ let url = if settings. direct_submission_enabled && settings . api_key . is_some ( ) {
190
190
// Check for explicit errors intake URL first
191
191
if let Some ( ref errors_intake_url) = settings. errors_intake_dd_url {
192
192
errors_intake_url. clone ( )
@@ -612,4 +612,40 @@ mod tests {
612
612
std:: env:: remove_var ( "_DD_DIRECT_SUBMISSION_ENABLED" ) ;
613
613
std:: env:: remove_var ( "DD_SITE" ) ;
614
614
}
615
+
616
+ #[ test]
617
+ fn test_errors_intake_config_agent_with_api_key_but_no_direct ( ) {
618
+ let _lock = ENV_TEST_LOCK . lock ( ) . unwrap ( ) ;
619
+
620
+ // Clear all environment variables first to isolate test
621
+ std:: env:: remove_var ( "DD_TRACE_AGENT_URL" ) ;
622
+ std:: env:: remove_var ( "DD_AGENT_HOST" ) ;
623
+ std:: env:: remove_var ( "DD_TRACE_AGENT_PORT" ) ;
624
+ std:: env:: remove_var ( "DD_API_KEY" ) ;
625
+ std:: env:: remove_var ( "_DD_DIRECT_SUBMISSION_ENABLED" ) ;
626
+ std:: env:: remove_var ( "DD_SITE" ) ;
627
+
628
+ // Test: API key is set but direct submission is NOT enabled
629
+ // Should still use agent proxy
630
+ std:: env:: set_var ( "DD_TRACE_AGENT_URL" , "http://localhost:9126" ) ;
631
+ std:: env:: set_var ( "DD_API_KEY" , "test-key" ) ;
632
+ // Note: _DD_DIRECT_SUBMISSION_ENABLED is NOT set (defaults to false)
633
+
634
+ let cfg = ErrorsIntakeConfig :: from_env ( ) ;
635
+ let endpoint = cfg. endpoint ( ) . unwrap ( ) ;
636
+
637
+ // Should use agent URL, not direct submission
638
+ assert_eq ! ( endpoint. url. host( ) , Some ( "localhost" ) ) ;
639
+ assert_eq ! ( endpoint. url. port_u16( ) , Some ( 9126 ) ) ;
640
+
641
+ // Should use agent proxy path, not direct path
642
+ assert_eq ! ( endpoint. url. path( ) , AGENT_ERRORS_INTAKE_URL_PATH ) ;
643
+
644
+ // Should have no API key in endpoint since we're using agent proxy
645
+ assert ! ( endpoint. api_key. is_none( ) ) ;
646
+
647
+ // Clean up test environment
648
+ std:: env:: remove_var ( "DD_TRACE_AGENT_URL" ) ;
649
+ std:: env:: remove_var ( "DD_API_KEY" ) ;
650
+ }
615
651
}
0 commit comments