From 0435417f437ae196fc97b57f0df4e771f0316f40 Mon Sep 17 00:00:00 2001 From: Heatherm Huang Date: Wed, 1 Jul 2026 20:31:32 +0800 Subject: [PATCH] fix: enable grok media generation groups --- .../service/openai_gateway_grok_test.go | 19 +++++++++++++++++++ ...58_enable_grok_media_generation_groups.sql | 7 +++++++ ...tity_payment_migrations_regression_test.go | 11 +++++++++++ 3 files changed, 37 insertions(+) create mode 100644 backend/migrations/158_enable_grok_media_generation_groups.sql diff --git a/backend/internal/service/openai_gateway_grok_test.go b/backend/internal/service/openai_gateway_grok_test.go index ad088be725..feb2c95abf 100644 --- a/backend/internal/service/openai_gateway_grok_test.go +++ b/backend/internal/service/openai_gateway_grok_test.go @@ -146,6 +146,25 @@ func TestBuildGrokResponsesRequestRejectsUnsafeAccountBaseURL(t *testing.T) { require.Contains(t, err.Error(), "invalid base url") } +func TestGrokMediaGenerationGateCoversImagesAndVideo(t *testing.T) { + tests := []struct { + name string + endpoint GrokMediaEndpoint + want bool + }{ + {name: "image generation", endpoint: GrokMediaEndpointImagesGenerations, want: true}, + {name: "image edit", endpoint: GrokMediaEndpointImagesEdits, want: true}, + {name: "video generation", endpoint: GrokMediaEndpointVideosGenerations, want: true}, + {name: "video status", endpoint: GrokMediaEndpointVideoStatus, want: false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + require.Equal(t, tt.want, tt.endpoint.IsGenerationRequest()) + }) + } +} + func TestExtractGrokMediaModelSupportsJSONAndMultipart(t *testing.T) { require.Equal(t, "grok-imagine", ExtractGrokMediaModel("application/json", []byte(`{"model":"grok-imagine"}`))) diff --git a/backend/migrations/158_enable_grok_media_generation_groups.sql b/backend/migrations/158_enable_grok_media_generation_groups.sql new file mode 100644 index 0000000000..db1fccb6b1 --- /dev/null +++ b/backend/migrations/158_enable_grok_media_generation_groups.sql @@ -0,0 +1,7 @@ +-- PR 3593 added Grok media routes for image generation, image edits, and video generation. +-- Existing Grok groups were created before the image-generation gate knew about +-- the Grok platform, so backfill them onto the same generation capability gate. +UPDATE groups +SET allow_image_generation = true +WHERE platform = 'grok' + AND allow_image_generation = false; diff --git a/backend/migrations/auth_identity_payment_migrations_regression_test.go b/backend/migrations/auth_identity_payment_migrations_regression_test.go index 7f2263e0f8..14dab99160 100644 --- a/backend/migrations/auth_identity_payment_migrations_regression_test.go +++ b/backend/migrations/auth_identity_payment_migrations_regression_test.go @@ -169,6 +169,17 @@ func TestMigration151AddsAccountAutoPauseExpiryPartialIndex(t *testing.T) { require.Contains(t, sql, "expires_at IS NOT NULL") } +func TestMigration158BackfillsGrokMediaGenerationGroups(t *testing.T) { + content, err := FS.ReadFile("158_enable_grok_media_generation_groups.sql") + require.NoError(t, err) + + sql := string(content) + require.Contains(t, sql, "UPDATE groups") + require.Contains(t, sql, "SET allow_image_generation = true") + require.Contains(t, sql, "WHERE platform = 'grok'") + require.Contains(t, sql, "AND allow_image_generation = false") +} + func TestMigration154AddsSparkShadowColumnsAndConstraintsWithoutHotIndexes(t *testing.T) { content, err := FS.ReadFile("154_account_spark_shadow.sql") require.NoError(t, err)