@@ -772,7 +772,51 @@ func TestRootProxyRejectsMisroutedGatewayCredentials(t *testing.T) {
772772 }
773773 })
774774 }
775+ probe := httptest .NewRequest (http .MethodHead , "/" , nil )
776+ probe .Header .Set ("X-Goog-Api-Key" , "gemini-team" )
777+ probeRec := httptest .NewRecorder ()
778+ handler .ServeHTTP (probeRec , probe )
779+ if probeRec .Code != http .StatusNoContent {
780+ t .Fatalf ("Gemini root probe status = %d body = %s" , probeRec .Code , probeRec .Body .String ())
781+ }
775782 if got := rootRequests .Load (); got != 0 {
776783 t .Fatalf ("misrouted credentials reached root upstream: requests = %d" , got )
777784 }
778785}
786+
787+ func TestConfigurableGatewaysRejectSubrouterManagementPaths (t * testing.T ) {
788+ t .Parallel ()
789+
790+ var requests atomic.Int32
791+ upstream := httptest .NewServer (http .HandlerFunc (func (http.ResponseWriter , * http.Request ) {
792+ requests .Add (1 )
793+ }))
794+ defer upstream .Close ()
795+ upstreamURL , err := url .Parse (upstream .URL + "/proxy" )
796+ if err != nil {
797+ t .Fatal (err )
798+ }
799+ handler := Server {
800+ OpenAIGateway : & APIKeyGatewayConfig {Upstream : upstreamURL , APIKey : "openai-provider" , GatewayToken : "openai-team" },
801+ Gemini : & GeminiConfig {Upstream : upstreamURL , APIKey : "gemini-provider" , GatewayToken : "gemini-team" },
802+ }.Handler ()
803+ tests := []struct {
804+ path string
805+ auth func (http.Header )
806+ }{
807+ {"/openai/_subrouter/drain" , func (h http.Header ) { h .Set ("Authorization" , "Bearer openai-team" ) }},
808+ {"/gemini/_subrouter/transcripts" , func (h http.Header ) { h .Set ("X-Goog-Api-Key" , "gemini-team" ) }},
809+ }
810+ for _ , test := range tests {
811+ req := httptest .NewRequest (http .MethodPost , test .path , nil )
812+ test .auth (req .Header )
813+ rec := httptest .NewRecorder ()
814+ handler .ServeHTTP (rec , req )
815+ if rec .Code != http .StatusForbidden {
816+ t .Fatalf ("%s status = %d body = %s" , test .path , rec .Code , rec .Body .String ())
817+ }
818+ }
819+ if got := requests .Load (); got != 0 {
820+ t .Fatalf ("management requests reached configurable upstream: %d" , got )
821+ }
822+ }
0 commit comments