From 5fd030a01b0db6eb987957a541e0cb191cb5e87d Mon Sep 17 00:00:00 2001 From: li Date: Fri, 17 Jul 2026 15:29:14 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=20image=20permission?= =?UTF-8?q?=20=E6=B5=8B=E8=AF=95=E9=80=82=E9=85=8D=20explicit=20intent=20?= =?UTF-8?q?=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 被动 namespace 不再触发 403,新增 PassiveNamespaceDoesNotTrigger403 测试和 OpenAI native/image model 的正向用例。 --- .../openai_grok_image_intent_gate_test.go | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/backend/internal/handler/openai_grok_image_intent_gate_test.go b/backend/internal/handler/openai_grok_image_intent_gate_test.go index 3c20160c05..2b9d38501d 100644 --- a/backend/internal/handler/openai_grok_image_intent_gate_test.go +++ b/backend/internal/handler/openai_grok_image_intent_gate_test.go @@ -30,17 +30,11 @@ func TestOpenAIGatewayHandlerResponses_GrokResponsesLiteImageToolDeclarationBypa } func TestOpenAIGatewayHandlerResponses_ImagePermissionHardSignalsStillRejected(t *testing.T) { - passiveNamespace := `{"model":"gpt-5.5","tools":[{"type":"namespace","name":"image_gen","tools":[{"type":"function","name":"imagegen"}]}],"tool_choice":"auto","input":"write code"}` tests := []struct { name string platform string body string }{ - { - name: "OpenAI keeps declaration semantics", - platform: service.PlatformOpenAI, - body: passiveNamespace, - }, { name: "Grok native image_generation declaration", platform: service.PlatformGrok, @@ -51,6 +45,16 @@ func TestOpenAIGatewayHandlerResponses_ImagePermissionHardSignalsStillRejected(t platform: service.PlatformGrok, body: `{"model":"grok-4.5","tools":[{"type":"namespace","name":"image_gen"}],"tool_choice":{"type":"namespace","name":"image_gen"},"input":"draw"}`, }, + { + name: "OpenAI native image_generation tool", + platform: service.PlatformOpenAI, + body: `{"model":"gpt-5.5","tools":[{"type":"image_generation","model":"gpt-image-2"}],"input":"draw a cat"}`, + }, + { + name: "OpenAI image model", + platform: service.PlatformOpenAI, + body: `{"model":"gpt-image-2","input":"draw a cat"}`, + }, } for _, tt := range tests { @@ -63,6 +67,14 @@ func TestOpenAIGatewayHandlerResponses_ImagePermissionHardSignalsStillRejected(t } } +func TestOpenAIGatewayHandlerResponses_PassiveNamespaceDoesNotTrigger403(t *testing.T) { + passiveNamespace := `{"model":"gpt-5.5","tools":[{"type":"namespace","name":"image_gen","tools":[{"type":"function","name":"imagegen"}]}],"tool_choice":"auto","input":"write code"}` + rec := runOpenAIResponsesImagePermissionGateTest(t, service.PlatformOpenAI, passiveNamespace) + + require.NotEqual(t, http.StatusForbidden, rec.Code, + "passive image_gen namespace with tool_choice=auto should not trigger 403 (#4447)") +} + func runOpenAIResponsesImagePermissionGateTest(t *testing.T, platform string, body string) *httptest.ResponseRecorder { t.Helper() gin.SetMode(gin.TestMode)