fix: allow composite grok messages routing

This commit is contained in:
Heatherm Huang committed 2026-07-23 09:20:52 +08:00
1 parent 06e7d12640
commit 1d2dfab86d
3 files changed
+32 -1

No files matched your search

@@ -22,6 +22,18 @@ func TestCompositeTargetPlatformAllowedResolvesKnownAllowedModel(t *testing.T) {
require.Equal(t, service.PlatformOpenAI, platform)
}
func TestOpenAICompatibleMessagesTargetAllowsCompositeGrokModel(t *testing.T) {
gin.SetMode(gin.TestMode)
c, _ := gin.CreateTestContext(httptest.NewRecorder())
c.Request = httptest.NewRequest("POST", "/v1/messages", nil)
apiKey := &service.APIKey{Group: &service.Group{Platform: service.PlatformComposite}}
require.True(t, openAICompatibleMessagesTargetAllowed(c, apiKey, "grok-4.3"))
platform, ok := service.ResolvedTargetPlatformFromContext(c.Request.Context())
require.True(t, ok)
require.Equal(t, service.PlatformGrok, platform)
}
func TestCompositeTargetPlatformAllowedRejectsWrongOrUnknownModel(t *testing.T) {
gin.SetMode(gin.TestMode)
@@ -147,6 +147,10 @@ func allowOpenAICompatibleMessagesDispatch(apiKey *service.APIKey) bool {
return apiKey.Group.AllowMessagesDispatch
}
func openAICompatibleMessagesTargetAllowed(c *gin.Context, apiKey *service.APIKey, model string) bool {
return compositeTargetPlatformAllowed(c, apiKey, model, service.PlatformOpenAI, service.PlatformGrok)
}
// NewOpenAIGatewayHandler creates a new OpenAIGatewayHandler
func NewOpenAIGatewayHandler(
gatewayService *service.OpenAIGatewayService,
@@ -873,7 +877,7 @@ func (h *OpenAIGatewayHandler) Messages(c *gin.Context) {
}
reqModel := modelResult.String()
ensureCompositeTargetPlatform(c, apiKey, reqModel)
if !compositeTargetPlatformAllowed(c, apiKey, reqModel, service.PlatformOpenAI) {
if !openAICompatibleMessagesTargetAllowed(c, apiKey, reqModel) {
h.anthropicErrorResponse(c, http.StatusBadRequest, "invalid_request_error", "Model is not supported by this OpenAI-compatible endpoint for composite groups")
return
}
@@ -193,6 +193,21 @@ func TestGatewayRoutesCompositeVideoStatusUsesGrokHandler(t *testing.T) {
}
}
func TestGatewayRoutesCompositeMessagesWithGrokModelUsesOpenAIGateway(t *testing.T) {
router := newGatewayRoutesTestRouter(service.PlatformComposite)
req := httptest.NewRequest(http.MethodPost, "/v1/messages", strings.NewReader(`{"model":"grok-4.3","messages":[{"role":"user","content":"hi"}]}`))
req.Header.Set("Content-Type", "application/json")
w := httptest.NewRecorder()
router.ServeHTTP(w, req)
require.NotEqual(t, http.StatusNotFound, w.Code)
require.NotContains(t, w.Body.String(), "not supported")
require.NotContains(t, w.Body.String(), "OpenAI-compatible endpoint")
require.NotContains(t, w.Body.String(), "composite groups")
}
func TestGatewayRoutesNonGrokVideosAreRejectedAtPlatformGate(t *testing.T) {
router := newGatewayRoutesTestRouter(service.PlatformOpenAI)