package service import ( "testing" "github.com/Wei-Shaw/sub2api/internal/pkg/apicompat" "github.com/stretchr/testify/require" "github.com/tidwall/gjson" ) func TestNormalizeResponsesRequestServiceTier(t *testing.T) { t.Parallel() req := &apicompat.ResponsesRequest{ServiceTier: " fast "} normalizeResponsesRequestServiceTier(req) require.Equal(t, "priority", req.ServiceTier) req.ServiceTier = "flex" normalizeResponsesRequestServiceTier(req) require.Equal(t, "flex", req.ServiceTier) // OpenAI 官方合法 tier 应被透传保留。 req.ServiceTier = "auto" normalizeResponsesRequestServiceTier(req) require.Equal(t, "auto", req.ServiceTier) req.ServiceTier = "default" normalizeResponsesRequestServiceTier(req) require.Equal(t, "default", req.ServiceTier) req.ServiceTier = "scale" normalizeResponsesRequestServiceTier(req) require.Equal(t, "scale", req.ServiceTier) // 真未知值仍被剥离。 req.ServiceTier = "turbo" normalizeResponsesRequestServiceTier(req) require.Empty(t, req.ServiceTier) } func TestNormalizeResponsesBodyServiceTier(t *testing.T) { t.Parallel() body, tier, err := normalizeResponsesBodyServiceTier([]byte(`{"model":"gpt-5.1","service_tier":"fast"}`)) require.NoError(t, err) require.Equal(t, "priority", tier) require.Equal(t, "priority", gjson.GetBytes(body, "service_tier").String()) body, tier, err = normalizeResponsesBodyServiceTier([]byte(`{"model":"gpt-5.1","service_tier":"flex"}`)) require.NoError(t, err) require.Equal(t, "flex", tier) require.Equal(t, "flex", gjson.GetBytes(body, "service_tier").String()) // OpenAI 官方 tier 直接保留在 body 中(透传上游)。 body, tier, err = normalizeResponsesBodyServiceTier([]byte(`{"model":"gpt-5.1","service_tier":"auto"}`)) require.NoError(t, err) require.Equal(t, "auto", tier) require.Equal(t, "auto", gjson.GetBytes(body, "service_tier").String()) body, tier, err = normalizeResponsesBodyServiceTier([]byte(`{"model":"gpt-5.1","service_tier":"default"}`)) require.NoError(t, err) require.Equal(t, "default", tier) require.Equal(t, "default", gjson.GetBytes(body, "service_tier").String()) body, tier, err = normalizeResponsesBodyServiceTier([]byte(`{"model":"gpt-5.1","service_tier":"scale"}`)) require.NoError(t, err) require.Equal(t, "scale", tier) require.Equal(t, "scale", gjson.GetBytes(body, "service_tier").String()) // 真未知值才会被删除。 body, tier, err = normalizeResponsesBodyServiceTier([]byte(`{"model":"gpt-5.1","service_tier":"turbo"}`)) require.NoError(t, err) require.Empty(t, tier) require.False(t, gjson.GetBytes(body, "service_tier").Exists()) }